diff options
-rw-r--r-- | drivers/video/udlfb.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c index c6584c9f235a..4e133754ba2b 100644 --- a/drivers/video/udlfb.c +++ b/drivers/video/udlfb.c | |||
@@ -49,13 +49,22 @@ static const u32 udlfb_info_flags = FBINFO_DEFAULT | FBINFO_READS_FAST | | |||
49 | FBINFO_HWACCEL_COPYAREA | FBINFO_MISC_ALWAYS_SETPAR; | 49 | FBINFO_HWACCEL_COPYAREA | FBINFO_MISC_ALWAYS_SETPAR; |
50 | 50 | ||
51 | /* | 51 | /* |
52 | * There are many DisplayLink-based products, all with unique PIDs. We are able | 52 | * There are many DisplayLink-based graphics products, all with unique PIDs. |
53 | * to support all volume ones (circa 2009) with a single driver, so we match | 53 | * So we match on DisplayLink's VID + Vendor-Defined Interface Class (0xff) |
54 | * globally on VID. TODO: Probe() needs to detect when we might be running | 54 | * We also require a match on SubClass (0x00) and Protocol (0x00), |
55 | * "future" chips, and bail on those, so a compatible driver can match. | 55 | * which is compatible with all known USB 2.0 era graphics chips and firmware, |
56 | * but allows DisplayLink to increment those for any future incompatible chips | ||
56 | */ | 57 | */ |
57 | static struct usb_device_id id_table[] = { | 58 | static struct usb_device_id id_table[] = { |
58 | {.idVendor = 0x17e9, .match_flags = USB_DEVICE_ID_MATCH_VENDOR,}, | 59 | {.idVendor = 0x17e9, |
60 | .bInterfaceClass = 0xff, | ||
61 | .bInterfaceSubClass = 0x00, | ||
62 | .bInterfaceProtocol = 0x00, | ||
63 | .match_flags = USB_DEVICE_ID_MATCH_VENDOR | | ||
64 | USB_DEVICE_ID_MATCH_INT_CLASS | | ||
65 | USB_DEVICE_ID_MATCH_INT_SUBCLASS | | ||
66 | USB_DEVICE_ID_MATCH_INT_PROTOCOL, | ||
67 | }, | ||
59 | {}, | 68 | {}, |
60 | }; | 69 | }; |
61 | MODULE_DEVICE_TABLE(usb, id_table); | 70 | MODULE_DEVICE_TABLE(usb, id_table); |