[PATCH] USB: move usb core to use class_simple instead of it's own class functions.

From: Greg KH
Date: Wed Mar 09 2005 - 23:07:12 EST


ChangeSet 1.2051, 2005/03/09 12:17:18-08:00, gregkh@xxxxxxx

[PATCH] USB: move usb core to use class_simple instead of it's own class functions.

This is needed if the class code is going to be made easier to use, and it makes the code
smaller and easier to understand.

Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>


drivers/usb/core/file.c | 55 ++++++++++++++++--------------------------------
1 files changed, 19 insertions(+), 36 deletions(-)


diff -Nru a/drivers/usb/core/file.c b/drivers/usb/core/file.c
--- a/drivers/usb/core/file.c 2005-03-09 16:28:31 -08:00
+++ b/drivers/usb/core/file.c 2005-03-09 16:28:31 -08:00
@@ -66,16 +66,7 @@
.open = usb_open,
};

-static void release_usb_class_dev(struct class_device *class_dev)
-{
- dbg("%s - %s", __FUNCTION__, class_dev->class_id);
- kfree(class_dev);
-}
-
-static struct class usb_class = {
- .name = "usb",
- .release = &release_usb_class_dev,
-};
+static struct class_simple *usb_class;

int usb_major_init(void)
{
@@ -87,9 +78,9 @@
goto out;
}

- error = class_register(&usb_class);
- if (error) {
- err("class_register failed for usb devices");
+ usb_class = class_simple_create(THIS_MODULE, "usb");
+ if (IS_ERR(usb_class)) {
+ err("class_simple_create failed for usb devices");
unregister_chrdev(USB_MAJOR, "usb");
goto out;
}
@@ -102,7 +93,7 @@

void usb_major_cleanup(void)
{
- class_unregister(&usb_class);
+ class_simple_destroy(usb_class);
devfs_remove("usb");
unregister_chrdev(USB_MAJOR, "usb");
}
@@ -134,7 +125,6 @@
int minor_base = class_driver->minor_base;
int minor = 0;
char name[BUS_ID_SIZE];
- struct class_device *class_dev;
char *temp;

#ifdef CONFIG_USB_DYNAMIC_MINORS
@@ -174,22 +164,18 @@
devfs_mk_cdev(MKDEV(USB_MAJOR, minor), class_driver->mode, name);

/* create a usb class device for this usb interface */
- class_dev = kmalloc(sizeof(*class_dev), GFP_KERNEL);
- if (class_dev) {
- memset(class_dev, 0x00, sizeof(struct class_device));
- class_dev->devt = MKDEV(USB_MAJOR, minor);
- class_dev->class = &usb_class;
- class_dev->dev = &intf->dev;
-
- temp = strrchr(name, '/');
- if (temp && (temp[1] != 0x00))
- ++temp;
- else
- temp = name;
- snprintf(class_dev->class_id, BUS_ID_SIZE, "%s", temp);
- class_set_devdata(class_dev, (void *)(long)intf->minor);
- class_device_register(class_dev);
- intf->class_dev = class_dev;
+ temp = strrchr(name, '/');
+ if (temp && (temp[1] != 0x00))
+ ++temp;
+ else
+ temp = name;
+ intf->class_dev = class_simple_device_add(usb_class, MKDEV(USB_MAJOR, minor), &intf->dev, "%s", temp);
+ if (IS_ERR(intf->class_dev)) {
+ spin_lock (&minor_lock);
+ usb_minors[intf->minor] = NULL;
+ spin_unlock (&minor_lock);
+ devfs_remove (name);
+ retval = PTR_ERR(intf->class_dev);
}
exit:
return retval;
@@ -232,11 +218,8 @@

snprintf(name, BUS_ID_SIZE, class_driver->name, intf->minor - minor_base);
devfs_remove (name);
-
- if (intf->class_dev) {
- class_device_unregister(intf->class_dev);
- intf->class_dev = NULL;
- }
+ class_simple_device_remove(MKDEV(USB_MAJOR, intf->minor));
+ intf->class_dev = NULL;
intf->minor = -1;
}
EXPORT_SYMBOL(usb_deregister_dev);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/