diff options
Diffstat (limited to 'drivers/usb/serial/ftdi_sio.c')
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index d1964a0c4168..0a6e8b474b1f 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -269,6 +269,8 @@ | |||
269 | #define DRIVER_DESC "USB FTDI Serial Converters Driver" | 269 | #define DRIVER_DESC "USB FTDI Serial Converters Driver" |
270 | 270 | ||
271 | static int debug; | 271 | static int debug; |
272 | static __u16 vendor = FTDI_VID; | ||
273 | static __u16 product; | ||
272 | 274 | ||
273 | /* struct ftdi_sio_quirk is used by devices requiring special attention. */ | 275 | /* struct ftdi_sio_quirk is used by devices requiring special attention. */ |
274 | struct ftdi_sio_quirk { | 276 | struct ftdi_sio_quirk { |
@@ -407,6 +409,34 @@ static struct usb_device_id id_table_combined [] = { | |||
407 | { USB_DEVICE(FTDI_VID, FTDI_GUDEADS_E88F_PID) }, | 409 | { USB_DEVICE(FTDI_VID, FTDI_GUDEADS_E88F_PID) }, |
408 | { USB_DEVICE(FTDI_VID, FTDI_ELV_UO100_PID) }, | 410 | { USB_DEVICE(FTDI_VID, FTDI_ELV_UO100_PID) }, |
409 | { USB_DEVICE(FTDI_VID, FTDI_ELV_UM100_PID) }, | 411 | { USB_DEVICE(FTDI_VID, FTDI_ELV_UM100_PID) }, |
412 | { USB_DEVICE(FTDI_VID, FTDI_ELV_UR100_PID) }, | ||
413 | { USB_DEVICE(FTDI_VID, FTDI_ELV_ALC8500_PID) }, | ||
414 | /* | ||
415 | * These will probably use user-space drivers. Uncomment them if | ||
416 | * you need them or use the user-specified vendor/product module | ||
417 | * parameters (see ftdi_sio.h for the numbers). Make a fuss if | ||
418 | * you think the driver should recognize any of them by default. | ||
419 | */ | ||
420 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_CLI7000_PID) }, */ | ||
421 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_PPS7330_PID) }, */ | ||
422 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_TFM100_PID) }, */ | ||
423 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_UDF77_PID) }, */ | ||
424 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_UIO88_PID) }, */ | ||
425 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_UAD8_PID) }, */ | ||
426 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_UDA7_PID) }, */ | ||
427 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_USI2_PID) }, */ | ||
428 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_T1100_PID) }, */ | ||
429 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_PCD200_PID) }, */ | ||
430 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_ULA200_PID) }, */ | ||
431 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1000PC_PID) }, */ | ||
432 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_CSI8_PID) }, */ | ||
433 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_EM1000DL_PID) }, */ | ||
434 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_PCK100_PID) }, */ | ||
435 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_RFP500_PID) }, */ | ||
436 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_FS20SIG_PID) }, */ | ||
437 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_WS300PC_PID) }, */ | ||
438 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_FHZ1300PC_PID) }, */ | ||
439 | /* { USB_DEVICE(FTDI_VID, FTDI_ELV_WS500_PID) }, */ | ||
410 | { USB_DEVICE(FTDI_VID, LINX_SDMUSBQSS_PID) }, | 440 | { USB_DEVICE(FTDI_VID, LINX_SDMUSBQSS_PID) }, |
411 | { USB_DEVICE(FTDI_VID, LINX_MASTERDEVEL2_PID) }, | 441 | { USB_DEVICE(FTDI_VID, LINX_MASTERDEVEL2_PID) }, |
412 | { USB_DEVICE(FTDI_VID, LINX_FUTURE_0_PID) }, | 442 | { USB_DEVICE(FTDI_VID, LINX_FUTURE_0_PID) }, |
@@ -418,6 +448,7 @@ static struct usb_device_id id_table_combined [] = { | |||
418 | { USB_DEVICE(INTREPID_VID, INTREPID_VALUECAN_PID) }, | 448 | { USB_DEVICE(INTREPID_VID, INTREPID_VALUECAN_PID) }, |
419 | { USB_DEVICE(INTREPID_VID, INTREPID_NEOVI_PID) }, | 449 | { USB_DEVICE(INTREPID_VID, INTREPID_NEOVI_PID) }, |
420 | { USB_DEVICE(FALCOM_VID, FALCOM_TWIST_PID) }, | 450 | { USB_DEVICE(FALCOM_VID, FALCOM_TWIST_PID) }, |
451 | { USB_DEVICE(FALCOM_VID, FALCOM_SAMBA_PID) }, | ||
421 | { USB_DEVICE(FTDI_VID, FTDI_SUUNTO_SPORTS_PID) }, | 452 | { USB_DEVICE(FTDI_VID, FTDI_SUUNTO_SPORTS_PID) }, |
422 | { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) }, | 453 | { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) }, |
423 | { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, | 454 | { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, |
@@ -427,12 +458,21 @@ static struct usb_device_id id_table_combined [] = { | |||
427 | { USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_0_PID) }, | 458 | { USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_0_PID) }, |
428 | { USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_1_PID) }, | 459 | { USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_1_PID) }, |
429 | { USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_2_PID) }, | 460 | { USB_DEVICE(FTDI_VID, FTDI_4N_GALAXY_DE_2_PID) }, |
461 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_0_PID) }, | ||
462 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_1_PID) }, | ||
463 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_2_PID) }, | ||
464 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_3_PID) }, | ||
465 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_4_PID) }, | ||
466 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_5_PID) }, | ||
467 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_6_PID) }, | ||
468 | { USB_DEVICE(FTDI_VID, XSENS_CONVERTER_7_PID) }, | ||
430 | { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, | 469 | { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, |
431 | { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, | 470 | { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, |
432 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y6_PID) }, | 471 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y6_PID) }, |
433 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y8_PID) }, | 472 | { USB_DEVICE(FTDI_VID, FTDI_MHAM_Y8_PID) }, |
434 | { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) }, | 473 | { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) }, |
435 | { } /* Terminating entry */ | 474 | { }, /* Optional parameter entry */ |
475 | { } /* Terminating entry */ | ||
436 | }; | 476 | }; |
437 | 477 | ||
438 | MODULE_DEVICE_TABLE (usb, id_table_combined); | 478 | MODULE_DEVICE_TABLE (usb, id_table_combined); |
@@ -2030,6 +2070,15 @@ static int __init ftdi_init (void) | |||
2030 | int retval; | 2070 | int retval; |
2031 | 2071 | ||
2032 | dbg("%s", __FUNCTION__); | 2072 | dbg("%s", __FUNCTION__); |
2073 | if (vendor > 0 && product > 0) { | ||
2074 | /* Add user specified VID/PID to reserved element of table. */ | ||
2075 | int i; | ||
2076 | for (i = 0; id_table_combined[i].idVendor; i++) | ||
2077 | ; | ||
2078 | id_table_combined[i].match_flags = USB_DEVICE_ID_MATCH_DEVICE; | ||
2079 | id_table_combined[i].idVendor = vendor; | ||
2080 | id_table_combined[i].idProduct = product; | ||
2081 | } | ||
2033 | retval = usb_serial_register(&ftdi_sio_device); | 2082 | retval = usb_serial_register(&ftdi_sio_device); |
2034 | if (retval) | 2083 | if (retval) |
2035 | goto failed_sio_register; | 2084 | goto failed_sio_register; |
@@ -2066,4 +2115,9 @@ MODULE_LICENSE("GPL"); | |||
2066 | 2115 | ||
2067 | module_param(debug, bool, S_IRUGO | S_IWUSR); | 2116 | module_param(debug, bool, S_IRUGO | S_IWUSR); |
2068 | MODULE_PARM_DESC(debug, "Debug enabled or not"); | 2117 | MODULE_PARM_DESC(debug, "Debug enabled or not"); |
2118 | module_param(vendor, ushort, 0); | ||
2119 | MODULE_PARM_DESC(vendor, "User specified vendor ID (default=" | ||
2120 | __MODULE_STRING(FTDI_VID)")"); | ||
2121 | module_param(product, ushort, 0); | ||
2122 | MODULE_PARM_DESC(vendor, "User specified product ID"); | ||
2069 | 2123 | ||