Re: [PATCH v2] USB: serial: ftdi_sio: add support for Altera USB Blaster 3
From: Johan Hovold
Date: Tue Mar 11 2025 - 03:58:18 EST
On Fri, Mar 07, 2025 at 11:43:55PM +0800, Boon Khai Ng wrote:
> The Altera USB Blaster 3, available as both a cable and an on-board
> solution, is primarily used for programming and debugging FPGAs.
>
> It interfaces with host software such as Quartus Programmer,
> System Console, SignalTap, and Nios Debugger. The device utilizes
> either an FT2232 or FT4232 chip.
>
> Enabling support for various configurations of the USB Blaster 3
> by including the appropriate VID/PID pairs, allowing it to function
> as a serial device via ftdi_sio. The configurations are determined
> by the hardware design and include:
>
> 1) PID 0x6020, FT2232, 1 JTAG port
> 2) PID 0x6021, FT2232, 2 JTAG ports
> 3) PID 0x6022, FT2232, 1 JTAG port + Port B as UART
> 4) PID 0x6023, FT2232, Cable USB-Blaster 3
> 5) PID 0x6024, FT4232, 1 JTAG port
> 6) PID 0x6025, FT4232, 1 JTAG port + Port C as UART
> 7) PID 0x6026, FT4232, 1 JTAG port + Port C, D as UART
> 8) PID 0x602e, FT4232, 1 JTAG port + Port B, C, D as UART
>
> These configurations allow for flexibility in how the
> USB Blaster 3 is used, depending on the specific needs of the
> hardware design.
>
> Signed-off-by: Boon Khai Ng <boon.khai.ng@xxxxxxxxx>
> ---
Thanks for the update, I've applied this one now.
But for your future contributions, remember to put a short changelog
here under the cut-off (---) line when revising patches.
> drivers/usb/serial/ftdi_sio.c | 14 ++++++++++++++
> drivers/usb/serial/ftdi_sio_ids.h | 13 +++++++++++++
> 2 files changed, 27 insertions(+)
>
> diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
> index e07c5e3eb18c..9b34e23b7091 100644
> --- a/drivers/usb/serial/ftdi_sio.c
> +++ b/drivers/usb/serial/ftdi_sio.c
> @@ -1079,6 +1079,20 @@ static const struct usb_device_id id_table_combined[] = {
> .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
> /* GMC devices */
> { USB_DEVICE(GMC_VID, GMC_Z216C_PID) },
> + /* Altera USB Blaster 3 */
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6022_PID, 1) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6025_PID, 2) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6026_PID, 2) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6026_PID, 3) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6029_PID, 2) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602A_PID, 2) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602A_PID, 3) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602C_PID, 1) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602D_PID, 1) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602D_PID, 2) },
These configurations were not mentioned in the commit message. Are they
also used for embedded designs?
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 1) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 2) },
> + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 3) },
> { } /* Terminating entry */
> };
Johan