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

USB: add support for dev_groups to struct usb_device_driver



Now that the driver core supports dev_groups for individual drivers,
expose that pointer to struct usb_device_driver to make it easier for USB
drivers to also use it.

Yes, users of usb_device_driver are much rare, but there are instances
already that use custom sysfs files, so adding this support will make
things easier for those drivers.  usbip is one example, hubs might be
another one.

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20190806144502.17792-3-gregkh@linuxfoundation.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b71b283e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -892,6 +892,7 @@ int usb_register_device_driver(struct usb_device_driver *new_udriver,
	new_udriver->drvwrap.driver.probe = usb_probe_device;
	new_udriver->drvwrap.driver.remove = usb_unbind_device;
	new_udriver->drvwrap.driver.owner = owner;
	new_udriver->drvwrap.driver.dev_groups = new_udriver->dev_groups;

	retval = driver_register(&new_udriver->drvwrap.driver);

+3 −0
Original line number Diff line number Diff line
@@ -1224,6 +1224,8 @@ struct usb_driver {
 *	module is being unloaded.
 * @suspend: Called when the device is going to be suspended by the system.
 * @resume: Called when the device is being resumed by the system.
 * @dev_groups: Attributes attached to the device that will be created once it
 *	is bound to the driver.
 * @drvwrap: Driver-model core structure wrapper.
 * @supports_autosuspend: if set to 0, the USB core will not allow autosuspend
 *	for devices bound to this driver.
@@ -1238,6 +1240,7 @@ struct usb_device_driver {

	int (*suspend) (struct usb_device *udev, pm_message_t message);
	int (*resume) (struct usb_device *udev, pm_message_t message);
	const struct attribute_group **dev_groups;
	struct usbdrv_wrap drvwrap;
	unsigned int supports_autosuspend:1;
};