view artifacts/om-debug-board-v3 @ 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 9ca4f9fa415b
children
line wrap: on
line source

# Openmoko's custom debug board for their Neo1973 and Neo FreeRunner
# smartphones is an important piece of history; to the best of my
# (Mychaela's) understanding, it was one of the first FT2232x devices
# to formalize the idea of having the kernel create only one ttyUSB
# device for Channel B (which is a standard UART), leaving Channel A
# untouched for userspace applications like OpenOCD.  The feat is
# accomplished by giving the device a custom USB ID (the one used by
# OM for this debug board is 1457:5118), and teaching the ftdi_sio
# driver in the Linux kernel to create only one ttyUSB device for
# such USD IDs.
#
# What follows is a dump of the EEPROM made from the debug board which
# I got with my FreeRunner back in 2011; it appears to have a per-unit
# serial number string.  The FTDI chip is FT2232D and the EEPROM is a 93C56.

00: 0802 1457 5118 0500 3280 0000 0200 1296
10: 30A8 12D8 0056 0000 0000 0000 0000 0000
20: 0000 0000 0000 0000 0000 0000 0000 0000
30: 0000 0000 0000 0000 0000 0000 0000 0000
40: 0000 0000 0000 0000 0000 0000 0000 0000
50: 0000 0000 0000 0000 0000 0000 0000 0000
60: 0000 0000 0000 0000 0000 0000 0000 0000
70: 0000 0000 0000 0000 0000 0000 0000 0000
80: 0000 0000 0000 0000 0000 0000 0000 0000
90: 0000 0000 0000 0312 004F 0070 0065 006E
A0: 004D 006F 006B 006F 0330 0044 0065 0062
B0: 0075 0067 0020 0042 006F 0061 0072 0064
C0: 0020 0066 006F 0072 0020 004E 0065 006F
D0: 0031 0039 0037 0033 0312 0046 0054 0053
E0: 0048 0044 004E 0032 004B 0000 0001 0000
F0: 0000 0000 0000 0000 0000 0000 0000 773F