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)
45 print ("""# Pinouts (PinMux)
46 auto-generated by [[pinouts.py]]
52 print ("\n# Pinouts (Fixed function)\n")
75 fixedpins
= display_fixed(fixedpins
, len(pinouts
))
77 print ("""# Functions (PinMux)
79 auto-generated by [[pinouts.py]]
82 function_names
= {'EINT': 'External Interrupt',
83 'FB': 'MC68k FlexBus',
85 'JTAG0': 'JTAG (same as JTAG1, JTAG_SEL=LOW)',
86 'JTAG1': 'JTAG (same as JTAG0, JTAG_SEL=HIGH)',
87 'LCD': '24-pin RGB/TTL LCD',
88 'RG': 'RGMII Ethernet',
89 'MMC': 'eMMC 1/2/4/8 pin',
90 'PWM': 'PWM (pulse-width modulation)',
94 'SPI0': 'SPI (Serial Peripheral Interface) 0',
95 'SPI1': 'SPI (Serial Peripheral Interface) 1',
96 'QSPI': 'Quad SPI (Serial Peripheral Interface) 1',
100 'UARTQ0': 'UART (TX/RX/CTS/RTS) 0',
101 'UARTQ1': 'UART (TX/RX/CTS/RTS) 1',
102 'UART0': 'UART (TX/RX) 0',
103 'UART1': 'UART (TX/RX) 1',
104 'UART2': 'UART (TX/RX) 2',
105 'ULPI0': 'ULPI (USB Low Pin-count) 0',
106 'ULPI1': 'ULPI (USB Low Pin-count) 1',
107 'ULPI2': 'ULPI (USB Low Pin-count) 2',
110 fns
= display_fns(bankspec
, pinouts
, function_names
)
113 # Scenarios below can be spec'd out as either "find first interface"
114 # by name/number e.g. SPI1, or as "find in bank/mux" which must be
115 # spec'd as "BM:Name" where B is bank (A-F), M is Mux (0-3)
116 # EINT and PWM are grouped together, specially, but may still be spec'd
117 # using "BM:Name". Pins are removed in-order as listed from
118 # lists (interfaces, EINTs, PWMs) from available pins.
120 minitest
= ['ULPI0/8', 'ULPI1', 'MMC', 'SD0', 'UART0',
121 'TWI0', 'SPI0', 'B3:SD1', ]
122 minitest_eint
= ['EINT_0', 'EINT_1', 'EINT_2', 'EINT_3', 'EINT_4']
123 minitest_pwm
= ['B2:PWM_0']
125 'MMC': 'internal (on Card)',
126 'SD0': 'user-facing: internal (on Card), multiplexed with JTAG1\n'
127 'and UART2, for debug purposes',
132 'B1:LCD/22': '18-bit RGB/TTL LCD',
133 'ULPI0/8': 'user-facing: internal (on Card), USB-OTG ULPI PHY',
134 'ULPI1': 'dual USB2 Host ULPI PHY'
137 unused_pins
= check_functions("MiniTest", bankspec
, fns
, pinouts
,
138 minitest
, minitest_eint
, minitest_pwm
,
142 print ("""# 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/>
156 return pinouts
, bankspec
, pinbanks
, fixedpins