FreeCalypso > hg > fc-usbser-tools
changeset 3:434806360d91
eeproms: subset import from freecalypso-hwlab
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 03 Sep 2023 18:24:27 +0000 |
parents | 17fdd0ba7a2e |
children | 2e84619e7422 |
files | eeproms/duart28c eeproms/duart28s eeproms/ft2232-example eeproms/ft232r-example eeproms/icestick eeproms/jtag-unbuf |
diffstat | 6 files changed, 98 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eeproms/duart28c Sun Sep 03 18:24:27 2023 +0000 @@ -0,0 +1,16 @@ +# This EEPROM configuration is one of two possible configs that can be +# programmed into FreeCalypso DUART28 adapters (custom hw made by +# Falconia Partners LLC) based on the FT2232D chip. The present DUART28C +# configuration sets a custom USB ID and is intended to be used together +# with a custom patch to the Linux kernel ftdi_sio driver that applies +# a special quirk when this USB ID is detected. The driver quirk in +# question applies only to FT2232D Channel B and suppresses automatic +# assertion of DTR & RTS when the corresponding ttyUSBx device is opened; +# this driver quirk is required in order to use the DUART28C adapter's +# boot control outputs. + +vid 0x0403 # FTDI +pid 0x7152 # Allocated by FTDI to Falconia Partners LLC + +manuf FreeCalypso +product DUART28C
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eeproms/duart28s Sun Sep 03 18:24:27 2023 +0000 @@ -0,0 +1,18 @@ +# This EEPROM configuration is one of two possible configs that can be +# programmed into FreeCalypso DUART28 adapters (custom hw made by +# Falconia Partners LLC) based on the FT2232D chip. The present DUART28S +# configuration sets the default USB ID that is used by FT2232x adapters +# and is recognized and treated as a generic dual UART device by the +# standard unpatched Linux kernel ftdi_sio driver. This configuration +# is intended for those users who don't need DUART28C boot control outputs +# and who wish to avoid the major inconvenience of applying a custom patch +# to their Linux kernel ftdi_sio driver. Please note that boot control +# outputs CTL1 and CTL2 cannot be used with this EEPROM configuration - +# they will be triggered whenever Channel B ttyUSBx device is opened, +# making them unusable. + +vid 0x0403 # FTDI +pid 0x6010 # FT2232x default, treated as standard dual UART by Linux + +manuf FreeCalypso +product DUART28S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eeproms/ft2232-example Sun Sep 03 18:24:27 2023 +0000 @@ -0,0 +1,4 @@ +vid 0x0403 # FTDI +pid 0x6010 # FT2232x default +manuf Example manuf +product Example product
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eeproms/ft232r-example Sun Sep 03 18:24:27 2023 +0000 @@ -0,0 +1,4 @@ +vid 0x0403 # FTDI +pid 0x6001 # FT232R default +manuf Example manuf +product Example product
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eeproms/icestick Sun Sep 03 18:24:27 2023 +0000 @@ -0,0 +1,26 @@ +# Lattice iCEstick FPGA board features an FT2232H chip, with Channel A wired +# for MPSSE mode (access to SPI flash and FPGA configuration controls) and +# Channel B wired as a UART for user logic implemented in the FPGA. This +# FT2232H subsystem includes a 93C56 EEPROM, but boards are shipped with it +# blank, causing the FT2232H chip to take its default VID:PID. +# +# Having this default VID:PID causes undesirable behavior under Linux: a pair +# of ttyUSB devices is created upon plug-in, but the first of these two then +# disappears when the developer runs iceprog to manipulate FPGA programming, +# creating a gap in ttyUSB device numbers. And even if you are working with a +# stable logic design and not running iceprog, the first of the two created +# ttyUSB devices is still bogus, as that hardware channel is wired for MPSSE +# and not UART. +# +# In Falconian queendom, the solution to this problem is to program the EEPROM +# behind the FT2232H chip with our own image and set the USB ID to a code that +# tells the Linux kernel to create a ttyUSB device only for Channel B - the +# so-called "JTAG quirk". Falconia Partners LLC got a block of 8 PIDs +# officially allocated to us by FTDI, and since 2020-09 the mainline Linux +# kernel recognizes two of them as JTAG quirks. Use one of those two PIDs. + +vid 0x0403 # FTDI +pid 0x7150 # Allocated by FTDI to Falconia, JTAG quirk in Linux + +manuf Lattice +product ICE40HX1K-STICK-EVN
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eeproms/jtag-unbuf Sun Sep 03 18:24:27 2023 +0000 @@ -0,0 +1,30 @@ +# This EEPROM configuration is meant to be programmed into COTS FT2232D +# breakout boards used as unbuffered JTAG adapters. The custom USB VID:PID +# belongs to Falconia Partners LLC; we hereby allow the community to program +# this PID into generic FT2232D boards (not made by Falconia) as long as +# it is used for the present purpose with this full EEPROM configuration. +# +# The purpose of having a custom USB ID is to prevent the Linux kernel +# ftdi_sio driver from treating this FT2232D instance as a dual UART and +# creating a ttyUSB device for Channel A. If you wish to use Channel B +# as a UART (which is still available for that purpose), you will need to use +# a Linux kernel version with commit 6cf87e5edd9944e1d3b6efd966ea401effc304ee +# included, or apply that commit locally if your kernel version does not +# include it. + +vid 0x0403 # FTDI +pid 0x7151 # Allocated by FTDI to Falconia Partners LLC +manuf FTDI +product Unbuffered JTAG adapter + +# We program Channel A to come up in the 245 FIFO mode prior to being +# switched into MPSSE mode by OpenOCD, as opposed to the default 232 UART mode. +# If the FT2232D chip's ADBUS pins are connected directly to the JTAG target +# without a buffer (what we mean by an unbuffered JTAG adapter), the default +# 232 UART mode is NOT safe, as it will produce a fight on the ADBUS2 line +# between the UART RTS output and the target's TDO output. 245 FIFO mode is +# expected to be safer, as all 8 ADBUS lines will be inputs for as long as +# the ACBUS2 line is left unconnected and not driven by anything. + +byte00 0x01 # Channel A: FIFO mode, D2XX driver +byte01 0x08 # Channel B: UART mode, VCP driver