diff options
Diffstat (limited to 'drivers/usb/serial/ftdi_sio.c')
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index a2668d089260..f349a3629d00 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
| @@ -100,6 +100,7 @@ struct ftdi_sio_quirk { | |||
| 100 | static int ftdi_jtag_probe(struct usb_serial *serial); | 100 | static int ftdi_jtag_probe(struct usb_serial *serial); |
| 101 | static int ftdi_mtxorb_hack_setup(struct usb_serial *serial); | 101 | static int ftdi_mtxorb_hack_setup(struct usb_serial *serial); |
| 102 | static int ftdi_NDI_device_setup(struct usb_serial *serial); | 102 | static int ftdi_NDI_device_setup(struct usb_serial *serial); |
| 103 | static int ftdi_stmclite_probe(struct usb_serial *serial); | ||
| 103 | static void ftdi_USB_UIRT_setup(struct ftdi_private *priv); | 104 | static void ftdi_USB_UIRT_setup(struct ftdi_private *priv); |
| 104 | static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv); | 105 | static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv); |
| 105 | 106 | ||
| @@ -123,6 +124,10 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = { | |||
| 123 | .port_probe = ftdi_HE_TIRA1_setup, | 124 | .port_probe = ftdi_HE_TIRA1_setup, |
| 124 | }; | 125 | }; |
| 125 | 126 | ||
| 127 | static struct ftdi_sio_quirk ftdi_stmclite_quirk = { | ||
| 128 | .probe = ftdi_stmclite_probe, | ||
| 129 | }; | ||
| 130 | |||
| 126 | /* | 131 | /* |
| 127 | * The 8U232AM has the same API as the sio except for: | 132 | * The 8U232AM has the same API as the sio except for: |
| 128 | * - it can support MUCH higher baudrates; up to: | 133 | * - it can support MUCH higher baudrates; up to: |
| @@ -616,6 +621,7 @@ static struct usb_device_id id_table_combined [] = { | |||
| 616 | { USB_DEVICE(FTDI_VID, FTDI_OCEANIC_PID) }, | 621 | { USB_DEVICE(FTDI_VID, FTDI_OCEANIC_PID) }, |
| 617 | { USB_DEVICE(TTI_VID, TTI_QL355P_PID) }, | 622 | { USB_DEVICE(TTI_VID, TTI_QL355P_PID) }, |
| 618 | { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) }, | 623 | { USB_DEVICE(FTDI_VID, FTDI_RM_CANVIEW_PID) }, |
| 624 | { USB_DEVICE(ACTON_VID, ACTON_SPECTRAPRO_PID) }, | ||
| 619 | { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) }, | 625 | { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) }, |
| 620 | { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, | 626 | { USB_DEVICE(BANDB_VID, BANDB_USOTL4_PID) }, |
| 621 | { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) }, | 627 | { USB_DEVICE(BANDB_VID, BANDB_USTL4_PID) }, |
| @@ -676,7 +682,17 @@ static struct usb_device_id id_table_combined [] = { | |||
| 676 | { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, | 682 | { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, |
| 677 | { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) }, | 683 | { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) }, |
| 678 | { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) }, | 684 | { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) }, |
| 679 | { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) }, | 685 | { USB_DEVICE(ICOM_VID, ICOM_ID_1_PID) }, |
| 686 | { USB_DEVICE(ICOM_VID, ICOM_OPC_U_UC_PID) }, | ||
| 687 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C1_PID) }, | ||
| 688 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C2_PID) }, | ||
| 689 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP2D_PID) }, | ||
| 690 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP2VT_PID) }, | ||
| 691 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP2VR_PID) }, | ||
| 692 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP4KVT_PID) }, | ||
| 693 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP4KVR_PID) }, | ||
| 694 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP2KVT_PID) }, | ||
| 695 | { USB_DEVICE(ICOM_VID, ICOM_ID_RP2KVR_PID) }, | ||
| 680 | { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) }, | 696 | { USB_DEVICE(FTDI_VID, FTDI_ACG_HFDUAL_PID) }, |
| 681 | { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) }, | 697 | { USB_DEVICE(FTDI_VID, FTDI_YEI_SERVOCENTER31_PID) }, |
| 682 | { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) }, | 698 | { USB_DEVICE(FTDI_VID, FTDI_THORLABS_PID) }, |
| @@ -800,6 +816,8 @@ static struct usb_device_id id_table_combined [] = { | |||
| 800 | { USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) }, | 816 | { USB_DEVICE(FTDI_VID, FTDI_DOTEC_PID) }, |
| 801 | { USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID), | 817 | { USB_DEVICE(QIHARDWARE_VID, MILKYMISTONE_JTAGSERIAL_PID), |
| 802 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, | 818 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, |
| 819 | { USB_DEVICE(ST_VID, ST_STMCLT1030_PID), | ||
| 820 | .driver_info = (kernel_ulong_t)&ftdi_stmclite_quirk }, | ||
| 803 | { }, /* Optional parameter entry */ | 821 | { }, /* Optional parameter entry */ |
| 804 | { } /* Terminating entry */ | 822 | { } /* Terminating entry */ |
| 805 | }; | 823 | }; |
| @@ -1699,6 +1717,25 @@ static int ftdi_jtag_probe(struct usb_serial *serial) | |||
| 1699 | } | 1717 | } |
| 1700 | 1718 | ||
| 1701 | /* | 1719 | /* |
| 1720 | * First and second port on STMCLiteadaptors is reserved for JTAG interface | ||
| 1721 | * and the forth port for pio | ||
| 1722 | */ | ||
| 1723 | static int ftdi_stmclite_probe(struct usb_serial *serial) | ||
| 1724 | { | ||
| 1725 | struct usb_device *udev = serial->dev; | ||
| 1726 | struct usb_interface *interface = serial->interface; | ||
| 1727 | |||
| 1728 | dbg("%s", __func__); | ||
| 1729 | |||
| 1730 | if (interface == udev->actconfig->interface[2]) | ||
| 1731 | return 0; | ||
| 1732 | |||
| 1733 | dev_info(&udev->dev, "Ignoring serial port reserved for JTAG\n"); | ||
| 1734 | |||
| 1735 | return -ENODEV; | ||
| 1736 | } | ||
| 1737 | |||
| 1738 | /* | ||
| 1702 | * The Matrix Orbital VK204-25-USB has an invalid IN endpoint. | 1739 | * The Matrix Orbital VK204-25-USB has an invalid IN endpoint. |
| 1703 | * We have to correct it if we want to read from it. | 1740 | * We have to correct it if we want to read from it. |
| 1704 | */ | 1741 | */ |
