d41a3544552cf82e79d13d037202154d13581a59
[pinmux.git] / src / spec / pinfunctions.py
1 #!/usr/bin/env python
2
3 def i2s(suffix, bank):
4 return ['MCK+', 'BCK+', 'LRCK+', 'DI-', 'DO+']
5
6 def emmc(suffix, bank):
7 emmcpins = ['CMD+', 'CLK+']
8 for i in range(8):
9 emmcpins.append("D%d*" % i)
10 return emmcpins
11
12 def sdmmc(suffix, bank):
13 sdmmcpins = ['CMD+', 'CLK+']
14 for i in range(4):
15 sdmmcpins.append("D%d*" % i)
16 return sdmmcpins
17
18 def spi(suffix, bank):
19 return ['CLK*', 'NSS*', 'MOSI*', 'MISO*']
20
21 def quadspi(suffix, bank):
22 return ['CK*', 'NSS*', 'IO0*', 'IO1*', 'IO2*', 'IO3*']
23
24 def i2c(suffix, bank):
25 return ['SDA*', 'SCL*']
26
27 def jtag(suffix, bank):
28 return ['MS+', 'DI-', 'DO+', 'CK+']
29
30 def uart(suffix, bank):
31 return ['TX+', 'RX-']
32
33 def ulpi(suffix, bank):
34 ulpipins = ['CK+', 'DIR+', 'STP+', 'NXT+']
35 for i in range(8):
36 ulpipins.append('D%d*' % i)
37 return ulpipins
38
39 def uartfull(suffix, bank):
40 return ['TX+', 'RX-', 'CTS-', 'RTS+']
41
42 def rgbttl(suffix, bank):
43 ttlpins = ['CK+', 'DE+', 'HS+', 'VS+']
44 for i in range(24):
45 ttlpins.append("D%d+" % i)
46 return ttlpins
47
48 def rgmii(suffix, bank):
49 buspins = []
50 for i in range(4):
51 buspins.append("ERXD%d-" % i)
52 for i in range(4):
53 buspins.append("ETXD%d+" % i)
54 buspins += ['ERXCK-', 'ERXERR-', 'ERXDV-',
55 'EMDC+', 'EMDIO*',
56 'ETXEN+', 'ETXCK+', 'ECRS-',
57 'ECOL+', 'ETXERR+']
58 return buspins
59
60 def flexbus1(suffix, bank):
61 buspins = []
62 for i in range(8):
63 buspins.append("AD%d*" % i)
64 for i in range(2):
65 buspins.append("CS%d+" % i)
66 buspins += ['ALE', 'OE', 'RW', 'TA', 'CLK+',
67 'A0', 'A1', 'TS', 'TBST',
68 'TSIZ0', 'TSIZ1']
69 for i in range(4):
70 buspins.append("BWE%d" % i)
71 for i in range(2, 6):
72 buspins.append("CS%d+" % i)
73 return buspins
74
75 def flexbus2(suffix, bank):
76 buspins = []
77 for i in range(8, 32):
78 buspins.append("AD%d*" % i)
79 return buspins
80
81 def sdram1(suffix, bank):
82 buspins = []
83 for i in range(16):
84 buspins.append("SDRDQM%d*" % i)
85 for i in range(12):
86 buspins.append("SDRAD%d+" % i)
87 for i in range(8):
88 buspins.append("SDRDQ%d+" % i)
89 for i in range(3):
90 buspins.append("SDRCS%d#+" % i)
91 for i in range(2):
92 buspins.append("SDRDQ%d+" % i)
93 for i in range(2):
94 buspins.append("SDRBA%d+" % i)
95 buspins += ['SDRCKE+', 'SDRRAS#+', 'SDRCAS#+', 'SDRWE#+',
96 'SDRRST+']
97 return buspins
98
99 def sdram2(suffix, bank):
100 buspins = []
101 for i in range(3, 6):
102 buspins.append("SDRCS%d#+" % i)
103 for i in range(8, 32):
104 buspins.append("SDRDQ%d*" % i)
105 return buspins
106
107 def mcu8080(suffix, bank):
108 buspins = []
109 for i in range(8):
110 buspins.append("MCUD%d*" % i)
111 for i in range(8):
112 buspins.append("MCUAD%d+" % (i + 8))
113 for i in range(6):
114 buspins.append("MCUCS%d+" % i)
115 for i in range(2):
116 buspins.append("MCUNRB%d+" % i)
117 buspins += ['MCUCD+', 'MCURD+', 'MCUWR+', 'MCUCLE+', 'MCUALE+',
118 'MCURST+']
119 return buspins
120
121 class RangePin(object):
122 def __init__(self, suffix, prefix=None):
123 self.suffix = suffix
124 self.prefix = prefix or ''
125
126 def __getitem__(self, s):
127 res = []
128 for idx in range(s.start or 0, s.stop or -1, s.step or 1):
129 res.append("%s%d%s" % (self.prefix, idx, self.suffix))
130 return res
131
132 def eint(suffix, bank):
133 return RangePin("*")
134
135 def pwm(suffix, bank):
136 return RangePin("+")
137
138 def gpio(suffix, bank):
139 return ("GPIO%s" % bank, RangePin(prefix=bank, suffix="*"))
140
141
142 # list functions by name here
143
144 pinspec = (('IIS', i2s),
145 ('MMC', emmc),
146 ('SD', sdmmc),
147 ('SPI', spi),
148 ('QSPI', quadspi),
149 ('TWI', i2c),
150 ('JTAG', jtag),
151 ('UART', uart),
152 ('UARTQ', uartfull),
153 ('LCD', rgbttl),
154 ('ULPI', ulpi),
155 ('RG', rgmii),
156 ('FB', flexbus1),
157 ('FB', flexbus2),
158 ('SDR', sdram1),
159 ('SDR', sdram2),
160 ('EINT', eint),
161 ('PWM', pwm),
162 ('GPIO', gpio),
163 )
164