As discussed in the thread "Driver for something that's neither a device nor an interface driver?", here's a patchset that makes it possible for device drivers to extend the generic device driver. An example usage is provided in the shape of a driver that allows changing the charge type of an Apple MFi device to be fast. Bastien Nocera (5): USB: Export generic USB device driver functions USB: Make it possible to "subclass" usb_device_driver USB: Implement usb_device_match_id() USB: Select better matching USB drivers when available USB: Add driver to control USB fast charge for iOS devices drivers/usb/core/driver.c | 66 +++- drivers/usb/core/generic.c | 49 ++- drivers/usb/core/usb.h | 4 + drivers/usb/misc/Kconfig | 10 + drivers/usb/misc/Makefile | 1 + drivers/usb/misc/apple-mfi-fastcharge.c | 500 ++++++++++++++++++++++++ include/linux/usb.h | 5 + 7 files changed, 619 insertions(+), 16 deletions(-) create mode 100644 drivers/usb/misc/apple-mfi-fastcharge.c -- 2.21.0