3 from interfaces
import Pinouts
4 from ifaceprint
import display
, display_fns
, check_functions
5 from ifaceprint
import display_fixed
20 pkeys
= sorted(pinbanks
.keys())
27 pinmerge(pinouts
, gpio(bankspec
, "", ('A', 0), "A", 0, 16, 0))
28 pinmerge(pinouts
, spi(bankspec
, "0", ('A', 0), "A", 1))
29 pinmerge(pinouts
, spi(bankspec
, "1", ('A', 4), "A", 1))
30 pinmerge(pinouts
, uart(bankspec
, "0", ('A', 8), "A", 1))
31 pinmerge(pinouts
, uart(bankspec
, "1", ('A', 10), "A", 1))
32 pinmerge(pinouts
, i2c(bankspec
, "0", ('A', 12), "A", 1))
33 pinmerge(pinouts
, i2c(bankspec
, "1", ('A', 14), "A", 1))
35 pinmerge(pinouts
, pwm(bankspec
, str(i
), ('A', i
), "A", mux
=2))
38 pinmerge(pinouts
, gpio(bankspec
, "", ('B', 0), "B", 0, 16, 0))
39 pinmerge(pinouts
, spi(bankspec
, "2", ('B', 0), "B", 1))
40 pinmerge(pinouts
, uart(bankspec
, "2", ('B', 4), "B", 1))
41 pinmerge(pinouts
, uart(bankspec
, "3", ('B', 6), "B", 1))
42 pinmerge(pinouts
, uart(bankspec
, "4", ('B', 8), "B", 1))
43 pinmerge(pinouts
, i2c(bankspec
, "2", ('B', 10), "B", 1))
44 pinmerge(pinouts
, i2c(bankspec
, "3", ('B', 12), "B", 1))
45 pinmerge(pinouts
, uart(bankspec
, "5", ('B', 14), "B", 1))
47 pinmerge(pinouts
, pwm(bankspec
, str(i
+ 16), ('B', i
), "B", mux
=2))
50 pinmerge(pinouts
, gpio(bankspec
, "", ('C', 0), "C", 0, 16, 0))
51 pinmerge(pinouts
, spi(bankspec
, "1", ('C', 0), "C", 1))
52 pinmerge(pinouts
, spi(bankspec
, "2", ('C', 4), "C", 1))
53 pinmerge(pinouts
, uart(bankspec
, "2", ('C', 8), "C", 1))
54 pinmerge(pinouts
, uart(bankspec
, "3", ('C', 10), "C", 1))
55 pinmerge(pinouts
, i2c(bankspec
, "1", ('C', 12), "C", 1))
56 pinmerge(pinouts
, i2c(bankspec
, "3", ('C', 14), "C", 1))
59 pinmerge(pinouts
, ulpi(bankspec
, "0", ('D', 0), "D", 1))
60 pinmerge(pinouts
, spi(bankspec
, "0", ('D', 12), "D", 1))
63 pinmerge(pinouts
, sdmmc(bankspec
, "0", ('E', 0), "E", 1))
64 pinmerge(pinouts
, jtag(bankspec
, "0", ('E', 6), "E", 1))
65 pinmerge(pinouts
, uart(bankspec
, "0", ('E', 10), "E", 1))
66 pinmerge(pinouts
, i2c(bankspec
, "0", ('E', 12), "E", 1))
67 pinmerge(pinouts
, uart(bankspec
, "1", ('E', 14), "E", 1))
71 'FB_TS': ('FB_ALE', 2, "F"),
72 'FB_CS2': ('FB_BWE2', 2, "F"),
73 'FB_A0': ('FB_BWE2', 3, "F"),
74 'FB_CS3': ('FB_BWE3', 2, "F"),
75 'FB_A1': ('FB_BWE3', 3, "F"),
76 'FB_TBST': ('FB_OE', 2, "F"),
77 'FB_TSIZ0': ('FB_BWE0', 2, "F"),
78 'FB_TSIZ1': ('FB_BWE1', 2, "F"),
80 pinmerge(pinouts
, flexbus1(bankspec
, "", ('F', 0), "F", 1))
81 pinmerge(pinouts
, flexbus2(bankspec
, "", ('F', 30), "F", 1, limit
=8))
85 pinmerge(pinouts
, rgmii(bankspec
, "", ('G', 0), "G", 1))
87 print "# Pinouts (PinMux)"
89 print "auto-generated by [[pinouts.py]]"
96 print "# Pinouts (Fixed function)"
177 display_fixed(fixedpins
, len(pinouts
))
179 print "# Functions (PinMux)"
181 print "auto-generated by [[pinouts.py]]"
184 function_names
= {'EINT': 'External Interrupt',
185 'FB': 'MC68k FlexBus',
188 'JTAG1': 'JTAG (same as JTAG2, JTAG_SEL=LOW)',
189 'JTAG2': 'JTAG (same as JTAG1, JTAG_SEL=HIGH)',
190 'LCD': '24-pin RGB/TTL LCD',
191 'RG': 'RGMII Ethernet',
192 'MMC': 'eMMC 1/2/4/8 pin',
193 'PWM': 'PWM (pulse-width modulation)',
198 'SPI0': 'SPI (Serial Peripheral Interface) 0',
199 'SPI1': 'SPI (Serial Peripheral Interface) 1',
200 'SPI2': 'SPI (Serial Peripheral Interface) 2',
201 'SPI3': 'Quad SPI (Serial Peripheral Interface) 3',
206 'UART0': 'UART (TX/RX) 0',
207 'UART1': 'UART (TX/RX) 1',
208 'UART2': 'UART (TX/RX) 2',
209 'UART3': 'UART (TX/RX) 3',
210 'UART4': 'UART (TX/RX) 4',
211 'UART5': 'UART (TX/RX) 5',
212 'ULPI0': 'ULPI (USB Low Pin-count) 0',
213 'ULPI1': 'ULPI (USB Low Pin-count) 1',
214 'ULPI2': 'ULPI (USB Low Pin-count) 2',
215 'ULPI3': 'ULPI (USB Low Pin-count) 3',
218 fns
= display_fns(bankspec
, pinouts
, function_names
)
221 # Scenarios below can be spec'd out as either "find first interface"
222 # by name/number e.g. SPI1, or as "find in bank/mux" which must be
223 # spec'd as "BM:Name" where B is bank (A-F), M is Mux (0-3)
224 # EINT and PWM are grouped together, specially, but may still be spec'd
225 # using "BM:Name". Pins are removed in-order as listed from
226 # lists (interfaces, EINTs, PWMs) from available pins.
230 robotics
= ['FB', 'RG', 'ULPI0/8',
233 'D1:SPI0', 'E1:TWI0']
236 robotics_pwm
.append('PWM_%d' % i
)
237 robotics_eint
= ['EINT24', 'EINT25', 'EINT26', 'EINT27',
238 'EINT20', 'EINT21', 'EINT22', 'EINT23']
241 unused_pins
= check_functions("Robotics", bankspec
, fns
, pinouts
,
242 robotics
, robotics_eint
, robotics_pwm
)
244 print "# Reference Datasheets"
246 print "datasheets and pinout links"
248 print "* <http://datasheets.chipdb.org/AMD/8018x/80186/amd-80186.pdf>"
249 print "* <http://hands.com/~lkcl/eoma/shenzen/frida/FRD144A2701.pdf>"
250 print "* <http://pinouts.ru/Memory/sdcard_pinout.shtml>"
251 print "* p8 <http://www.onfi.org/~/media/onfi/specs/onfi_2_0_gold.pdf?la=en>"
252 print "* <https://www.heyrick.co.uk/blog/files/datasheets/dm9000aep.pdf>"
253 print "* <http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4393.pdf>"
254 print "* <https://www.nxp.com/docs/en/data-sheet/MCF54418.pdf>"
255 print "* ULPI OTG PHY, ST <http://www.st.com/en/interfaces-and-transceivers/stulpi01a.html>"
256 print "* ULPI OTG PHY, TI TUSB1210 <http://ti.com/product/TUSB1210/>"
258 return pinouts
, bankspec
, fixedpins