diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-09-14 08:19:08 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-14 08:19:08 -0400 |
| commit | 905ec87e93bc9e01b15c60035cd6a50c636cbaef (patch) | |
| tree | 46fd7618d6511611ffc19eb0dd4d7bc6b90a41c2 /drivers/usb/serial/ftdi_sio.c | |
| parent | 1d6ae775d7a948c9575658eb41184fd2e506c0df (diff) | |
| parent | 2f4ba45a75d6383b4a1201169a808ffea416ffa0 (diff) | |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'drivers/usb/serial/ftdi_sio.c')
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index d1964a0c4168..4e434cb10bb1 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); |
| @@ -874,7 +914,7 @@ static void ftdi_determine_type(struct usb_serial_port *port) | |||
| 874 | unsigned interfaces; | 914 | unsigned interfaces; |
| 875 | 915 | ||
| 876 | /* Assume it is not the original SIO device for now. */ | 916 | /* Assume it is not the original SIO device for now. */ |
| 877 | priv->baud_base = 48000000 / 16; | 917 | priv->baud_base = 48000000 / 2; |
| 878 | priv->write_offset = 0; | 918 | priv->write_offset = 0; |
| 879 | 919 | ||
| 880 | version = le16_to_cpu(udev->descriptor.bcdDevice); | 920 | version = le16_to_cpu(udev->descriptor.bcdDevice); |
| @@ -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 | ||
