Skip to content

Commit 4e31a5d

Browse files
committed
USB: serial: ftdi_sio: match on interface number for jtag
Some FTDI devices have the first port reserved for JTAG and have been using a dedicated quirk to prevent binding to it. As can be inferred directly or indirectly from the commit messages, almost all of these devices are dual port devices which means that the more recently added macro for matching on interface number can be used instead (and some such devices do so already). This avoids probing interfaces that will never be bound and cleans up the match table somewhat. Note that the JTAG quirk is kept for quad port devices, which would otherwise require three match entries. Cc: stable@vger.kernel.org Signed-off-by: Johan Hovold <johan@kernel.org>
1 parent 5300280 commit 4e31a5d

1 file changed

Lines changed: 24 additions & 48 deletions

File tree

drivers/usb/serial/ftdi_sio.c

Lines changed: 24 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -628,10 +628,8 @@ static const struct usb_device_id id_table_combined[] = {
628628
{ USB_DEVICE(FTDI_VID, FTDI_IBS_PEDO_PID) },
629629
{ USB_DEVICE(FTDI_VID, FTDI_IBS_PROD_PID) },
630630
{ USB_DEVICE(FTDI_VID, FTDI_TAVIR_STK500_PID) },
631-
{ USB_DEVICE(FTDI_VID, FTDI_TIAO_UMPA_PID),
632-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
633-
{ USB_DEVICE(FTDI_VID, FTDI_NT_ORIONLXM_PID),
634-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
631+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, FTDI_TIAO_UMPA_PID, 1) },
632+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, FTDI_NT_ORIONLXM_PID, 1) },
635633
{ USB_DEVICE(FTDI_VID, FTDI_NT_ORIONLX_PLUS_PID) },
636634
{ USB_DEVICE(FTDI_VID, FTDI_NT_ORION_IO_PID) },
637635
{ USB_DEVICE(FTDI_VID, FTDI_NT_ORIONMX_PID) },
@@ -842,24 +840,17 @@ static const struct usb_device_id id_table_combined[] = {
842840
{ USB_DEVICE(FTDI_VID, FTDI_ELSTER_UNICOM_PID) },
843841
{ USB_DEVICE(FTDI_VID, FTDI_PROPOX_JTAGCABLEII_PID) },
844842
{ USB_DEVICE(FTDI_VID, FTDI_PROPOX_ISPCABLEIII_PID) },
845-
{ USB_DEVICE(FTDI_VID, CYBER_CORTEX_AV_PID),
846-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
843+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, CYBER_CORTEX_AV_PID, 1) },
847844
{ USB_DEVICE_INTERFACE_NUMBER(OLIMEX_VID, OLIMEX_ARM_USB_OCD_PID, 1) },
848845
{ USB_DEVICE_INTERFACE_NUMBER(OLIMEX_VID, OLIMEX_ARM_USB_OCD_H_PID, 1) },
849846
{ USB_DEVICE_INTERFACE_NUMBER(OLIMEX_VID, OLIMEX_ARM_USB_TINY_PID, 1) },
850847
{ USB_DEVICE_INTERFACE_NUMBER(OLIMEX_VID, OLIMEX_ARM_USB_TINY_H_PID, 1) },
851-
{ USB_DEVICE(FIC_VID, FIC_NEO1973_DEBUG_PID),
852-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
853-
{ USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID),
854-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
855-
{ USB_DEVICE(FTDI_VID, LMI_LM3S_DEVEL_BOARD_PID),
856-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
857-
{ USB_DEVICE(FTDI_VID, LMI_LM3S_EVAL_BOARD_PID),
858-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
859-
{ USB_DEVICE(FTDI_VID, LMI_LM3S_ICDI_BOARD_PID),
860-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
861-
{ USB_DEVICE(FTDI_VID, FTDI_TURTELIZER_PID),
862-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
848+
{ USB_DEVICE_INTERFACE_NUMBER(FIC_VID, FIC_NEO1973_DEBUG_PID, 1) },
849+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, FTDI_OOCDLINK_PID, 1) },
850+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, LMI_LM3S_DEVEL_BOARD_PID, 1) },
851+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, LMI_LM3S_EVAL_BOARD_PID, 1) },
852+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, LMI_LM3S_ICDI_BOARD_PID, 1) },
853+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, FTDI_TURTELIZER_PID, 1) },
863854
{ USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) },
864855
{ USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_SCU18) },
865856
{ USB_DEVICE(FTDI_VID, FTDI_REU_TINY_PID) },
@@ -901,17 +892,14 @@ static const struct usb_device_id id_table_combined[] = {
901892
{ USB_DEVICE(ATMEL_VID, STK541_PID) },
902893
{ USB_DEVICE(DE_VID, STB_PID) },
903894
{ USB_DEVICE(DE_VID, WHT_PID) },
904-
{ USB_DEVICE(ADI_VID, ADI_GNICE_PID),
905-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
906-
{ USB_DEVICE(ADI_VID, ADI_GNICEPLUS_PID),
907-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
895+
{ USB_DEVICE_INTERFACE_NUMBER(ADI_VID, ADI_GNICE_PID, 1) },
896+
{ USB_DEVICE_INTERFACE_NUMBER(ADI_VID, ADI_GNICEPLUS_PID, 1) },
908897
{ USB_DEVICE_AND_INTERFACE_INFO(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID,
909898
USB_CLASS_VENDOR_SPEC,
910899
USB_SUBCLASS_VENDOR_SPEC, 0x00) },
911900
{ USB_DEVICE_INTERFACE_NUMBER(ACTEL_VID, MICROSEMI_ARROW_SF2PLUS_BOARD_PID, 2) },
912901
{ USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
913-
{ USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID),
914-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
902+
{ USB_DEVICE_INTERFACE_NUMBER(MARVELL_VID, MARVELL_SHEEVAPLUG_PID, 1) },
915903
{ USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) },
916904
{ USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) },
917905
{ USB_DEVICE(FTDI_VID, PI_C865_PID) },
@@ -934,10 +922,8 @@ static const struct usb_device_id id_table_combined[] = {
934922
{ USB_DEVICE(PI_VID, PI_1016_PID) },
935923
{ USB_DEVICE(KONDO_VID, KONDO_USB_SERIAL_PID) },
936924
{ USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) },
937-
{ USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID),
938-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
939-
{ USB_DEVICE(FTDI_VID, TI_XDS100V2_PID),
940-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
925+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, MARVELL_OPENRD_PID, 1) },
926+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, TI_XDS100V2_PID, 1) },
941927
{ USB_DEVICE(FTDI_VID, HAMEG_HO820_PID) },
942928
{ USB_DEVICE(FTDI_VID, HAMEG_HO720_PID) },
943929
{ USB_DEVICE(FTDI_VID, HAMEG_HO730_PID) },
@@ -946,18 +932,14 @@ static const struct usb_device_id id_table_combined[] = {
946932
{ USB_DEVICE(FTDI_VID, MJSG_SR_RADIO_PID) },
947933
{ USB_DEVICE(FTDI_VID, MJSG_HD_RADIO_PID) },
948934
{ USB_DEVICE(FTDI_VID, MJSG_XM_RADIO_PID) },
949-
{ USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_ST_PID),
950-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
951-
{ USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_SLITE_PID),
952-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
953-
{ USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_SH2_PID),
954-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
935+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, XVERVE_SIGNALYZER_ST_PID, 1) },
936+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, XVERVE_SIGNALYZER_SLITE_PID, 1) },
937+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, XVERVE_SIGNALYZER_SH2_PID, 1) },
955938
{ USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_SH4_PID),
956939
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
957940
{ USB_DEVICE(FTDI_VID, SEGWAY_RMP200_PID) },
958941
{ USB_DEVICE(FTDI_VID, ACCESIO_COM4SM_PID) },
959-
{ USB_DEVICE(IONICS_VID, IONICS_PLUGCOMPUTER_PID),
960-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
942+
{ USB_DEVICE_INTERFACE_NUMBER(IONICS_VID, IONICS_PLUGCOMPUTER_PID, 1) },
961943
{ USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_24_MASTER_WING_PID) },
962944
{ USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_PC_WING_PID) },
963945
{ USB_DEVICE(FTDI_VID, FTDI_CHAMSYS_USB_DMX_PID) },
@@ -972,15 +954,12 @@ static const struct usb_device_id id_table_combined[] = {
972954
{ USB_DEVICE(FTDI_VID, FTDI_CINTERION_MC55I_PID) },
973955
{ USB_DEVICE(FTDI_VID, FTDI_FHE_PID) },
974956
{ USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) },
975-
{ USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID),
976-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
977-
{ USB_DEVICE(ST_VID, ST_STMCLT_2232_PID),
978-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
957+
{ USB_DEVICE_INTERFACE_NUMBER(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID, 1) },
958+
{ USB_DEVICE_INTERFACE_NUMBER(ST_VID, ST_STMCLT_2232_PID, 1) },
979959
{ USB_DEVICE(ST_VID, ST_STMCLT_4232_PID),
980960
.driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk },
981961
{ USB_DEVICE(FTDI_VID, FTDI_RF_R106) },
982-
{ USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID),
983-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
962+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID, 1) },
984963
{ USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) },
985964
/* Crucible Devices */
986965
{ USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) },
@@ -1055,8 +1034,7 @@ static const struct usb_device_id id_table_combined[] = {
10551034
{ USB_DEVICE(ICPDAS_VID, ICPDAS_I7561U_PID) },
10561035
{ USB_DEVICE(ICPDAS_VID, ICPDAS_I7563U_PID) },
10571036
{ USB_DEVICE(WICED_VID, WICED_USB20706V2_PID) },
1058-
{ USB_DEVICE(TI_VID, TI_CC3200_LAUNCHPAD_PID),
1059-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1037+
{ USB_DEVICE_INTERFACE_NUMBER(TI_VID, TI_CC3200_LAUNCHPAD_PID, 1) },
10601038
{ USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_BT_USB_PID) },
10611039
{ USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_WL_USB_PID) },
10621040
{ USB_DEVICE(AIRBUS_DS_VID, AIRBUS_DS_P8GR) },
@@ -1075,10 +1053,8 @@ static const struct usb_device_id id_table_combined[] = {
10751053
{ USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ZED_PID) },
10761054
{ USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ODIN_PID) },
10771055
/* FreeCalypso USB adapters */
1078-
{ USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_BUF_PID),
1079-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1080-
{ USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_UNBUF_PID),
1081-
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1056+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, FTDI_FALCONIA_JTAG_BUF_PID, 1) },
1057+
{ USB_DEVICE_INTERFACE_NUMBER(FTDI_VID, FTDI_FALCONIA_JTAG_UNBUF_PID, 1) },
10821058
/* GMC devices */
10831059
{ USB_DEVICE(GMC_VID, GMC_Z216C_PID) },
10841060
/* Altera USB Blaster 3 */

0 commit comments

Comments
 (0)