Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7bc3d635 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

USB: move usb_device_class class devices to be real devices



This moves the usb class devices that control the usbfs nodes to show up
in the proper place in the larger device tree.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 6e8cf775
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -522,19 +522,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;
};

/*
@@ -1596,19 +1596,19 @@ static int 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);
	if (IS_ERR(dev->class_dev))
		return PTR_ERR(dev->class_dev);
	if (IS_ERR(dev->usbfs_dev))
		return PTR_ERR(dev->usbfs_dev);

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

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,
+1 −1
Original line number Diff line number Diff line
@@ -372,7 +372,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 */

	/*