changeset 165:7a4e8d23ab3a

eeproms/icestick: programming for Lattice Icestick
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 30 Jul 2023 18:10:51 +0000
parents 9336a48746d9
children ef1b8b6c4aee
files eeproms/icestick
diffstat 1 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eeproms/icestick	Sun Jul 30 18:10:51 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