Skip to content

Commit a71ec88

Browse files
Mychaela N. Falconiagregkh
authored andcommitted
USB: serial: ftdi_sio: add support for FreeCalypso JTAG+UART adapters
commit 6cf87e5 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>
1 parent 9f1e27c commit a71ec88

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

drivers/usb/serial/ftdi_sio.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,6 +1037,11 @@ static const struct usb_device_id id_table_combined[] = {
10371037
/* U-Blox devices */
10381038
{ USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ZED_PID) },
10391039
{ USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ODIN_PID) },
1040+
/* FreeCalypso USB adapters */
1041+
{ USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_BUF_PID),
1042+
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
1043+
{ USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_UNBUF_PID),
1044+
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
10401045
{ } /* Terminating entry */
10411046
};
10421047

drivers/usb/serial/ftdi_sio_ids.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@
3939

4040
#define FTDI_LUMEL_PD12_PID 0x6002
4141

42+
/*
43+
* Custom USB adapters made by Falconia Partners LLC
44+
* for FreeCalypso project, ID codes allocated to Falconia by FTDI.
45+
*/
46+
#define FTDI_FALCONIA_JTAG_BUF_PID 0x7150
47+
#define FTDI_FALCONIA_JTAG_UNBUF_PID 0x7151
48+
4249
/* Sienna Serial Interface by Secyourit GmbH */
4350
#define FTDI_SIENNA_PID 0x8348
4451

0 commit comments

Comments
 (0)