FreeCalypso > hg > fc-usbser-tools
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 |
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 |