USB: Select better matching USB drivers when available
authorBastien Nocera <hadess@hadess.net>
Wed, 16 Oct 2019 09:39:31 +0000 (11:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 Feb 2020 19:01:55 +0000 (11:01 -0800)
commit88b7381a939de0fa1f1b1629c56b03dca7077309
tree74bb40156ebfcf5b169cb703c6b79821d26913ca
parentaeebf2b5466506546c47ca68477d4aa8a96377a6
USB: Select better matching USB drivers when available

Now that USB device drivers can reuse code from the generic USB device
driver, we need to make sure that they get selected rather than the
generic driver. Add an id_table and match vfunc to the usb_device_driver
struct, which will get used to select a better matching driver at
->probe time.

This is a similar mechanism to that used in the HID drivers, with the
generic driver being selected unless there's a better matching one found
in the registered drivers (see hid_generic_match() in
drivers/hid/hid-generic.c).

Signed-off-by: Bastien Nocera <hadess@hadess.net>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/20191016093933.693-5-hadess@hadess.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/driver.c
drivers/usb/core/generic.c
include/linux/usb.h