| From 6cf87e5edd9944e1d3b6efd966ea401effc304ee Mon Sep 17 00:00:00 2001 |
| From: "Mychaela N. Falconia" <falcon@freecalypso.org> |
| Date: Wed, 16 Sep 2020 01:56:29 +0000 |
| Subject: USB: serial: ftdi_sio: add support for FreeCalypso JTAG+UART adapters |
| |
| From: Mychaela N. Falconia <falcon@freecalypso.org> |
| |
| commit 6cf87e5edd9944e1d3b6efd966ea401effc304ee upstream. |
| |
| There exist many FT2232-based JTAG+UART adapter designs in which |
| FT2232 Channel A is used for JTAG and Channel B is used for UART. |
| The best way to handle them in Linux is to have the ftdi_sio driver |
| create a ttyUSB device only for Channel B and not for Channel A: |
| a ttyUSB device for Channel A would be bogus and will disappear as |
| soon as the user runs OpenOCD or other applications that access |
| Channel A for JTAG from userspace, causing undesirable noise for |
| users. The ftdi_sio driver already has a dedicated quirk for such |
| JTAG+UART FT2232 adapters, and it requires assigning custom USB IDs |
| to such adapters and adding these IDs to the driver with the |
| ftdi_jtag_quirk applied. |
| |
| Boutique hardware manufacturer Falconia Partners LLC has created a |
| couple of JTAG+UART adapter designs (one buffered, one unbuffered) |
| as part of FreeCalypso project, and this hardware is specifically made |
| to be used with Linux hosts, with the intent that Channel A will be |
| accessed only from userspace via appropriate applications, and that |
| Channel B will be supported by the ftdi_sio kernel driver, presenting |
| a standard ttyUSB device to userspace. Toward this end the hardware |
| manufacturer will be programming FT2232 EEPROMs with custom USB IDs, |
| specifically with the intent that these IDs will be recognized by |
| the ftdi_sio driver with the ftdi_jtag_quirk applied. |
| |
| Signed-off-by: Mychaela N. Falconia <falcon@freecalypso.org> |
| [johan: insert in PID order and drop unused define] |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/serial/ftdi_sio.c | 5 +++++ |
| drivers/usb/serial/ftdi_sio_ids.h | 7 +++++++ |
| 2 files changed, 12 insertions(+) |
| |
| --- a/drivers/usb/serial/ftdi_sio.c |
| +++ b/drivers/usb/serial/ftdi_sio.c |
| @@ -1027,6 +1027,11 @@ static const struct usb_device_id id_tab |
| /* U-Blox devices */ |
| { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ZED_PID) }, |
| { USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ODIN_PID) }, |
| + /* FreeCalypso USB adapters */ |
| + { USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_BUF_PID), |
| + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, |
| + { USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_UNBUF_PID), |
| + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, |
| { } /* Terminating entry */ |
| }; |
| |
| --- a/drivers/usb/serial/ftdi_sio_ids.h |
| +++ b/drivers/usb/serial/ftdi_sio_ids.h |
| @@ -39,6 +39,13 @@ |
| |
| #define FTDI_LUMEL_PD12_PID 0x6002 |
| |
| +/* |
| + * Custom USB adapters made by Falconia Partners LLC |
| + * for FreeCalypso project, ID codes allocated to Falconia by FTDI. |
| + */ |
| +#define FTDI_FALCONIA_JTAG_BUF_PID 0x7150 |
| +#define FTDI_FALCONIA_JTAG_UNBUF_PID 0x7151 |
| + |
| /* Sienna Serial Interface by Secyourit GmbH */ |
| #define FTDI_SIENNA_PID 0x8348 |
| |