Loading drivers/usb/core/file.c +6 −7 Original line number Original line Diff line number Diff line Loading @@ -194,14 +194,13 @@ int usb_register_dev(struct usb_interface *intf, ++temp; ++temp; else else temp = name; temp = name; intf->class_dev = class_device_create(usb_class->class, NULL, intf->usb_dev = device_create(usb_class->class, &intf->dev, MKDEV(USB_MAJOR, minor), MKDEV(USB_MAJOR, minor), "%s", temp); &intf->dev, "%s", temp); if (IS_ERR(intf->usb_dev)) { if (IS_ERR(intf->class_dev)) { spin_lock (&minor_lock); spin_lock (&minor_lock); usb_minors[intf->minor] = NULL; usb_minors[intf->minor] = NULL; spin_unlock (&minor_lock); spin_unlock (&minor_lock); retval = PTR_ERR(intf->class_dev); retval = PTR_ERR(intf->usb_dev); } } exit: exit: return retval; return retval; Loading Loading @@ -242,8 +241,8 @@ void usb_deregister_dev(struct usb_interface *intf, spin_unlock (&minor_lock); spin_unlock (&minor_lock); snprintf(name, BUS_ID_SIZE, class_driver->name, intf->minor - minor_base); snprintf(name, BUS_ID_SIZE, class_driver->name, intf->minor - minor_base); class_device_destroy(usb_class->class, MKDEV(USB_MAJOR, intf->minor)); device_destroy(usb_class->class, MKDEV(USB_MAJOR, intf->minor)); intf->class_dev = NULL; intf->usb_dev = NULL; intf->minor = -1; intf->minor = -1; destroy_usb_class(); destroy_usb_class(); } } Loading include/linux/usb.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -107,7 +107,8 @@ enum usb_interface_condition { * @needs_remote_wakeup: flag set when the driver requires remote-wakeup * @needs_remote_wakeup: flag set when the driver requires remote-wakeup * capability during autosuspend. * capability during autosuspend. * @dev: driver model's view of this device * @dev: driver model's view of this device * @class_dev: driver model's class view of this device. * @usb_dev: if an interface is bound to the USB major, this will point * to the sysfs representation for that device. * @pm_usage_cnt: PM usage counter for this interface; autosuspend is not * @pm_usage_cnt: PM usage counter for this interface; autosuspend is not * allowed unless the counter is 0. * allowed unless the counter is 0. * * Loading Loading @@ -152,7 +153,7 @@ struct usb_interface { unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */ unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */ struct device dev; /* interface specific device info */ struct device dev; /* interface specific device info */ struct class_device *class_dev; struct device *usb_dev; /* pointer to the usb class's device, if any */ int pm_usage_cnt; /* usage counter for autosuspend */ int pm_usage_cnt; /* usage counter for autosuspend */ }; }; #define to_usb_interface(d) container_of(d, struct usb_interface, dev) #define to_usb_interface(d) container_of(d, struct usb_interface, dev) Loading Loading
drivers/usb/core/file.c +6 −7 Original line number Original line Diff line number Diff line Loading @@ -194,14 +194,13 @@ int usb_register_dev(struct usb_interface *intf, ++temp; ++temp; else else temp = name; temp = name; intf->class_dev = class_device_create(usb_class->class, NULL, intf->usb_dev = device_create(usb_class->class, &intf->dev, MKDEV(USB_MAJOR, minor), MKDEV(USB_MAJOR, minor), "%s", temp); &intf->dev, "%s", temp); if (IS_ERR(intf->usb_dev)) { if (IS_ERR(intf->class_dev)) { spin_lock (&minor_lock); spin_lock (&minor_lock); usb_minors[intf->minor] = NULL; usb_minors[intf->minor] = NULL; spin_unlock (&minor_lock); spin_unlock (&minor_lock); retval = PTR_ERR(intf->class_dev); retval = PTR_ERR(intf->usb_dev); } } exit: exit: return retval; return retval; Loading Loading @@ -242,8 +241,8 @@ void usb_deregister_dev(struct usb_interface *intf, spin_unlock (&minor_lock); spin_unlock (&minor_lock); snprintf(name, BUS_ID_SIZE, class_driver->name, intf->minor - minor_base); snprintf(name, BUS_ID_SIZE, class_driver->name, intf->minor - minor_base); class_device_destroy(usb_class->class, MKDEV(USB_MAJOR, intf->minor)); device_destroy(usb_class->class, MKDEV(USB_MAJOR, intf->minor)); intf->class_dev = NULL; intf->usb_dev = NULL; intf->minor = -1; intf->minor = -1; destroy_usb_class(); destroy_usb_class(); } } Loading
include/linux/usb.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -107,7 +107,8 @@ enum usb_interface_condition { * @needs_remote_wakeup: flag set when the driver requires remote-wakeup * @needs_remote_wakeup: flag set when the driver requires remote-wakeup * capability during autosuspend. * capability during autosuspend. * @dev: driver model's view of this device * @dev: driver model's view of this device * @class_dev: driver model's class view of this device. * @usb_dev: if an interface is bound to the USB major, this will point * to the sysfs representation for that device. * @pm_usage_cnt: PM usage counter for this interface; autosuspend is not * @pm_usage_cnt: PM usage counter for this interface; autosuspend is not * allowed unless the counter is 0. * allowed unless the counter is 0. * * Loading Loading @@ -152,7 +153,7 @@ struct usb_interface { unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */ unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */ struct device dev; /* interface specific device info */ struct device dev; /* interface specific device info */ struct class_device *class_dev; struct device *usb_dev; /* pointer to the usb class's device, if any */ int pm_usage_cnt; /* usage counter for autosuspend */ int pm_usage_cnt; /* usage counter for autosuspend */ }; }; #define to_usb_interface(d) container_of(d, struct usb_interface, dev) #define to_usb_interface(d) container_of(d, struct usb_interface, dev) Loading