5820d54cdd983c0e2d3d1f0dcd67055e0b1e2805
3 from spec
.interfaces
import Pinouts
5 from spec
.ifaceprint
import display
, display_fns
, check_functions
6 from spec
.ifaceprint
import display_fixed
14 pkeys
= sorted(pinbanks
.keys())
20 pinouts
= Pinouts(bankspec
)
23 pinouts
.gpio("", ('B', 0), "B", 0, 0, 28)
24 pinouts
.rgbttl("", ('B', 0), "B", 1, limit
=23)
25 pinouts
.spi("0", ('B', 10), "B", 2)
26 pinouts
.quadspi("", ('B', 4), "B", 2)
27 pinouts
.uart("0", ('B', 16), "B", 2)
28 pinouts
.i2c("2", ('B', 18), "B", 2)
29 pinouts
.pwm("", ('B', 21), "B", 2, 0, 3)
30 pinouts
.sdmmc("0", ('B', 22), "B", 3)
31 pinouts
.eint("", ('B', 0), "B", 3, 0, 4)
32 pinouts
.eint("", ('B', 20), "B", 2, 4, 1)
33 pinouts
.eint("", ('B', 23), "B", 1, 5, 1)
34 pinouts
.sdmmc("1", ('B', 4), "B", 3)
35 pinouts
.jtag("1", ('B', 10), "B", 3)
36 pinouts
.uartfull("0", ('B', 14), "B", 3)
37 pinouts
.uartfull("1", ('B', 18), "B", 3)
38 pinouts
.jtag("0", ('B', 24), "B", 2)
39 pinouts
.spi("1", ('B', 24), "B", 1)
40 pinouts
.i2c("0", ('B', 0), "B", 2)
41 pinouts
.uart("1", ('B', 2), "B", 2)
42 pinouts
.uart("2", ('B', 14), "B", 2)
44 of
.write("""# Pinouts (PinMux)
45 auto-generated by [[pinouts.py]]
52 of
.write("\n# Pinouts (Fixed function)\n\n")
75 fixedpins
= display_fixed(of
, fixedpins
, len(pinouts
))
77 of
.write("""# Functions (PinMux)
79 auto-generated by [[pinouts.py]]
83 function_names
= {'EINT': 'External Interrupt',
84 'FB': 'MC68k FlexBus',
86 'JTAG0': 'JTAG (same as JTAG1, JTAG_SEL=LOW)',
87 'JTAG1': 'JTAG (same as JTAG0, JTAG_SEL=HIGH)',
88 'LCD': '24-pin RGB/TTL LCD',
89 'RG': 'RGMII Ethernet',
90 'MMC': 'eMMC 1/2/4/8 pin',
91 'PWM': 'PWM (pulse-width modulation)',
95 'SPI0': 'SPI (Serial Peripheral Interface) 0',
96 'SPI1': 'SPI (Serial Peripheral Interface) 1',
97 'QSPI': 'Quad SPI (Serial Peripheral Interface) 1',
101 'UARTQ0': 'UART (TX/RX/CTS/RTS) 0',
102 'UARTQ1': 'UART (TX/RX/CTS/RTS) 1',
103 'UART0': 'UART (TX/RX) 0',
104 'UART1': 'UART (TX/RX) 1',
105 'UART2': 'UART (TX/RX) 2',
106 'ULPI0': 'ULPI (USB Low Pin-count) 0',
107 'ULPI1': 'ULPI (USB Low Pin-count) 1',
108 'ULPI2': 'ULPI (USB Low Pin-count) 2',
111 fns
= display_fns(of
, bankspec
, pinouts
, function_names
)
114 # Scenarios below can be spec'd out as either "find first interface"
115 # by name/number e.g. SPI1, or as "find in bank/mux" which must be
116 # spec'd as "BM:Name" where B is bank (A-F), M is Mux (0-3)
117 # EINT and PWM are grouped together, specially, but may still be spec'd
118 # using "BM:Name". Pins are removed in-order as listed from
119 # lists (interfaces, EINTs, PWMs) from available pins.
121 minitest
= ['ULPI0/8', 'ULPI1', 'MMC', 'SD0', 'UART0',
122 'TWI0', 'SPI0', 'B3:SD1', ]
123 minitest_eint
= ['EINT_0', 'EINT_1', 'EINT_2', 'EINT_3', 'EINT_4']
124 minitest_pwm
= ['B2:PWM_0']
126 'MMC': 'internal (on Card)',
127 'SD0': 'user-facing: internal (on Card), multiplexed with JTAG1\n'
128 'and UART2, for debug purposes',
133 'B1:LCD/22': '18-bit RGB/TTL LCD',
134 'ULPI0/8': 'user-facing: internal (on Card), USB-OTG ULPI PHY',
135 'ULPI1': 'dual USB2 Host ULPI PHY'
138 unused_pins
= check_functions(of
, "MiniTest", bankspec
, fns
, pinouts
,
139 minitest
, minitest_eint
, minitest_pwm
,
142 of
.write("""# Reference Datasheets
144 datasheets and pinout links
145 * <http://datasheets.chipdb.org/AMD/8018x/80186/amd-80186.pdf>
146 * <http://hands.com/~lkcl/eoma/shenzen/frida/FRD144A2701.pdf>
147 * <http://pinouts.ru/Memory/sdcard_pinout.shtml>
148 * p8 <http://www.onfi.org/~/media/onfi/specs/onfi_2_0_gold.pdf?la=en>
149 * <https://www.heyrick.co.uk/blog/files/datasheets/dm9000aep.pdf>
150 * <http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4393.pdf>
151 * <https://www.nxp.com/docs/en/data-sheet/MCF54418.pdf>
152 * ULPI OTG PHY, ST <http://www.st.com/en/interfaces-and-transceivers/stulpi01a.html>
153 * ULPI OTG PHY, TI TUSB1210 <http://ti.com/product/TUSB1210/>
157 return pinouts
, bankspec
, pinbanks
, fixedpins