Skip to content

Commit

Permalink
[PATCH] USB: move usb_device_class class devices to be real devices
Browse files Browse the repository at this point in the history
This moves the usb class devices that control the usbfs nodes to show up
in the proper place in the larger device tree.

No userspace changes is needed, this is compatible due to the symlinks
generated by the driver core.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Greg Kroah-Hartman committed Jun 21, 2006
1 parent 9bde749 commit c182274
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
20 changes: 10 additions & 10 deletions drivers/usb/core/devio.c
Original file line number Diff line number Diff line change
Expand Up @@ -515,19 +515,19 @@ static int check_ctrlrecip(struct dev_state *ps, unsigned int requesttype, unsig

static struct usb_device *usbdev_lookup_minor(int minor)
{
struct class_device *class_dev;
struct usb_device *dev = NULL;
struct device *device;
struct usb_device *udev = NULL;

down(&usb_device_class->sem);
list_for_each_entry(class_dev, &usb_device_class->children, node) {
if (class_dev->devt == MKDEV(USB_DEVICE_MAJOR, minor)) {
dev = class_dev->class_data;
list_for_each_entry(device, &usb_device_class->devices, node) {
if (device->devt == MKDEV(USB_DEVICE_MAJOR, minor)) {
udev = device->platform_data;
break;
}
}
up(&usb_device_class->sem);

return dev;
return udev;
};

/*
Expand Down Expand Up @@ -1580,16 +1580,16 @@ static void usbdev_add(struct usb_device *dev)
{
int minor = ((dev->bus->busnum-1) * 128) + (dev->devnum-1);

dev->class_dev = class_device_create(usb_device_class, NULL,
MKDEV(USB_DEVICE_MAJOR, minor), &dev->dev,
dev->usbfs_dev = device_create(usb_device_class, &dev->dev,
MKDEV(USB_DEVICE_MAJOR, minor),
"usbdev%d.%d", dev->bus->busnum, dev->devnum);

dev->class_dev->class_data = dev;
dev->usbfs_dev->platform_data = dev;
}

static void usbdev_remove(struct usb_device *dev)
{
class_device_unregister(dev->class_dev);
device_unregister(dev->usbfs_dev);
}

static int usbdev_notify(struct notifier_block *self, unsigned long action,
Expand Down
2 changes: 1 addition & 1 deletion include/linux/usb.h
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ struct usb_device {
char *serial; /* iSerialNumber string, if present */

struct list_head filelist;
struct class_device *class_dev;
struct device *usbfs_dev;
struct dentry *usbfs_dentry; /* usbfs dentry entry for the device */

/*
Expand Down

0 comments on commit c182274

Please sign in to comment.