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