view eeproms/icestick @ 44:5160f6717903

libuwrap: implement function to claim/unbind all interfaces
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 11 Sep 2023 02:27:11 +0000
parents 434806360d91
children d46ea7a3fa0c
line wrap: on
line source

# 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