annotate eeproms/icestick @ 68:5cbde3c80c24

fteeprom-{erase,prog}: detach logic: change to detach by default As it turns out, detaching all ttyUSB interfaces of a multichannel device does not require outside knowledge of how many channels there are, as in our previous -d option design that is being removed here - instead we can read the bNumInterfaces constant from the USB device's config descriptor and thus know how many interfaces there are in total. Based on this discovery, change the design of fteeprom-{erase,prog} as follows: * remove -d option; * flip the default to where we detach all interfaces by default; * add -n option to NOT detach any interfaces.
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 13 Sep 2023 06:37:03 +0000
parents 434806360d91
children d46ea7a3fa0c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 # Lattice iCEstick FPGA board features an FT2232H chip, with Channel A wired
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 # for MPSSE mode (access to SPI flash and FPGA configuration controls) and
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 # Channel B wired as a UART for user logic implemented in the FPGA. This
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 # FT2232H subsystem includes a 93C56 EEPROM, but boards are shipped with it
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 # blank, causing the FT2232H chip to take its default VID:PID.
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 # Having this default VID:PID causes undesirable behavior under Linux: a pair
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 # of ttyUSB devices is created upon plug-in, but the first of these two then
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 # disappears when the developer runs iceprog to manipulate FPGA programming,
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 # creating a gap in ttyUSB device numbers. And even if you are working with a
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 # stable logic design and not running iceprog, the first of the two created
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 # ttyUSB devices is still bogus, as that hardware channel is wired for MPSSE
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 # and not UART.
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 # In Falconian queendom, the solution to this problem is to program the EEPROM
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 # behind the FT2232H chip with our own image and set the USB ID to a code that
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 # tells the Linux kernel to create a ttyUSB device only for Channel B - the
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 # so-called "JTAG quirk". Falconia Partners LLC got a block of 8 PIDs
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 # officially allocated to us by FTDI, and since 2020-09 the mainline Linux
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 # kernel recognizes two of them as JTAG quirks. Use one of those two PIDs.
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 vid 0x0403 # FTDI
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 pid 0x7150 # Allocated by FTDI to Falconia, JTAG quirk in Linux
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 manuf Lattice
434806360d91 eeproms: subset import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 product ICE40HX1K-STICK-EVN