Merge tag 'spdx-5.3-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[sfrench/cifs-2.6.git] / drivers / pinctrl / aspeed / pinctrl-aspeed-g4.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (C) 2016 IBM Corp.
4  */
5 #include <linux/bitops.h>
6 #include <linux/init.h>
7 #include <linux/io.h>
8 #include <linux/kernel.h>
9 #include <linux/mutex.h>
10 #include <linux/of.h>
11 #include <linux/platform_device.h>
12 #include <linux/pinctrl/pinctrl.h>
13 #include <linux/pinctrl/pinmux.h>
14 #include <linux/pinctrl/pinconf.h>
15 #include <linux/pinctrl/pinconf-generic.h>
16 #include <linux/string.h>
17 #include <linux/types.h>
18
19 #include "../core.h"
20 #include "../pinctrl-utils.h"
21 #include "pinmux-aspeed.h"
22 #include "pinctrl-aspeed.h"
23
24 /*
25  * The "Multi-function Pins Mapping and Control" table in the SoC datasheet
26  * references registers by the device/offset mnemonic. The register macros
27  * below are named the same way to ease transcription and verification (as
28  * opposed to naming them e.g. PINMUX_CTRL_[0-9]). Further, signal expressions
29  * reference registers beyond those dedicated to pinmux, such as the system
30  * reset control and MAC clock configuration registers.
31  */
32 #define SCU2C           0x2C /* Misc. Control Register */
33 #define SCU3C           0x3C /* System Reset Control/Status Register */
34 #define SCU48           0x48 /* MAC Interface Clock Delay Setting */
35 #define HW_STRAP1       0x70 /* AST2400 strapping is 33 bits, is split */
36 #define HW_REVISION_ID  0x7C /* Silicon revision ID register */
37 #define SCU80           0x80 /* Multi-function Pin Control #1 */
38 #define SCU84           0x84 /* Multi-function Pin Control #2 */
39 #define SCU88           0x88 /* Multi-function Pin Control #3 */
40 #define SCU8C           0x8C /* Multi-function Pin Control #4 */
41 #define SCU90           0x90 /* Multi-function Pin Control #5 */
42 #define SCU94           0x94 /* Multi-function Pin Control #6 */
43 #define SCUA0           0xA0 /* Multi-function Pin Control #7 */
44 #define SCUA4           0xA4 /* Multi-function Pin Control #8 */
45 #define SCUA8           0xA8 /* Multi-function Pin Control #9 */
46 #define SCUAC           0xAC /* Multi-function Pin Control #10 */
47 #define HW_STRAP2       0xD0 /* Strapping */
48
49 /*
50  * Uses undefined macros for symbol naming and references, eg GPIOA0, MAC1LINK,
51  * TIMER3 etc.
52  *
53  * Pins are defined in GPIO bank order:
54  *
55  * GPIOA0: 0
56  * ...
57  * GPIOA7: 7
58  * GPIOB0: 8
59  * ...
60  * GPIOZ7: 207
61  * GPIOAA0: 208
62  * ...
63  * GPIOAB3: 219
64  *
65  * Not all pins have their signals defined (yet).
66  */
67
68 #define D6 0
69 SSSF_PIN_DECL(D6, GPIOA0, MAC1LINK, SIG_DESC_SET(SCU80, 0));
70
71 #define B5 1
72 SSSF_PIN_DECL(B5, GPIOA1, MAC2LINK, SIG_DESC_SET(SCU80, 1));
73
74 #define A4 2
75 SSSF_PIN_DECL(A4, GPIOA2, TIMER3, SIG_DESC_SET(SCU80, 2));
76
77 #define E6 3
78 SSSF_PIN_DECL(E6, GPIOA3, TIMER4, SIG_DESC_SET(SCU80, 3));
79
80 #define I2C9_DESC       SIG_DESC_SET(SCU90, 22)
81
82 #define C5 4
83 SIG_EXPR_LIST_DECL_SINGLE(SCL9, I2C9, I2C9_DESC);
84 SIG_EXPR_LIST_DECL_SINGLE(TIMER5, TIMER5, SIG_DESC_SET(SCU80, 4));
85 MS_PIN_DECL(C5, GPIOA4, SCL9, TIMER5);
86
87 FUNC_GROUP_DECL(TIMER5, C5);
88
89 #define B4 5
90 SIG_EXPR_LIST_DECL_SINGLE(SDA9, I2C9, I2C9_DESC);
91 SIG_EXPR_LIST_DECL_SINGLE(TIMER6, TIMER6, SIG_DESC_SET(SCU80, 5));
92 MS_PIN_DECL(B4, GPIOA5, SDA9, TIMER6);
93
94 FUNC_GROUP_DECL(TIMER6, B4);
95 FUNC_GROUP_DECL(I2C9, C5, B4);
96
97 #define MDIO2_DESC      SIG_DESC_SET(SCU90, 2)
98
99 #define A3 6
100 SIG_EXPR_LIST_DECL_SINGLE(MDC2, MDIO2, MDIO2_DESC);
101 SIG_EXPR_LIST_DECL_SINGLE(TIMER7, TIMER7, SIG_DESC_SET(SCU80, 6));
102 MS_PIN_DECL(A3, GPIOA6, MDC2, TIMER7);
103
104 FUNC_GROUP_DECL(TIMER7, A3);
105
106 #define D5 7
107 SIG_EXPR_LIST_DECL_SINGLE(MDIO2, MDIO2, MDIO2_DESC);
108 SIG_EXPR_LIST_DECL_SINGLE(TIMER8, TIMER8, SIG_DESC_SET(SCU80, 7));
109 MS_PIN_DECL(D5, GPIOA7, MDIO2, TIMER8);
110
111 FUNC_GROUP_DECL(TIMER8, D5);
112 FUNC_GROUP_DECL(MDIO2, A3, D5);
113
114 #define J21 8
115 SSSF_PIN_DECL(J21, GPIOB0, SALT1, SIG_DESC_SET(SCU80, 8));
116
117 #define J20 9
118 SSSF_PIN_DECL(J20, GPIOB1, SALT2, SIG_DESC_SET(SCU80, 9));
119
120 #define H18 10
121 SSSF_PIN_DECL(H18, GPIOB2, SALT3, SIG_DESC_SET(SCU80, 10));
122
123 #define F18 11
124 SSSF_PIN_DECL(F18, GPIOB3, SALT4, SIG_DESC_SET(SCU80, 11));
125
126 #define E19 12
127 SIG_EXPR_DECL(LPCRST, LPCRST, SIG_DESC_SET(SCU80, 12));
128 SIG_EXPR_DECL(LPCRST, LPCRSTS, SIG_DESC_SET(HW_STRAP1, 14));
129 SIG_EXPR_LIST_DECL_DUAL(LPCRST, LPCRST, LPCRSTS);
130 SS_PIN_DECL(E19, GPIOB4, LPCRST);
131
132 FUNC_GROUP_DECL(LPCRST, E19);
133
134 #define H19 13
135 #define H19_DESC        SIG_DESC_SET(SCU80, 13)
136 SIG_EXPR_LIST_DECL_SINGLE(LPCPD, LPCPD, H19_DESC);
137 SIG_EXPR_LIST_DECL_SINGLE(LPCSMI, LPCSMI, H19_DESC);
138 MS_PIN_DECL(H19, GPIOB5, LPCPD, LPCSMI);
139
140 FUNC_GROUP_DECL(LPCPD, H19);
141 FUNC_GROUP_DECL(LPCSMI, H19);
142
143 #define H20 14
144 SSSF_PIN_DECL(H20, GPIOB6, LPCPME, SIG_DESC_SET(SCU80, 14));
145
146 #define E18 15
147 SIG_EXPR_LIST_DECL_SINGLE(EXTRST, EXTRST,
148                 SIG_DESC_SET(SCU80, 15),
149                 SIG_DESC_BIT(SCU90, 31, 0),
150                 SIG_DESC_SET(SCU3C, 3));
151 SIG_EXPR_LIST_DECL_SINGLE(SPICS1, SPICS1,
152                 SIG_DESC_SET(SCU80, 15),
153                 SIG_DESC_SET(SCU90, 31));
154 MS_PIN_DECL(E18, GPIOB7, EXTRST, SPICS1);
155
156 FUNC_GROUP_DECL(EXTRST, E18);
157 FUNC_GROUP_DECL(SPICS1, E18);
158
159 #define SD1_DESC        SIG_DESC_SET(SCU90, 0)
160 #define I2C10_DESC      SIG_DESC_SET(SCU90, 23)
161
162 #define C4 16
163 SIG_EXPR_LIST_DECL_SINGLE(SD1CLK, SD1, SD1_DESC);
164 SIG_EXPR_LIST_DECL_SINGLE(SCL10, I2C10, I2C10_DESC);
165 MS_PIN_DECL(C4, GPIOC0, SD1CLK, SCL10);
166
167 #define B3 17
168 SIG_EXPR_LIST_DECL_SINGLE(SD1CMD, SD1, SD1_DESC);
169 SIG_EXPR_LIST_DECL_SINGLE(SDA10, I2C10, I2C10_DESC);
170 MS_PIN_DECL(B3, GPIOC1, SD1CMD, SDA10);
171
172 FUNC_GROUP_DECL(I2C10, C4, B3);
173
174 #define I2C11_DESC      SIG_DESC_SET(SCU90, 24)
175
176 #define A2 18
177 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT0, SD1, SD1_DESC);
178 SIG_EXPR_LIST_DECL_SINGLE(SCL11, I2C11, I2C11_DESC);
179 MS_PIN_DECL(A2, GPIOC2, SD1DAT0, SCL11);
180
181 #define E5 19
182 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT1, SD1, SD1_DESC);
183 SIG_EXPR_LIST_DECL_SINGLE(SDA11, I2C11, I2C11_DESC);
184 MS_PIN_DECL(E5, GPIOC3, SD1DAT1, SDA11);
185
186 FUNC_GROUP_DECL(I2C11, A2, E5);
187
188 #define I2C12_DESC      SIG_DESC_SET(SCU90, 25)
189
190 #define D4 20
191 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT2, SD1, SD1_DESC);
192 SIG_EXPR_LIST_DECL_SINGLE(SCL12, I2C12, I2C12_DESC);
193 MS_PIN_DECL(D4, GPIOC4, SD1DAT2, SCL12);
194
195 #define C3 21
196 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT3, SD1, SD1_DESC);
197 SIG_EXPR_LIST_DECL_SINGLE(SDA12, I2C12, I2C12_DESC);
198 MS_PIN_DECL(C3, GPIOC5, SD1DAT3, SDA12);
199
200 FUNC_GROUP_DECL(I2C12, D4, C3);
201
202 #define I2C13_DESC      SIG_DESC_SET(SCU90, 26)
203
204 #define B2 22
205 SIG_EXPR_LIST_DECL_SINGLE(SD1CD, SD1, SD1_DESC);
206 SIG_EXPR_LIST_DECL_SINGLE(SCL13, I2C13, I2C13_DESC);
207 MS_PIN_DECL(B2, GPIOC6, SD1CD, SCL13);
208
209 #define A1 23
210 SIG_EXPR_LIST_DECL_SINGLE(SD1WP, SD1, SD1_DESC);
211 SIG_EXPR_LIST_DECL_SINGLE(SDA13, I2C13, I2C13_DESC);
212 MS_PIN_DECL(A1, GPIOC7, SD1WP, SDA13);
213
214 FUNC_GROUP_DECL(I2C13, B2, A1);
215 FUNC_GROUP_DECL(SD1, C4, B3, A2, E5, D4, C3, B2, A1);
216
217 #define SD2_DESC        SIG_DESC_SET(SCU90, 1)
218 #define GPID_DESC       SIG_DESC_SET(HW_STRAP1, 21)
219 #define GPID0_DESC      SIG_DESC_SET(SCU8C, 8)
220
221 #define A18 24
222 SIG_EXPR_LIST_DECL_SINGLE(SD2CLK, SD2, SD2_DESC);
223 SIG_EXPR_DECL(GPID0IN, GPID0, GPID0_DESC);
224 SIG_EXPR_DECL(GPID0IN, GPID, GPID_DESC);
225 SIG_EXPR_LIST_DECL_DUAL(GPID0IN, GPID0, GPID);
226 MS_PIN_DECL(A18, GPIOD0, SD2CLK, GPID0IN);
227
228 #define D16 25
229 SIG_EXPR_LIST_DECL_SINGLE(SD2CMD, SD2, SD2_DESC);
230 SIG_EXPR_DECL(GPID0OUT, GPID0, GPID0_DESC);
231 SIG_EXPR_DECL(GPID0OUT, GPID, GPID_DESC);
232 SIG_EXPR_LIST_DECL_DUAL(GPID0OUT, GPID0, GPID);
233 MS_PIN_DECL(D16, GPIOD1, SD2CMD, GPID0OUT);
234
235 FUNC_GROUP_DECL(GPID0, A18, D16);
236
237 #define GPID2_DESC      SIG_DESC_SET(SCU8C, 9)
238
239 #define B17 26
240 SIG_EXPR_LIST_DECL_SINGLE(SD2DAT0, SD2, SD2_DESC);
241 SIG_EXPR_DECL(GPID2IN, GPID2, GPID2_DESC);
242 SIG_EXPR_DECL(GPID2IN, GPID, GPID_DESC);
243 SIG_EXPR_LIST_DECL_DUAL(GPID2IN, GPID2, GPID);
244 MS_PIN_DECL(B17, GPIOD2, SD2DAT0, GPID2IN);
245
246 #define A17 27
247 SIG_EXPR_LIST_DECL_SINGLE(SD2DAT1, SD2, SD2_DESC);
248 SIG_EXPR_DECL(GPID2OUT, GPID2, GPID2_DESC);
249 SIG_EXPR_DECL(GPID2OUT, GPID, GPID_DESC);
250 SIG_EXPR_LIST_DECL_DUAL(GPID2OUT, GPID2, GPID);
251 MS_PIN_DECL(A17, GPIOD3, SD2DAT1, GPID2OUT);
252
253 FUNC_GROUP_DECL(GPID2, B17, A17);
254
255 #define GPID4_DESC      SIG_DESC_SET(SCU8C, 10)
256
257 #define C16 28
258 SIG_EXPR_LIST_DECL_SINGLE(SD2DAT2, SD2, SD2_DESC);
259 SIG_EXPR_DECL(GPID4IN, GPID4, GPID4_DESC);
260 SIG_EXPR_DECL(GPID4IN, GPID, GPID_DESC);
261 SIG_EXPR_LIST_DECL_DUAL(GPID4IN, GPID4, GPID);
262 MS_PIN_DECL(C16, GPIOD4, SD2DAT2, GPID4IN);
263
264 #define B16 29
265 SIG_EXPR_LIST_DECL_SINGLE(SD2DAT3, SD2, SD2_DESC);
266 SIG_EXPR_DECL(GPID4OUT, GPID4, GPID4_DESC);
267 SIG_EXPR_DECL(GPID4OUT, GPID, GPID_DESC);
268 SIG_EXPR_LIST_DECL_DUAL(GPID4OUT, GPID4, GPID);
269 MS_PIN_DECL(B16, GPIOD5, SD2DAT3, GPID4OUT);
270
271 FUNC_GROUP_DECL(GPID4, C16, B16);
272
273 #define GPID6_DESC      SIG_DESC_SET(SCU8C, 11)
274
275 #define A16 30
276 SIG_EXPR_LIST_DECL_SINGLE(SD2CD, SD2, SD2_DESC);
277 SIG_EXPR_DECL(GPID6IN, GPID6, GPID6_DESC);
278 SIG_EXPR_DECL(GPID6IN, GPID, GPID_DESC);
279 SIG_EXPR_LIST_DECL_DUAL(GPID6IN, GPID6, GPID);
280 MS_PIN_DECL(A16, GPIOD6, SD2CD, GPID6IN);
281
282 #define E15 31
283 SIG_EXPR_LIST_DECL_SINGLE(SD2WP, SD2, SD2_DESC);
284 SIG_EXPR_DECL(GPID6OUT, GPID6, GPID6_DESC);
285 SIG_EXPR_DECL(GPID6OUT, GPID, GPID_DESC);
286 SIG_EXPR_LIST_DECL_DUAL(GPID6OUT, GPID6, GPID);
287 MS_PIN_DECL(E15, GPIOD7, SD2WP, GPID6OUT);
288
289 FUNC_GROUP_DECL(GPID6, A16, E15);
290 FUNC_GROUP_DECL(SD2, A18, D16, B17, A17, C16, B16, A16, E15);
291 FUNC_GROUP_DECL(GPID, A18, D16, B17, A17, C16, B16, A16, E15);
292
293 #define GPIE_DESC       SIG_DESC_SET(HW_STRAP1, 22)
294 #define GPIE0_DESC      SIG_DESC_SET(SCU8C, 12)
295 #define GPIE2_DESC      SIG_DESC_SET(SCU8C, 13)
296 #define GPIE4_DESC      SIG_DESC_SET(SCU8C, 14)
297 #define GPIE6_DESC      SIG_DESC_SET(SCU8C, 15)
298
299 #define D15 32
300 SIG_EXPR_LIST_DECL_SINGLE(NCTS3, NCTS3, SIG_DESC_SET(SCU80, 16));
301 SIG_EXPR_DECL(GPIE0IN, GPIE0, GPIE0_DESC);
302 SIG_EXPR_DECL(GPIE0IN, GPIE, GPIE_DESC);
303 SIG_EXPR_LIST_DECL_DUAL(GPIE0IN, GPIE0, GPIE);
304 MS_PIN_DECL(D15, GPIOE0, NCTS3, GPIE0IN);
305
306 FUNC_GROUP_DECL(NCTS3, D15);
307
308 #define C15 33
309 SIG_EXPR_LIST_DECL_SINGLE(NDCD3, NDCD3, SIG_DESC_SET(SCU80, 17));
310 SIG_EXPR_DECL(GPIE0OUT, GPIE0, GPIE0_DESC);
311 SIG_EXPR_DECL(GPIE0OUT, GPIE, GPIE_DESC);
312 SIG_EXPR_LIST_DECL_DUAL(GPIE0OUT, GPIE0, GPIE);
313 MS_PIN_DECL(C15, GPIOE1, NDCD3, GPIE0OUT);
314
315 FUNC_GROUP_DECL(NDCD3, C15);
316 FUNC_GROUP_DECL(GPIE0, D15, C15);
317
318 #define B15 34
319 SIG_EXPR_LIST_DECL_SINGLE(NDSR3, NDSR3, SIG_DESC_SET(SCU80, 18));
320 SIG_EXPR_DECL(GPIE2IN, GPIE2, GPIE2_DESC);
321 SIG_EXPR_DECL(GPIE2IN, GPIE, GPIE_DESC);
322 SIG_EXPR_LIST_DECL_DUAL(GPIE2IN, GPIE2, GPIE);
323 MS_PIN_DECL(B15, GPIOE2, NDSR3, GPIE2IN);
324
325 FUNC_GROUP_DECL(NDSR3, B15);
326
327 #define A15 35
328 SIG_EXPR_LIST_DECL_SINGLE(NRI3, NRI3, SIG_DESC_SET(SCU80, 19));
329 SIG_EXPR_DECL(GPIE2OUT, GPIE2, GPIE2_DESC);
330 SIG_EXPR_DECL(GPIE2OUT, GPIE, GPIE_DESC);
331 SIG_EXPR_LIST_DECL_DUAL(GPIE2OUT, GPIE2, GPIE);
332 MS_PIN_DECL(A15, GPIOE3, NRI3, GPIE2OUT);
333
334 FUNC_GROUP_DECL(NRI3, A15);
335 FUNC_GROUP_DECL(GPIE2, B15, A15);
336
337 #define E14 36
338 SIG_EXPR_LIST_DECL_SINGLE(NDTR3, NDTR3, SIG_DESC_SET(SCU80, 20));
339 SIG_EXPR_DECL(GPIE4IN, GPIE4, GPIE4_DESC);
340 SIG_EXPR_DECL(GPIE4IN, GPIE, GPIE_DESC);
341 SIG_EXPR_LIST_DECL_DUAL(GPIE4IN, GPIE4, GPIE);
342 MS_PIN_DECL(E14, GPIOE4, NDTR3, GPIE4IN);
343
344 FUNC_GROUP_DECL(NDTR3, E14);
345
346 #define D14 37
347 SIG_EXPR_LIST_DECL_SINGLE(NRTS3, NRTS3, SIG_DESC_SET(SCU80, 21));
348 SIG_EXPR_DECL(GPIE4OUT, GPIE4, GPIE4_DESC);
349 SIG_EXPR_DECL(GPIE4OUT, GPIE, GPIE_DESC);
350 SIG_EXPR_LIST_DECL_DUAL(GPIE4OUT, GPIE4, GPIE);
351 MS_PIN_DECL(D14, GPIOE5, NRTS3, GPIE4OUT);
352
353 FUNC_GROUP_DECL(NRTS3, D14);
354 FUNC_GROUP_DECL(GPIE4, E14, D14);
355
356 #define C14 38
357 SIG_EXPR_LIST_DECL_SINGLE(TXD3, TXD3, SIG_DESC_SET(SCU80, 22));
358 SIG_EXPR_DECL(GPIE6IN, GPIE6, GPIE6_DESC);
359 SIG_EXPR_DECL(GPIE6IN, GPIE, GPIE_DESC);
360 SIG_EXPR_LIST_DECL_DUAL(GPIE6IN, GPIE6, GPIE);
361 MS_PIN_DECL(C14, GPIOE6, TXD3, GPIE6IN);
362
363 FUNC_GROUP_DECL(TXD3, C14);
364
365 #define B14 39
366 SIG_EXPR_LIST_DECL_SINGLE(RXD3, RXD3, SIG_DESC_SET(SCU80, 23));
367 SIG_EXPR_DECL(GPIE6OUT, GPIE6, GPIE6_DESC);
368 SIG_EXPR_DECL(GPIE6OUT, GPIE, GPIE_DESC);
369 SIG_EXPR_LIST_DECL_DUAL(GPIE6OUT, GPIE6, GPIE);
370 MS_PIN_DECL(B14, GPIOE7, RXD3, GPIE6OUT);
371
372 FUNC_GROUP_DECL(RXD3, B14);
373 FUNC_GROUP_DECL(GPIE6, C14, B14);
374
375 #define D18 40
376 SSSF_PIN_DECL(D18, GPIOF0, NCTS4, SIG_DESC_SET(SCU80, 24));
377
378 #define ACPI_DESC       SIG_DESC_BIT(HW_STRAP1, 19, 0)
379
380 #define B19 41
381 SIG_EXPR_LIST_DECL_SINGLE(NDCD4, NDCD4, SIG_DESC_SET(SCU80, 25));
382 SIG_EXPR_DECL(SIOPBI, SIOPBI, SIG_DESC_SET(SCUA4, 12));
383 SIG_EXPR_DECL(SIOPBI, ACPI, ACPI_DESC);
384 SIG_EXPR_LIST_DECL_DUAL(SIOPBI, SIOPBI, ACPI);
385 MS_PIN_DECL(B19, GPIOF1, NDCD4, SIOPBI);
386 FUNC_GROUP_DECL(NDCD4, B19);
387 FUNC_GROUP_DECL(SIOPBI, B19);
388
389 #define A20 42
390 SIG_EXPR_LIST_DECL_SINGLE(NDSR4, NDSR4, SIG_DESC_SET(SCU80, 26));
391 SIG_EXPR_DECL(SIOPWRGD, SIOPWRGD, SIG_DESC_SET(SCUA4, 12));
392 SIG_EXPR_DECL(SIOPWRGD, ACPI, ACPI_DESC);
393 SIG_EXPR_LIST_DECL_DUAL(SIOPWRGD, SIOPWRGD, ACPI);
394 MS_PIN_DECL(A20, GPIOF2, NDSR4, SIOPWRGD);
395 FUNC_GROUP_DECL(NDSR4, A20);
396 FUNC_GROUP_DECL(SIOPWRGD, A20);
397
398 #define D17 43
399 SIG_EXPR_LIST_DECL_SINGLE(NRI4, NRI4, SIG_DESC_SET(SCU80, 27));
400 SIG_EXPR_DECL(SIOPBO, SIOPBO, SIG_DESC_SET(SCUA4, 14));
401 SIG_EXPR_DECL(SIOPBO, ACPI, ACPI_DESC);
402 SIG_EXPR_LIST_DECL_DUAL(SIOPBO, SIOPBO, ACPI);
403 MS_PIN_DECL(D17, GPIOF3, NRI4, SIOPBO);
404 FUNC_GROUP_DECL(NRI4, D17);
405 FUNC_GROUP_DECL(SIOPBO, D17);
406
407 #define B18 44
408 SSSF_PIN_DECL(B18, GPIOF4, NDTR4, SIG_DESC_SET(SCU80, 28));
409
410 #define A19 45
411 SIG_EXPR_LIST_DECL_SINGLE(NDTS4, NDTS4, SIG_DESC_SET(SCU80, 29));
412 SIG_EXPR_DECL(SIOSCI, SIOSCI, SIG_DESC_SET(SCUA4, 15));
413 SIG_EXPR_DECL(SIOSCI, ACPI, ACPI_DESC);
414 SIG_EXPR_LIST_DECL_DUAL(SIOSCI, SIOSCI, ACPI);
415 MS_PIN_DECL(A19, GPIOF5, NDTS4, SIOSCI);
416 FUNC_GROUP_DECL(NDTS4, A19);
417 FUNC_GROUP_DECL(SIOSCI, A19);
418
419 #define E16 46
420 SSSF_PIN_DECL(E16, GPIOF6, TXD4, SIG_DESC_SET(SCU80, 30));
421
422 #define C17 47
423 SSSF_PIN_DECL(C17, GPIOF7, RXD4, SIG_DESC_SET(SCU80, 31));
424
425 #define A14 48
426 SSSF_PIN_DECL(A14, GPIOG0, SGPSCK, SIG_DESC_SET(SCU84, 0));
427
428 #define E13 49
429 SSSF_PIN_DECL(E13, GPIOG1, SGPSLD, SIG_DESC_SET(SCU84, 1));
430
431 #define D13 50
432 SSSF_PIN_DECL(D13, GPIOG2, SGPSI0, SIG_DESC_SET(SCU84, 2));
433
434 #define C13 51
435 SSSF_PIN_DECL(C13, GPIOG3, SGPSI1, SIG_DESC_SET(SCU84, 3));
436
437 #define B13 52
438 SIG_EXPR_LIST_DECL_SINGLE(OSCCLK, OSCCLK, SIG_DESC_SET(SCU2C, 1));
439 SIG_EXPR_LIST_DECL_SINGLE(WDTRST1, WDTRST1, SIG_DESC_SET(SCU84, 4));
440 MS_PIN_DECL(B13, GPIOG4, OSCCLK, WDTRST1);
441
442 FUNC_GROUP_DECL(OSCCLK, B13);
443 FUNC_GROUP_DECL(WDTRST1, B13);
444
445 #define Y21 53
446 SIG_EXPR_LIST_DECL_SINGLE(USBCKI, USBCKI, SIG_DESC_SET(HW_STRAP1, 23));
447 SIG_EXPR_LIST_DECL_SINGLE(WDTRST2, WDTRST2, SIG_DESC_SET(SCU84, 5));
448 MS_PIN_DECL(Y21, GPIOG5, USBCKI, WDTRST2);
449
450 FUNC_GROUP_DECL(USBCKI, Y21);
451 FUNC_GROUP_DECL(WDTRST2, Y21);
452
453 #define AA22 54
454 SSSF_PIN_DECL(AA22, GPIOG6, FLBUSY, SIG_DESC_SET(SCU84, 6));
455
456 #define U18 55
457 SSSF_PIN_DECL(U18, GPIOG7, FLWP, SIG_DESC_SET(SCU84, 7));
458
459 #define UART6_DESC      SIG_DESC_SET(SCU90, 7)
460 #define ROM16_DESC      SIG_DESC_SET(SCU90, 6)
461 #define FLASH_WIDE      SIG_DESC_SET(HW_STRAP1, 4)
462 #define BOOT_SRC_NOR    { ASPEED_IP_SCU, HW_STRAP1, GENMASK(1, 0), 0, 0 }
463
464 #define A8 56
465 SIG_EXPR_DECL(ROMD8, ROM16, ROM16_DESC);
466 SIG_EXPR_DECL(ROMD8, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
467 SIG_EXPR_LIST_DECL_DUAL(ROMD8, ROM16, ROM16S);
468 SIG_EXPR_LIST_DECL_SINGLE(NCTS6, NCTS6, UART6_DESC);
469 MS_PIN_DECL(A8, GPIOH0, ROMD8, NCTS6);
470
471 #define C7 57
472 SIG_EXPR_DECL(ROMD9, ROM16, ROM16_DESC);
473 SIG_EXPR_DECL(ROMD9, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
474 SIG_EXPR_LIST_DECL_DUAL(ROMD9, ROM16, ROM16S);
475 SIG_EXPR_LIST_DECL_SINGLE(NDCD6, NDCD6, UART6_DESC);
476 MS_PIN_DECL(C7, GPIOH1, ROMD9, NDCD6);
477
478 #define B7 58
479 SIG_EXPR_DECL(ROMD10, ROM16, ROM16_DESC);
480 SIG_EXPR_DECL(ROMD10, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
481 SIG_EXPR_LIST_DECL_DUAL(ROMD10, ROM16, ROM16S);
482 SIG_EXPR_LIST_DECL_SINGLE(NDSR6, NDSR6, UART6_DESC);
483 MS_PIN_DECL(B7, GPIOH2, ROMD10, NDSR6);
484
485 #define A7 59
486 SIG_EXPR_DECL(ROMD11, ROM16, ROM16_DESC);
487 SIG_EXPR_DECL(ROMD11, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
488 SIG_EXPR_LIST_DECL_DUAL(ROMD11, ROM16, ROM16S);
489 SIG_EXPR_LIST_DECL_SINGLE(NRI6, NRI6, UART6_DESC);
490 MS_PIN_DECL(A7, GPIOH3, ROMD11, NRI6);
491
492 #define D7 60
493 SIG_EXPR_DECL(ROMD12, ROM16, ROM16_DESC);
494 SIG_EXPR_DECL(ROMD12, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
495 SIG_EXPR_LIST_DECL_DUAL(ROMD12, ROM16, ROM16S);
496 SIG_EXPR_LIST_DECL_SINGLE(NDTR6, NDTR6, UART6_DESC);
497 MS_PIN_DECL(D7, GPIOH4, ROMD12, NDTR6);
498
499 #define B6 61
500 SIG_EXPR_DECL(ROMD13, ROM16, ROM16_DESC);
501 SIG_EXPR_DECL(ROMD13, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
502 SIG_EXPR_LIST_DECL_DUAL(ROMD13, ROM16, ROM16S);
503 SIG_EXPR_LIST_DECL_SINGLE(NRTS6, NRTS6, UART6_DESC);
504 MS_PIN_DECL(B6, GPIOH5, ROMD13, NRTS6);
505
506 #define A6 62
507 SIG_EXPR_DECL(ROMD14, ROM16, ROM16_DESC);
508 SIG_EXPR_DECL(ROMD14, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
509 SIG_EXPR_LIST_DECL_DUAL(ROMD14, ROM16, ROM16S);
510 SIG_EXPR_LIST_DECL_SINGLE(TXD6, TXD6, UART6_DESC);
511 MS_PIN_DECL(A6, GPIOH6, ROMD14, TXD6);
512
513 #define E7 63
514 SIG_EXPR_DECL(ROMD15, ROM16, ROM16_DESC);
515 SIG_EXPR_DECL(ROMD15, ROM16S, FLASH_WIDE, BOOT_SRC_NOR);
516 SIG_EXPR_LIST_DECL_DUAL(ROMD15, ROM16, ROM16S);
517 SIG_EXPR_LIST_DECL_SINGLE(RXD6, RXD6, UART6_DESC);
518 MS_PIN_DECL(E7, GPIOH7, ROMD15, RXD6);
519
520 FUNC_GROUP_DECL(UART6, A8, C7, B7, A7, D7, B6, A6, E7);
521
522 #define SPI1_DESC \
523         { ASPEED_IP_SCU, HW_STRAP1, GENMASK(13, 12), 1, 0 }
524 #define SPI1DEBUG_DESC \
525         { ASPEED_IP_SCU, HW_STRAP1, GENMASK(13, 12), 2, 0 }
526 #define SPI1PASSTHRU_DESC \
527         { ASPEED_IP_SCU, HW_STRAP1, GENMASK(13, 12), 3, 0 }
528
529 #define C22 64
530 SIG_EXPR_DECL(SYSCS, SPI1DEBUG, SPI1DEBUG_DESC);
531 SIG_EXPR_DECL(SYSCS, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
532 SIG_EXPR_LIST_DECL_DUAL(SYSCS, SPI1DEBUG, SPI1PASSTHRU);
533 SS_PIN_DECL(C22, GPIOI0, SYSCS);
534
535 #define G18 65
536 SIG_EXPR_DECL(SYSCK, SPI1DEBUG, SPI1DEBUG_DESC);
537 SIG_EXPR_DECL(SYSCK, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
538 SIG_EXPR_LIST_DECL_DUAL(SYSCK, SPI1DEBUG, SPI1PASSTHRU);
539 SS_PIN_DECL(G18, GPIOI1, SYSCK);
540
541 #define D19 66
542 SIG_EXPR_DECL(SYSDO, SPI1DEBUG, SPI1DEBUG_DESC);
543 SIG_EXPR_DECL(SYSDO, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
544 SIG_EXPR_LIST_DECL_DUAL(SYSDO, SPI1DEBUG, SPI1PASSTHRU);
545 SS_PIN_DECL(D19, GPIOI2, SYSDO);
546
547 #define C20 67
548 SIG_EXPR_DECL(SYSDI, SPI1DEBUG, SPI1DEBUG_DESC);
549 SIG_EXPR_DECL(SYSDI, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
550 SIG_EXPR_LIST_DECL_DUAL(SYSDI, SPI1DEBUG, SPI1PASSTHRU);
551 SS_PIN_DECL(C20, GPIOI3, SYSDI);
552
553 #define VB_DESC SIG_DESC_SET(HW_STRAP1, 5)
554
555 #define B22 68
556 SIG_EXPR_DECL(SPI1CS0, SPI1, SPI1_DESC);
557 SIG_EXPR_DECL(SPI1CS0, SPI1DEBUG, SPI1DEBUG_DESC);
558 SIG_EXPR_DECL(SPI1CS0, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
559 SIG_EXPR_LIST_DECL(SPI1CS0, SIG_EXPR_PTR(SPI1CS0, SPI1),
560                             SIG_EXPR_PTR(SPI1CS0, SPI1DEBUG),
561                             SIG_EXPR_PTR(SPI1CS0, SPI1PASSTHRU));
562 SIG_EXPR_LIST_DECL_SINGLE(VBCS, VGABIOS_ROM, VB_DESC);
563 MS_PIN_DECL(B22, GPIOI4, SPI1CS0, VBCS);
564
565 #define G19 69
566 SIG_EXPR_DECL(SPI1CK, SPI1, SPI1_DESC);
567 SIG_EXPR_DECL(SPI1CK, SPI1DEBUG, SPI1DEBUG_DESC);
568 SIG_EXPR_DECL(SPI1CK, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
569 SIG_EXPR_LIST_DECL(SPI1CK, SIG_EXPR_PTR(SPI1CK, SPI1),
570                             SIG_EXPR_PTR(SPI1CK, SPI1DEBUG),
571                             SIG_EXPR_PTR(SPI1CK, SPI1PASSTHRU));
572 SIG_EXPR_LIST_DECL_SINGLE(VBCK, VGABIOS_ROM, VB_DESC);
573 MS_PIN_DECL(G19, GPIOI5, SPI1CK, VBCK);
574
575 #define C18 70
576 SIG_EXPR_DECL(SPI1DO, SPI1, SPI1_DESC);
577 SIG_EXPR_DECL(SPI1DO, SPI1DEBUG, SPI1DEBUG_DESC);
578 SIG_EXPR_DECL(SPI1DO, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
579 SIG_EXPR_LIST_DECL(SPI1DO, SIG_EXPR_PTR(SPI1DO, SPI1),
580                             SIG_EXPR_PTR(SPI1DO, SPI1DEBUG),
581                             SIG_EXPR_PTR(SPI1DO, SPI1PASSTHRU));
582 SIG_EXPR_LIST_DECL_SINGLE(VBDO, VGABIOS_ROM, VB_DESC);
583 MS_PIN_DECL(C18, GPIOI6, SPI1DO, VBDO);
584
585 #define E20 71
586 SIG_EXPR_DECL(SPI1DI, SPI1, SPI1_DESC);
587 SIG_EXPR_DECL(SPI1DI, SPI1DEBUG, SPI1DEBUG_DESC);
588 SIG_EXPR_DECL(SPI1DI, SPI1PASSTHRU, SPI1PASSTHRU_DESC);
589 SIG_EXPR_LIST_DECL(SPI1DI, SIG_EXPR_PTR(SPI1DI, SPI1),
590                             SIG_EXPR_PTR(SPI1DI, SPI1DEBUG),
591                             SIG_EXPR_PTR(SPI1DI, SPI1PASSTHRU));
592 SIG_EXPR_LIST_DECL_SINGLE(VBDI, VGABIOS_ROM, VB_DESC);
593 MS_PIN_DECL(E20, GPIOI7, SPI1DI, VBDI);
594
595 FUNC_GROUP_DECL(SPI1, B22, G19, C18, E20);
596 FUNC_GROUP_DECL(SPI1DEBUG, C22, G18, D19, C20, B22, G19, C18, E20);
597 FUNC_GROUP_DECL(SPI1PASSTHRU, C22, G18, D19, C20, B22, G19, C18, E20);
598 FUNC_GROUP_DECL(VGABIOS_ROM, B22, G19, C18, E20);
599
600 #define J5 72
601 SSSF_PIN_DECL(J5, GPIOJ0, SGPMCK, SIG_DESC_SET(SCU84, 8));
602
603 #define J4 73
604 SSSF_PIN_DECL(J4, GPIOJ1, SGPMLD, SIG_DESC_SET(SCU84, 9));
605
606 #define K5 74
607 SSSF_PIN_DECL(K5, GPIOJ2, SGPMO, SIG_DESC_SET(SCU84, 10));
608
609 #define J3 75
610 SSSF_PIN_DECL(J3, GPIOJ3, SGPMI, SIG_DESC_SET(SCU84, 11));
611
612 #define T4 76
613 SSSF_PIN_DECL(T4, GPIOJ4, VGAHS, SIG_DESC_SET(SCU84, 12));
614
615 #define U2 77
616 SSSF_PIN_DECL(U2, GPIOJ5, VGAVS, SIG_DESC_SET(SCU84, 13));
617
618 #define T2 78
619 SSSF_PIN_DECL(T2, GPIOJ6, DDCCLK, SIG_DESC_SET(SCU84, 14));
620
621 #define T1 79
622 SSSF_PIN_DECL(T1, GPIOJ7, DDCDAT, SIG_DESC_SET(SCU84, 15));
623
624 #define I2C5_DESC       SIG_DESC_SET(SCU90, 18)
625
626 #define E3 80
627 SIG_EXPR_LIST_DECL_SINGLE(SCL5, I2C5, I2C5_DESC);
628 SS_PIN_DECL(E3, GPIOK0, SCL5);
629
630 #define D2 81
631 SIG_EXPR_LIST_DECL_SINGLE(SDA5, I2C5, I2C5_DESC);
632 SS_PIN_DECL(D2, GPIOK1, SDA5);
633
634 FUNC_GROUP_DECL(I2C5, E3, D2);
635
636 #define I2C6_DESC       SIG_DESC_SET(SCU90, 19)
637
638 #define C1 82
639 SIG_EXPR_LIST_DECL_SINGLE(SCL6, I2C6, I2C6_DESC);
640 SS_PIN_DECL(C1, GPIOK2, SCL6);
641
642 #define F4 83
643 SIG_EXPR_LIST_DECL_SINGLE(SDA6, I2C6, I2C6_DESC);
644 SS_PIN_DECL(F4, GPIOK3, SDA6);
645
646 FUNC_GROUP_DECL(I2C6, C1, F4);
647
648 #define I2C7_DESC       SIG_DESC_SET(SCU90, 20)
649
650 #define E2 84
651 SIG_EXPR_LIST_DECL_SINGLE(SCL7, I2C7, I2C7_DESC);
652 SS_PIN_DECL(E2, GPIOK4, SCL7);
653
654 #define D1 85
655 SIG_EXPR_LIST_DECL_SINGLE(SDA7, I2C7, I2C7_DESC);
656 SS_PIN_DECL(D1, GPIOK5, SDA7);
657
658 FUNC_GROUP_DECL(I2C7, E2, D1);
659
660 #define I2C8_DESC       SIG_DESC_SET(SCU90, 21)
661
662 #define G5 86
663 SIG_EXPR_LIST_DECL_SINGLE(SCL8, I2C8, I2C8_DESC);
664 SS_PIN_DECL(G5, GPIOK6, SCL8);
665
666 #define F3 87
667 SIG_EXPR_LIST_DECL_SINGLE(SDA8, I2C8, I2C8_DESC);
668 SS_PIN_DECL(F3, GPIOK7, SDA8);
669
670 FUNC_GROUP_DECL(I2C8, G5, F3);
671
672 #define U1 88
673 SSSF_PIN_DECL(U1, GPIOL0, NCTS1, SIG_DESC_SET(SCU84, 16));
674
675 #define VPI18_DESC      { ASPEED_IP_SCU, SCU90, GENMASK(5, 4), 1, 0 }
676 #define VPI24_DESC      { ASPEED_IP_SCU, SCU90, GENMASK(5, 4), 2, 0 }
677 #define VPI30_DESC      { ASPEED_IP_SCU, SCU90, GENMASK(5, 4), 3, 0 }
678
679 #define T5 89
680 #define T5_DESC         SIG_DESC_SET(SCU84, 17)
681 SIG_EXPR_DECL(VPIDE, VPI18, VPI18_DESC, T5_DESC);
682 SIG_EXPR_DECL(VPIDE, VPI24, VPI24_DESC, T5_DESC);
683 SIG_EXPR_DECL(VPIDE, VPI30, VPI30_DESC, T5_DESC);
684 SIG_EXPR_LIST_DECL(VPIDE, SIG_EXPR_PTR(VPIDE, VPI18),
685                 SIG_EXPR_PTR(VPIDE, VPI24),
686                 SIG_EXPR_PTR(VPIDE, VPI30));
687 SIG_EXPR_LIST_DECL_SINGLE(NDCD1, NDCD1, T5_DESC);
688 MS_PIN_DECL(T5, GPIOL1, VPIDE, NDCD1);
689 FUNC_GROUP_DECL(NDCD1, T5);
690
691 #define U3 90
692 #define U3_DESC         SIG_DESC_SET(SCU84, 18)
693 SIG_EXPR_DECL(VPIODD, VPI18, VPI18_DESC, U3_DESC);
694 SIG_EXPR_DECL(VPIODD, VPI24, VPI24_DESC, U3_DESC);
695 SIG_EXPR_DECL(VPIODD, VPI30, VPI30_DESC, U3_DESC);
696 SIG_EXPR_LIST_DECL(VPIODD, SIG_EXPR_PTR(VPIODD, VPI18),
697                 SIG_EXPR_PTR(VPIODD, VPI24),
698                 SIG_EXPR_PTR(VPIODD, VPI30));
699 SIG_EXPR_LIST_DECL_SINGLE(NDSR1, NDSR1, U3_DESC);
700 MS_PIN_DECL(U3, GPIOL2, VPIODD, NDSR1);
701 FUNC_GROUP_DECL(NDSR1, U3);
702
703 #define V1 91
704 #define V1_DESC         SIG_DESC_SET(SCU84, 19)
705 SIG_EXPR_DECL(VPIHS, VPI18, VPI18_DESC, V1_DESC);
706 SIG_EXPR_DECL(VPIHS, VPI24, VPI24_DESC, V1_DESC);
707 SIG_EXPR_DECL(VPIHS, VPI30, VPI30_DESC, V1_DESC);
708 SIG_EXPR_LIST_DECL(VPIHS, SIG_EXPR_PTR(VPIHS, VPI18),
709                 SIG_EXPR_PTR(VPIHS, VPI24),
710                 SIG_EXPR_PTR(VPIHS, VPI30));
711 SIG_EXPR_LIST_DECL_SINGLE(NRI1, NRI1, V1_DESC);
712 MS_PIN_DECL(V1, GPIOL3, VPIHS, NRI1);
713 FUNC_GROUP_DECL(NRI1, V1);
714
715 #define U4 92
716 #define U4_DESC         SIG_DESC_SET(SCU84, 20)
717 SIG_EXPR_DECL(VPIVS, VPI18, VPI18_DESC, U4_DESC);
718 SIG_EXPR_DECL(VPIVS, VPI24, VPI24_DESC, U4_DESC);
719 SIG_EXPR_DECL(VPIVS, VPI30, VPI30_DESC, U4_DESC);
720 SIG_EXPR_LIST_DECL(VPIVS, SIG_EXPR_PTR(VPIVS, VPI18),
721                 SIG_EXPR_PTR(VPIVS, VPI24),
722                 SIG_EXPR_PTR(VPIVS, VPI30));
723 SIG_EXPR_LIST_DECL_SINGLE(NDTR1, NDTR1, U4_DESC);
724 MS_PIN_DECL(U4, GPIOL4, VPIVS, NDTR1);
725 FUNC_GROUP_DECL(NDTR1, U4);
726
727 #define V2 93
728 #define V2_DESC         SIG_DESC_SET(SCU84, 21)
729 SIG_EXPR_DECL(VPICLK, VPI18, VPI18_DESC, V2_DESC);
730 SIG_EXPR_DECL(VPICLK, VPI24, VPI24_DESC, V2_DESC);
731 SIG_EXPR_DECL(VPICLK, VPI30, VPI30_DESC, V2_DESC);
732 SIG_EXPR_LIST_DECL(VPICLK, SIG_EXPR_PTR(VPICLK, VPI18),
733                 SIG_EXPR_PTR(VPICLK, VPI24),
734                 SIG_EXPR_PTR(VPICLK, VPI30));
735 SIG_EXPR_LIST_DECL_SINGLE(NRTS1, NRTS1, V2_DESC);
736 MS_PIN_DECL(V2, GPIOL5, VPICLK, NRTS1);
737 FUNC_GROUP_DECL(NRTS1, V2);
738
739 #define W1 94
740 #define W1_DESC         SIG_DESC_SET(SCU84, 22)
741 SIG_EXPR_LIST_DECL_SINGLE(VPIB0, VPI30, VPI30_DESC, W1_DESC);
742 SIG_EXPR_LIST_DECL_SINGLE(TXD1, TXD1, W1_DESC);
743 MS_PIN_DECL(W1, GPIOL6, VPIB0, TXD1);
744 FUNC_GROUP_DECL(TXD1, W1);
745
746 #define U5 95
747 #define U5_DESC         SIG_DESC_SET(SCU84, 23)
748 SIG_EXPR_LIST_DECL_SINGLE(VPIB1, VPI30, VPI30_DESC, U5_DESC);
749 SIG_EXPR_LIST_DECL_SINGLE(RXD1, RXD1, U5_DESC);
750 MS_PIN_DECL(U5, GPIOL7, VPIB1, RXD1);
751 FUNC_GROUP_DECL(RXD1, U5);
752
753 #define V3 96
754 #define V3_DESC         SIG_DESC_SET(SCU84, 24)
755 SIG_EXPR_DECL(VPIOB2, VPI18, VPI18_DESC, V3_DESC);
756 SIG_EXPR_DECL(VPIOB2, VPI24, VPI24_DESC, V3_DESC);
757 SIG_EXPR_DECL(VPIOB2, VPI30, VPI30_DESC, V3_DESC);
758 SIG_EXPR_LIST_DECL(VPIOB2, SIG_EXPR_PTR(VPIOB2, VPI18),
759                 SIG_EXPR_PTR(VPIOB2, VPI24),
760                 SIG_EXPR_PTR(VPIOB2, VPI30));
761 SIG_EXPR_LIST_DECL_SINGLE(NCTS2, NCTS2, V3_DESC);
762 MS_PIN_DECL(V3, GPIOM0, VPIOB2, NCTS2);
763 FUNC_GROUP_DECL(NCTS2, V3);
764
765 #define W2 97
766 #define W2_DESC         SIG_DESC_SET(SCU84, 25)
767 SIG_EXPR_DECL(VPIOB3, VPI18, VPI18_DESC, W2_DESC);
768 SIG_EXPR_DECL(VPIOB3, VPI24, VPI24_DESC, W2_DESC);
769 SIG_EXPR_DECL(VPIOB3, VPI30, VPI30_DESC, W2_DESC);
770 SIG_EXPR_LIST_DECL(VPIOB3, SIG_EXPR_PTR(VPIOB3, VPI18),
771                 SIG_EXPR_PTR(VPIOB3, VPI24),
772                 SIG_EXPR_PTR(VPIOB3, VPI30));
773 SIG_EXPR_LIST_DECL_SINGLE(NDCD2, NDCD2, W2_DESC);
774 MS_PIN_DECL(W2, GPIOM1, VPIOB3, NDCD2);
775 FUNC_GROUP_DECL(NDCD2, W2);
776
777 #define Y1 98
778 #define Y1_DESC         SIG_DESC_SET(SCU84, 26)
779 SIG_EXPR_DECL(VPIOB4, VPI18, VPI18_DESC, Y1_DESC);
780 SIG_EXPR_DECL(VPIOB4, VPI24, VPI24_DESC, Y1_DESC);
781 SIG_EXPR_DECL(VPIOB4, VPI30, VPI30_DESC, Y1_DESC);
782 SIG_EXPR_LIST_DECL(VPIOB4, SIG_EXPR_PTR(VPIOB4, VPI18),
783                 SIG_EXPR_PTR(VPIOB4, VPI24),
784                 SIG_EXPR_PTR(VPIOB4, VPI30));
785 SIG_EXPR_LIST_DECL_SINGLE(NDSR2, NDSR2, Y1_DESC);
786 MS_PIN_DECL(Y1, GPIOM2, VPIOB4, NDSR2);
787 FUNC_GROUP_DECL(NDSR2, Y1);
788
789 #define V4 99
790 #define V4_DESC         SIG_DESC_SET(SCU84, 27)
791 SIG_EXPR_DECL(VPIOB5, VPI18, VPI18_DESC, V4_DESC);
792 SIG_EXPR_DECL(VPIOB5, VPI24, VPI24_DESC, V4_DESC);
793 SIG_EXPR_DECL(VPIOB5, VPI30, VPI30_DESC, V4_DESC);
794 SIG_EXPR_LIST_DECL(VPIOB5, SIG_EXPR_PTR(VPIOB5, VPI18),
795                 SIG_EXPR_PTR(VPIOB5, VPI24),
796                 SIG_EXPR_PTR(VPIOB5, VPI30));
797 SIG_EXPR_LIST_DECL_SINGLE(NRI2, NRI2, V4_DESC);
798 MS_PIN_DECL(V4, GPIOM3, VPIOB5, NRI2);
799 FUNC_GROUP_DECL(NRI2, V4);
800
801 #define W3 100
802 #define W3_DESC         SIG_DESC_SET(SCU84, 28)
803 SIG_EXPR_DECL(VPIOB6, VPI18, VPI18_DESC, W3_DESC);
804 SIG_EXPR_DECL(VPIOB6, VPI24, VPI24_DESC, W3_DESC);
805 SIG_EXPR_DECL(VPIOB6, VPI30, VPI30_DESC, W3_DESC);
806 SIG_EXPR_LIST_DECL(VPIOB6, SIG_EXPR_PTR(VPIOB6, VPI18),
807                 SIG_EXPR_PTR(VPIOB6, VPI24),
808                 SIG_EXPR_PTR(VPIOB6, VPI30));
809 SIG_EXPR_LIST_DECL_SINGLE(NDTR2, NDTR2, W3_DESC);
810 MS_PIN_DECL(W3, GPIOM4, VPIOB6, NDTR2);
811 FUNC_GROUP_DECL(NDTR2, W3);
812
813 #define Y2 101
814 #define Y2_DESC         SIG_DESC_SET(SCU84, 29)
815 SIG_EXPR_DECL(VPIOB7, VPI18, VPI18_DESC, Y2_DESC);
816 SIG_EXPR_DECL(VPIOB7, VPI24, VPI24_DESC, Y2_DESC);
817 SIG_EXPR_DECL(VPIOB7, VPI30, VPI30_DESC, Y2_DESC);
818 SIG_EXPR_LIST_DECL(VPIOB7, SIG_EXPR_PTR(VPIOB7, VPI18),
819                 SIG_EXPR_PTR(VPIOB7, VPI24),
820                 SIG_EXPR_PTR(VPIOB7, VPI30));
821 SIG_EXPR_LIST_DECL_SINGLE(NRTS2, NRTS2, Y2_DESC);
822 MS_PIN_DECL(Y2, GPIOM5, VPIOB7, NRTS2);
823 FUNC_GROUP_DECL(NRTS2, Y2);
824
825 #define AA1 102
826 #define AA1_DESC        SIG_DESC_SET(SCU84, 30)
827 SIG_EXPR_DECL(VPIOB8, VPI18, VPI18_DESC, AA1_DESC);
828 SIG_EXPR_DECL(VPIOB8, VPI24, VPI24_DESC, AA1_DESC);
829 SIG_EXPR_DECL(VPIOB8, VPI30, VPI30_DESC, AA1_DESC);
830 SIG_EXPR_LIST_DECL(VPIOB8, SIG_EXPR_PTR(VPIOB8, VPI18),
831                 SIG_EXPR_PTR(VPIOB8, VPI24),
832                 SIG_EXPR_PTR(VPIOB8, VPI30));
833 SIG_EXPR_LIST_DECL_SINGLE(TXD2, TXD2, AA1_DESC);
834 MS_PIN_DECL(AA1, GPIOM6, VPIOB8, TXD2);
835 FUNC_GROUP_DECL(TXD2, AA1);
836
837 #define V5 103
838 #define V5_DESC         SIG_DESC_SET(SCU84, 31)
839 SIG_EXPR_DECL(VPIOB9, VPI18, VPI18_DESC, V5_DESC);
840 SIG_EXPR_DECL(VPIOB9, VPI24, VPI24_DESC, V5_DESC);
841 SIG_EXPR_DECL(VPIOB9, VPI30, VPI30_DESC, V5_DESC);
842 SIG_EXPR_LIST_DECL(VPIOB9, SIG_EXPR_PTR(VPIOB9, VPI18),
843                 SIG_EXPR_PTR(VPIOB9, VPI24),
844                 SIG_EXPR_PTR(VPIOB9, VPI30));
845 SIG_EXPR_LIST_DECL_SINGLE(RXD2, RXD2, V5_DESC);
846 MS_PIN_DECL(V5, GPIOM7, VPIOB9, RXD2);
847 FUNC_GROUP_DECL(RXD2, V5);
848
849 #define W4 104
850 #define W4_DESC         SIG_DESC_SET(SCU88, 0)
851 SIG_EXPR_LIST_DECL_SINGLE(VPIG0, VPI30, VPI30_DESC, W4_DESC);
852 SIG_EXPR_LIST_DECL_SINGLE(PWM0, PWM0, W4_DESC);
853 MS_PIN_DECL(W4, GPION0, VPIG0, PWM0);
854 FUNC_GROUP_DECL(PWM0, W4);
855
856 #define Y3 105
857 #define Y3_DESC         SIG_DESC_SET(SCU88, 1)
858 SIG_EXPR_LIST_DECL_SINGLE(VPIG1, VPI30, VPI30_DESC, Y3_DESC);
859 SIG_EXPR_LIST_DECL_SINGLE(PWM1, PWM1, Y3_DESC);
860 MS_PIN_DECL(Y3, GPION1, VPIG1, PWM1);
861 FUNC_GROUP_DECL(PWM1, Y3);
862
863 #define AA2 106
864 #define AA2_DESC        SIG_DESC_SET(SCU88, 2)
865 SIG_EXPR_DECL(VPIG2, VPI18, VPI18_DESC, AA2_DESC);
866 SIG_EXPR_DECL(VPIG2, VPI24, VPI24_DESC, AA2_DESC);
867 SIG_EXPR_DECL(VPIG2, VPI30, VPI30_DESC, AA2_DESC);
868 SIG_EXPR_LIST_DECL(VPIG2, SIG_EXPR_PTR(VPIG2, VPI18),
869                 SIG_EXPR_PTR(VPIG2, VPI24),
870                 SIG_EXPR_PTR(VPIG2, VPI30));
871 SIG_EXPR_LIST_DECL_SINGLE(PWM2, PWM2, AA2_DESC);
872 MS_PIN_DECL(AA2, GPION2, VPIG2, PWM2);
873 FUNC_GROUP_DECL(PWM2, AA2);
874
875 #define AB1 107
876 #define AB1_DESC        SIG_DESC_SET(SCU88, 3)
877 SIG_EXPR_DECL(VPIG3, VPI18, VPI18_DESC, AB1_DESC);
878 SIG_EXPR_DECL(VPIG3, VPI24, VPI24_DESC, AB1_DESC);
879 SIG_EXPR_DECL(VPIG3, VPI30, VPI30_DESC, AB1_DESC);
880 SIG_EXPR_LIST_DECL(VPIG3, SIG_EXPR_PTR(VPIG3, VPI18),
881                 SIG_EXPR_PTR(VPIG3, VPI24),
882                 SIG_EXPR_PTR(VPIG3, VPI30));
883 SIG_EXPR_LIST_DECL_SINGLE(PWM3, PWM3, AB1_DESC);
884 MS_PIN_DECL(AB1, GPION3, VPIG3, PWM3);
885 FUNC_GROUP_DECL(PWM3, AB1);
886
887 #define W5 108
888 #define W5_DESC         SIG_DESC_SET(SCU88, 4)
889 SIG_EXPR_DECL(VPIG4, VPI18, VPI18_DESC, W5_DESC);
890 SIG_EXPR_DECL(VPIG4, VPI24, VPI24_DESC, W5_DESC);
891 SIG_EXPR_DECL(VPIG4, VPI30, VPI30_DESC, W5_DESC);
892 SIG_EXPR_LIST_DECL(VPIG4, SIG_EXPR_PTR(VPIG4, VPI18),
893                 SIG_EXPR_PTR(VPIG4, VPI24),
894                 SIG_EXPR_PTR(VPIG4, VPI30));
895 SIG_EXPR_LIST_DECL_SINGLE(PWM4, PWM4, W5_DESC);
896 MS_PIN_DECL(W5, GPION4, VPIG4, PWM4);
897 FUNC_GROUP_DECL(PWM4, W5);
898
899 #define Y4 109
900 #define Y4_DESC         SIG_DESC_SET(SCU88, 5)
901 SIG_EXPR_DECL(VPIG5, VPI18, VPI18_DESC, Y4_DESC);
902 SIG_EXPR_DECL(VPIG5, VPI24, VPI24_DESC, Y4_DESC);
903 SIG_EXPR_DECL(VPIG5, VPI30, VPI30_DESC, Y4_DESC);
904 SIG_EXPR_LIST_DECL(VPIG5, SIG_EXPR_PTR(VPIG5, VPI18),
905                 SIG_EXPR_PTR(VPIG5, VPI24),
906                 SIG_EXPR_PTR(VPIG5, VPI30));
907 SIG_EXPR_LIST_DECL_SINGLE(PWM5, PWM5, Y4_DESC);
908 MS_PIN_DECL(Y4, GPION5, VPIG5, PWM5);
909 FUNC_GROUP_DECL(PWM5, Y4);
910
911 #define AA3 110
912 #define AA3_DESC        SIG_DESC_SET(SCU88, 6)
913 SIG_EXPR_LIST_DECL_SINGLE(VPIG6, VPI30, VPI30_DESC, AA3_DESC);
914 SIG_EXPR_LIST_DECL_SINGLE(PWM6, PWM6, AA3_DESC);
915 MS_PIN_DECL(AA3, GPION6, VPIG6, PWM6);
916 FUNC_GROUP_DECL(PWM6, AA3);
917
918 #define AB2 111
919 #define AB2_DESC        SIG_DESC_SET(SCU88, 7)
920 SIG_EXPR_LIST_DECL_SINGLE(VPIG7, VPI30, VPI30_DESC, AB2_DESC);
921 SIG_EXPR_LIST_DECL_SINGLE(PWM7, PWM7, AB2_DESC);
922 MS_PIN_DECL(AB2, GPION7, VPIG7, PWM7);
923 FUNC_GROUP_DECL(PWM7, AB2);
924
925 #define V6 112
926 SIG_EXPR_LIST_DECL_SINGLE(VPIG8, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 8));
927 SS_PIN_DECL(V6, GPIOO0, VPIG8);
928
929 #define Y5 113
930 SIG_EXPR_LIST_DECL_SINGLE(VPIG9, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 9));
931 SS_PIN_DECL(Y5, GPIOO1, VPIG9);
932
933 #define AA4 114
934 SIG_EXPR_LIST_DECL_SINGLE(VPIR0, VPI30, VPI30_DESC, SIG_DESC_SET(SCU88, 10));
935 SS_PIN_DECL(AA4, GPIOO2, VPIR0);
936
937 #define AB3 115
938 SIG_EXPR_LIST_DECL_SINGLE(VPIR1, VPI30, VPI30_DESC, SIG_DESC_SET(SCU88, 11));
939 SS_PIN_DECL(AB3, GPIOO3, VPIR1);
940
941 #define W6 116
942 SIG_EXPR_LIST_DECL_SINGLE(VPIR2, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 12));
943 SS_PIN_DECL(W6, GPIOO4, VPIR2);
944
945 #define AA5 117
946 SIG_EXPR_LIST_DECL_SINGLE(VPIR3, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 13));
947 SS_PIN_DECL(AA5, GPIOO5, VPIR3);
948
949 #define AB4 118
950 SIG_EXPR_LIST_DECL_SINGLE(VPIR4, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 14));
951 SS_PIN_DECL(AB4, GPIOO6, VPIR4);
952
953 #define V7 119
954 SIG_EXPR_LIST_DECL_SINGLE(VPIR5, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 15));
955 SS_PIN_DECL(V7, GPIOO7, VPIR5);
956
957 #define Y6 120
958 SIG_EXPR_LIST_DECL_SINGLE(VPIR6, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 16));
959 SS_PIN_DECL(Y6, GPIOP0, VPIR6);
960
961 #define AB5 121
962 SIG_EXPR_LIST_DECL_SINGLE(VPIR7, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 17));
963 SS_PIN_DECL(AB5, GPIOP1, VPIR7);
964
965 #define W7 122
966 SIG_EXPR_LIST_DECL_SINGLE(VPIR8, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 18));
967 SS_PIN_DECL(W7, GPIOP2, VPIR8);
968
969 #define AA6 123
970 SIG_EXPR_LIST_DECL_SINGLE(VPIR9, VPI24, VPI24_DESC, SIG_DESC_SET(SCU88, 19));
971 SS_PIN_DECL(AA6, GPIOP3, VPIR9);
972
973 FUNC_GROUP_DECL(VPI18, T5, U3, V1, U4, V2, V3, W2, Y1, V4, W3, Y2, AA1, V5,
974                 AA22, W5, Y4, AA3, AB2);
975 FUNC_GROUP_DECL(VPI24, T5, U3, V1, U4, V2, V3, W2, Y1, V4, W3, Y2, AA1, V5,
976                 AA22, W5, Y4, AA3, AB2, V6, Y5, W6, AA5, AB4, V7, Y6, AB5, W7,
977                 AA6);
978 FUNC_GROUP_DECL(VPI30, T5, U3, V1, U4, V2, W1, U5, V3, W2, Y1, V4, W3, Y2, AA1,
979                 V5, W4, Y3, AA22, W5, Y4, AA3, AB2, AA4, AB3);
980
981 #define AB6 124
982 SIG_EXPR_LIST_DECL_SINGLE(GPIOP4, GPIOP4);
983 MS_PIN_DECL_(AB6, SIG_EXPR_LIST_PTR(GPIOP4));
984
985 #define Y7 125
986 SIG_EXPR_LIST_DECL_SINGLE(GPIOP5, GPIOP5);
987 MS_PIN_DECL_(Y7, SIG_EXPR_LIST_PTR(GPIOP5));
988
989 #define AA7 126
990 SSSF_PIN_DECL(AA7, GPIOP6, BMCINT, SIG_DESC_SET(SCU88, 22));
991
992 #define AB7 127
993 SSSF_PIN_DECL(AB7, GPIOP7, FLACK, SIG_DESC_SET(SCU88, 23));
994
995 #define I2C3_DESC       SIG_DESC_SET(SCU90, 16)
996
997 #define D3 128
998 SIG_EXPR_LIST_DECL_SINGLE(SCL3, I2C3, I2C3_DESC);
999 SS_PIN_DECL(D3, GPIOQ0, SCL3);
1000
1001 #define C2 129
1002 SIG_EXPR_LIST_DECL_SINGLE(SDA3, I2C3, I2C3_DESC);
1003 SS_PIN_DECL(C2, GPIOQ1, SDA3);
1004
1005 FUNC_GROUP_DECL(I2C3, D3, C2);
1006
1007 #define I2C4_DESC       SIG_DESC_SET(SCU90, 17)
1008
1009 #define B1 130
1010 SIG_EXPR_LIST_DECL_SINGLE(SCL4, I2C4, I2C4_DESC);
1011 SS_PIN_DECL(B1, GPIOQ2, SCL4);
1012
1013 #define F5 131
1014 SIG_EXPR_LIST_DECL_SINGLE(SDA4, I2C4, I2C4_DESC);
1015 SS_PIN_DECL(F5, GPIOQ3, SDA4);
1016
1017 FUNC_GROUP_DECL(I2C4, B1, F5);
1018
1019 #define I2C14_DESC      SIG_DESC_SET(SCU90, 27)
1020
1021 #define H4 132
1022 SIG_EXPR_LIST_DECL_SINGLE(SCL14, I2C14, I2C14_DESC);
1023 SS_PIN_DECL(H4, GPIOQ4, SCL14);
1024
1025 #define H3 133
1026 SIG_EXPR_LIST_DECL_SINGLE(SDA14, I2C14, I2C14_DESC);
1027 SS_PIN_DECL(H3, GPIOQ5, SDA14);
1028
1029 FUNC_GROUP_DECL(I2C14, H4, H3);
1030
1031 /*
1032  * There are several opportunities to document USB port 4 in the datasheet, but
1033  * it is only mentioned in one location. Particularly, the Multi-function Pins
1034  * Mapping and Control table in the datasheet elides the signal names,
1035  * suggesting that port 4 may not actually be functional. As such we define the
1036  * signal names and control bit, but don't export the capability's function or
1037  * group.
1038  */
1039 #define USB11H3_DESC    SIG_DESC_SET(SCU90, 28)
1040
1041 #define H2 134
1042 SIG_EXPR_LIST_DECL_SINGLE(USB11HDP3, USB11H3, USB11H3_DESC);
1043 SS_PIN_DECL(H2, GPIOQ6, USB11HDP3);
1044
1045 #define H1 135
1046 SIG_EXPR_LIST_DECL_SINGLE(USB11HDN3, USB11H3, USB11H3_DESC);
1047 SS_PIN_DECL(H1, GPIOQ7, USB11HDN3);
1048
1049 #define V20 136
1050 SSSF_PIN_DECL(V20, GPIOR0, ROMCS1, SIG_DESC_SET(SCU88, 24));
1051
1052 #define W21 137
1053 SSSF_PIN_DECL(W21, GPIOR1, ROMCS2, SIG_DESC_SET(SCU88, 25));
1054
1055 #define Y22 138
1056 SSSF_PIN_DECL(Y22, GPIOR2, ROMCS3, SIG_DESC_SET(SCU88, 26));
1057
1058 #define U19 139
1059 SSSF_PIN_DECL(U19, GPIOR3, ROMCS4, SIG_DESC_SET(SCU88, 27));
1060
1061 #define VPOOFF0_DESC    { ASPEED_IP_SCU, SCU94, GENMASK(1, 0), 0, 0 }
1062 #define VPO12_DESC      { ASPEED_IP_SCU, SCU94, GENMASK(1, 0), 1, 0 }
1063 #define VPO24_DESC      { ASPEED_IP_SCU, SCU94, GENMASK(1, 0), 2, 0 }
1064 #define VPOOFF1_DESC    { ASPEED_IP_SCU, SCU94, GENMASK(1, 0), 3, 0 }
1065 #define VPO_OFF_12      { ASPEED_IP_SCU, SCU94, 0x2, 0, 0 }
1066 #define VPO_24_OFF      SIG_DESC_SET(SCU94, 1)
1067
1068 #define V21 140
1069 #define V21_DESC        SIG_DESC_SET(SCU88, 28)
1070 SIG_EXPR_DECL(ROMA24, ROM8, V21_DESC, VPO_OFF_12);
1071 SIG_EXPR_DECL(ROMA24, ROM16, V21_DESC, VPO_OFF_12);
1072 SIG_EXPR_DECL(ROMA24, ROM16S, V21_DESC, VPO_OFF_12);
1073 SIG_EXPR_LIST_DECL(ROMA24, SIG_EXPR_PTR(ROMA24, ROM8),
1074                 SIG_EXPR_PTR(ROMA24, ROM16),
1075                 SIG_EXPR_PTR(ROMA24, ROM16S));
1076 SIG_EXPR_LIST_DECL_SINGLE(VPOR6, VPO24, V21_DESC, VPO_24_OFF);
1077 MS_PIN_DECL(V21, GPIOR4, ROMA24, VPOR6);
1078
1079 #define W22 141
1080 #define W22_DESC        SIG_DESC_SET(SCU88, 29)
1081 SIG_EXPR_DECL(ROMA25, ROM8, W22_DESC, VPO_OFF_12);
1082 SIG_EXPR_DECL(ROMA25, ROM16, W22_DESC, VPO_OFF_12);
1083 SIG_EXPR_DECL(ROMA25, ROM16S, W22_DESC, VPO_OFF_12);
1084 SIG_EXPR_LIST_DECL(ROMA25, SIG_EXPR_PTR(ROMA25, ROM8),
1085                 SIG_EXPR_PTR(ROMA25, ROM16),
1086                 SIG_EXPR_PTR(ROMA25, ROM16S));
1087 SIG_EXPR_LIST_DECL_SINGLE(VPOR7, VPO24, W22_DESC, VPO_24_OFF);
1088 MS_PIN_DECL(W22, GPIOR5, ROMA25, VPOR7);
1089
1090 #define C6 142
1091 SIG_EXPR_LIST_DECL_SINGLE(MDC1, MDIO1, SIG_DESC_SET(SCU88, 30));
1092 SS_PIN_DECL(C6, GPIOR6, MDC1);
1093
1094 #define A5 143
1095 SIG_EXPR_LIST_DECL_SINGLE(MDIO1, MDIO1, SIG_DESC_SET(SCU88, 31));
1096 SS_PIN_DECL(A5, GPIOR7, MDIO1);
1097
1098 FUNC_GROUP_DECL(MDIO1, C6, A5);
1099
1100 #define U21 144
1101 #define U21_DESC        SIG_DESC_SET(SCU8C, 0)
1102 SIG_EXPR_DECL(ROMD4, ROM8, U21_DESC, VPOOFF0_DESC);
1103 SIG_EXPR_DECL(ROMD4, ROM16, U21_DESC, VPOOFF0_DESC);
1104 SIG_EXPR_DECL(ROMD4, ROM16S, U21_DESC, VPOOFF0_DESC);
1105 SIG_EXPR_LIST_DECL(ROMD4, SIG_EXPR_PTR(ROMD4, ROM8),
1106                 SIG_EXPR_PTR(ROMD4, ROM16),
1107                 SIG_EXPR_PTR(ROMD4, ROM16S));
1108 SIG_EXPR_DECL(VPODE, VPO12, U21_DESC, VPO12_DESC);
1109 SIG_EXPR_DECL(VPODE, VPO24, U21_DESC, VPO12_DESC);
1110 SIG_EXPR_LIST_DECL_DUAL(VPODE, VPO12, VPO24);
1111 MS_PIN_DECL(U21, GPIOS0, ROMD4, VPODE);
1112
1113 #define T19 145
1114 #define T19_DESC        SIG_DESC_SET(SCU8C, 1)
1115 SIG_EXPR_DECL(ROMD5, ROM8, T19_DESC, VPOOFF0_DESC);
1116 SIG_EXPR_DECL(ROMD5, ROM16, T19_DESC, VPOOFF0_DESC);
1117 SIG_EXPR_DECL(ROMD5, ROM16S, T19_DESC, VPOOFF0_DESC);
1118 SIG_EXPR_LIST_DECL(ROMD5, SIG_EXPR_PTR(ROMD5, ROM8),
1119                 SIG_EXPR_PTR(ROMD5, ROM16),
1120                 SIG_EXPR_PTR(ROMD5, ROM16S));
1121 SIG_EXPR_DECL(VPOHS, VPO12, T19_DESC, VPO12_DESC);
1122 SIG_EXPR_DECL(VPOHS, VPO24, T19_DESC, VPO24_DESC);
1123 SIG_EXPR_LIST_DECL_DUAL(VPOHS, VPO12, VPO24);
1124 MS_PIN_DECL(T19, GPIOS1, ROMD5, VPOHS);
1125
1126 #define V22 146
1127 #define V22_DESC        SIG_DESC_SET(SCU8C, 2)
1128 SIG_EXPR_DECL(ROMD6, ROM8, V22_DESC, VPOOFF0_DESC);
1129 SIG_EXPR_DECL(ROMD6, ROM16, V22_DESC, VPOOFF0_DESC);
1130 SIG_EXPR_DECL(ROMD6, ROM16S, V22_DESC, VPOOFF0_DESC);
1131 SIG_EXPR_LIST_DECL(ROMD6, SIG_EXPR_PTR(ROMD6, ROM8),
1132                 SIG_EXPR_PTR(ROMD6, ROM16),
1133                 SIG_EXPR_PTR(ROMD6, ROM16S));
1134 SIG_EXPR_DECL(VPOVS, VPO12, V22_DESC, VPO12_DESC);
1135 SIG_EXPR_DECL(VPOVS, VPO24, V22_DESC, VPO24_DESC);
1136 SIG_EXPR_LIST_DECL_DUAL(VPOVS, VPO12, VPO24);
1137 MS_PIN_DECL(V22, GPIOS2, ROMD6, VPOVS);
1138
1139 #define U20 147
1140 #define U20_DESC        SIG_DESC_SET(SCU8C, 3)
1141 SIG_EXPR_DECL(ROMD7, ROM8, U20_DESC, VPOOFF0_DESC);
1142 SIG_EXPR_DECL(ROMD7, ROM16, U20_DESC, VPOOFF0_DESC);
1143 SIG_EXPR_DECL(ROMD7, ROM16S, U20_DESC, VPOOFF0_DESC);
1144 SIG_EXPR_LIST_DECL(ROMD7, SIG_EXPR_PTR(ROMD7, ROM8),
1145                 SIG_EXPR_PTR(ROMD7, ROM16),
1146                 SIG_EXPR_PTR(ROMD7, ROM16S));
1147 SIG_EXPR_DECL(VPOCLK, VPO12, U20_DESC, VPO12_DESC);
1148 SIG_EXPR_DECL(VPOCLK, VPO24, U20_DESC, VPO24_DESC);
1149 SIG_EXPR_LIST_DECL_DUAL(VPOCLK, VPO12, VPO24);
1150 MS_PIN_DECL(U20, GPIOS3, ROMD7, VPOCLK);
1151
1152 #define R18 148
1153 #define ROMOE_DESC      SIG_DESC_SET(SCU8C, 4)
1154 SIG_EXPR_LIST_DECL_SINGLE(GPIOS4, GPIOS4);
1155 SIG_EXPR_DECL(ROMOE, ROM8, ROMOE_DESC);
1156 SIG_EXPR_DECL(ROMOE, ROM16, ROMOE_DESC);
1157 SIG_EXPR_DECL(ROMOE, ROM16S, ROMOE_DESC);
1158 SIG_EXPR_LIST_DECL(ROMOE, SIG_EXPR_PTR(ROMOE, ROM8),
1159                 SIG_EXPR_PTR(ROMOE, ROM16),
1160                 SIG_EXPR_PTR(ROMOE, ROM16S));
1161 MS_PIN_DECL_(R18, SIG_EXPR_LIST_PTR(ROMOE), SIG_EXPR_LIST_PTR(GPIOS4));
1162
1163 #define N21 149
1164 #define ROMWE_DESC      SIG_DESC_SET(SCU8C, 5)
1165 SIG_EXPR_LIST_DECL_SINGLE(GPIOS5, GPIOS5);
1166 SIG_EXPR_DECL(ROMWE, ROM8, ROMWE_DESC);
1167 SIG_EXPR_DECL(ROMWE, ROM16, ROMWE_DESC);
1168 SIG_EXPR_DECL(ROMWE, ROM16S, ROMWE_DESC);
1169 SIG_EXPR_LIST_DECL(ROMWE, SIG_EXPR_PTR(ROMWE, ROM8),
1170                 SIG_EXPR_PTR(ROMWE, ROM16),
1171                 SIG_EXPR_PTR(ROMWE, ROM16S));
1172 MS_PIN_DECL_(N21, SIG_EXPR_LIST_PTR(ROMWE), SIG_EXPR_LIST_PTR(GPIOS5));
1173
1174 #define L22 150
1175 #define L22_DESC        SIG_DESC_SET(SCU8C, 6)
1176 SIG_EXPR_DECL(ROMA22, ROM8, L22_DESC, VPO_OFF_12);
1177 SIG_EXPR_DECL(ROMA22, ROM16, L22_DESC, VPO_OFF_12);
1178 SIG_EXPR_DECL(ROMA22, ROM16S, L22_DESC, VPO_OFF_12);
1179 SIG_EXPR_LIST_DECL(ROMA22, SIG_EXPR_PTR(ROMA22, ROM8),
1180                 SIG_EXPR_PTR(ROMA22, ROM16),
1181                 SIG_EXPR_PTR(ROMA22, ROM16S));
1182 SIG_EXPR_LIST_DECL_SINGLE(VPOR4, VPO24, L22_DESC, VPO_24_OFF);
1183 MS_PIN_DECL(L22, GPIOS6, ROMA22, VPOR4);
1184
1185 #define K18 151
1186 #define K18_DESC        SIG_DESC_SET(SCU8C, 7)
1187 SIG_EXPR_DECL(ROMA23, ROM8, K18_DESC, VPO_OFF_12);
1188 SIG_EXPR_DECL(ROMA23, ROM16, K18_DESC, VPO_OFF_12);
1189 SIG_EXPR_DECL(ROMA23, ROM16S, K18_DESC, VPO_OFF_12);
1190 SIG_EXPR_LIST_DECL(ROMA23, SIG_EXPR_PTR(ROMA23, ROM8),
1191                 SIG_EXPR_PTR(ROMA23, ROM16),
1192                 SIG_EXPR_PTR(ROMA23, ROM16S));
1193 SIG_EXPR_LIST_DECL_SINGLE(VPOR5, VPO24, K18_DESC, VPO_24_OFF);
1194 MS_PIN_DECL(K18, GPIOS7, ROMA23, VPOR5);
1195
1196 #define RMII1_DESC      SIG_DESC_BIT(HW_STRAP1, 6, 0)
1197
1198 #define A12 152
1199 SIG_EXPR_LIST_DECL_SINGLE(GPIOT0, GPIOT0, SIG_DESC_SET(SCUA0, 0));
1200 SIG_EXPR_LIST_DECL_SINGLE(RMII1TXEN, RMII1, RMII1_DESC);
1201 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXCK, RGMII1);
1202 MS_PIN_DECL_(A12, SIG_EXPR_LIST_PTR(GPIOT0), SIG_EXPR_LIST_PTR(RMII1TXEN),
1203                 SIG_EXPR_LIST_PTR(RGMII1TXCK));
1204
1205 #define B12 153
1206 SIG_EXPR_LIST_DECL_SINGLE(GPIOT1, GPIOT1, SIG_DESC_SET(SCUA0, 1));
1207 SIG_EXPR_LIST_DECL_SINGLE(DASHB12, RMII1, RMII1_DESC);
1208 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXCTL, RGMII1);
1209 MS_PIN_DECL_(B12, SIG_EXPR_LIST_PTR(GPIOT1), SIG_EXPR_LIST_PTR(DASHB12),
1210                 SIG_EXPR_LIST_PTR(RGMII1TXCTL));
1211
1212 #define C12 154
1213 SIG_EXPR_LIST_DECL_SINGLE(GPIOT2, GPIOT2, SIG_DESC_SET(SCUA0, 2));
1214 SIG_EXPR_LIST_DECL_SINGLE(RMII1TXD0, RMII1, RMII1_DESC);
1215 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD0, RGMII1);
1216 MS_PIN_DECL_(C12, SIG_EXPR_LIST_PTR(GPIOT2), SIG_EXPR_LIST_PTR(RMII1TXD0),
1217                 SIG_EXPR_LIST_PTR(RGMII1TXD0));
1218
1219 #define D12 155
1220 SIG_EXPR_LIST_DECL_SINGLE(GPIOT3, GPIOT3, SIG_DESC_SET(SCUA0, 3));
1221 SIG_EXPR_LIST_DECL_SINGLE(RMII1TXD1, RMII1, RMII1_DESC);
1222 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD1, RGMII1);
1223 MS_PIN_DECL_(D12, SIG_EXPR_LIST_PTR(GPIOT3), SIG_EXPR_LIST_PTR(RMII1TXD1),
1224                 SIG_EXPR_LIST_PTR(RGMII1TXD1));
1225
1226 #define E12 156
1227 SIG_EXPR_LIST_DECL_SINGLE(GPIOT4, GPIOT4, SIG_DESC_SET(SCUA0, 4));
1228 SIG_EXPR_LIST_DECL_SINGLE(DASHE12, RMII1, RMII1_DESC);
1229 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD2, RGMII1);
1230 MS_PIN_DECL_(E12, SIG_EXPR_LIST_PTR(GPIOT4), SIG_EXPR_LIST_PTR(DASHE12),
1231                 SIG_EXPR_LIST_PTR(RGMII1TXD2));
1232
1233 #define A13 157
1234 SIG_EXPR_LIST_DECL_SINGLE(GPIOT5, GPIOT5, SIG_DESC_SET(SCUA0, 5));
1235 SIG_EXPR_LIST_DECL_SINGLE(DASHA13, RMII1, RMII1_DESC);
1236 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD3, RGMII1);
1237 MS_PIN_DECL_(A13, SIG_EXPR_LIST_PTR(GPIOT5), SIG_EXPR_LIST_PTR(DASHA13),
1238                 SIG_EXPR_LIST_PTR(RGMII1TXD3));
1239
1240 #define RMII2_DESC      SIG_DESC_BIT(HW_STRAP1, 7, 0)
1241
1242 #define D9 158
1243 SIG_EXPR_LIST_DECL_SINGLE(GPIOT6, GPIOT6, SIG_DESC_SET(SCUA0, 6));
1244 SIG_EXPR_LIST_DECL_SINGLE(RMII2TXEN, RMII2, RMII2_DESC);
1245 SIG_EXPR_LIST_DECL_SINGLE(RGMII2TXCK, RGMII2);
1246 MS_PIN_DECL_(D9, SIG_EXPR_LIST_PTR(GPIOT6), SIG_EXPR_LIST_PTR(RMII2TXEN),
1247                 SIG_EXPR_LIST_PTR(RGMII2TXCK));
1248
1249 #define E9 159
1250 SIG_EXPR_LIST_DECL_SINGLE(GPIOT7, GPIOT7, SIG_DESC_SET(SCUA0, 7));
1251 SIG_EXPR_LIST_DECL_SINGLE(DASHE9, RMII2, RMII2_DESC);
1252 SIG_EXPR_LIST_DECL_SINGLE(RGMII2TXCTL, RGMII2);
1253 MS_PIN_DECL_(E9, SIG_EXPR_LIST_PTR(GPIOT7), SIG_EXPR_LIST_PTR(DASHE9),
1254                 SIG_EXPR_LIST_PTR(RGMII2TXCTL));
1255
1256 #define A10 160
1257 SIG_EXPR_LIST_DECL_SINGLE(GPIOU0, GPIOU0, SIG_DESC_SET(SCUA0, 8));
1258 SIG_EXPR_LIST_DECL_SINGLE(RMII2TXD0, RMII2, RMII2_DESC);
1259 SIG_EXPR_LIST_DECL_SINGLE(RGMII2TXD0, RGMII2);
1260 MS_PIN_DECL_(A10, SIG_EXPR_LIST_PTR(GPIOU0), SIG_EXPR_LIST_PTR(RMII2TXD0),
1261                 SIG_EXPR_LIST_PTR(RGMII2TXD0));
1262
1263 #define B10 161
1264 SIG_EXPR_LIST_DECL_SINGLE(GPIOU1, GPIOU1, SIG_DESC_SET(SCUA0, 9));
1265 SIG_EXPR_LIST_DECL_SINGLE(RMII2TXD1, RMII2, RMII2_DESC);
1266 SIG_EXPR_LIST_DECL_SINGLE(RGMII2TXD1, RGMII2);
1267 MS_PIN_DECL_(B10, SIG_EXPR_LIST_PTR(GPIOU1), SIG_EXPR_LIST_PTR(RMII2TXD1),
1268                 SIG_EXPR_LIST_PTR(RGMII2TXD1));
1269
1270 #define C10 162
1271 SIG_EXPR_LIST_DECL_SINGLE(GPIOU2, GPIOU2, SIG_DESC_SET(SCUA0, 10));
1272 SIG_EXPR_LIST_DECL_SINGLE(DASHC10, RMII2, RMII2_DESC);
1273 SIG_EXPR_LIST_DECL_SINGLE(RGMII2TXD2, RGMII2);
1274 MS_PIN_DECL_(C10, SIG_EXPR_LIST_PTR(GPIOU2), SIG_EXPR_LIST_PTR(DASHC10),
1275                 SIG_EXPR_LIST_PTR(RGMII2TXD2));
1276
1277 #define D10 163
1278 SIG_EXPR_LIST_DECL_SINGLE(GPIOU3, GPIOU3, SIG_DESC_SET(SCUA0, 11));
1279 SIG_EXPR_LIST_DECL_SINGLE(DASHD10, RMII2, RMII2_DESC);
1280 SIG_EXPR_LIST_DECL_SINGLE(RGMII2TXD3, RGMII2);
1281 MS_PIN_DECL_(D10, SIG_EXPR_LIST_PTR(GPIOU3), SIG_EXPR_LIST_PTR(DASHD10),
1282                 SIG_EXPR_LIST_PTR(RGMII2TXD3));
1283
1284 #define E11 164
1285 SIG_EXPR_LIST_DECL_SINGLE(GPIOU4, GPIOU4, SIG_DESC_SET(SCUA0, 12));
1286 SIG_EXPR_LIST_DECL_SINGLE(RMII1RCLK, RMII1, RMII1_DESC);
1287 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXCK, RGMII1);
1288 MS_PIN_DECL_(E11, SIG_EXPR_LIST_PTR(GPIOU4), SIG_EXPR_LIST_PTR(RMII1RCLK),
1289                 SIG_EXPR_LIST_PTR(RGMII1RXCK));
1290
1291 #define D11 165
1292 SIG_EXPR_LIST_DECL_SINGLE(GPIOU5, GPIOU5, SIG_DESC_SET(SCUA0, 13));
1293 SIG_EXPR_LIST_DECL_SINGLE(DASHD11, RMII1, RMII1_DESC);
1294 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXCTL, RGMII1);
1295 MS_PIN_DECL_(D11, SIG_EXPR_LIST_PTR(GPIOU5), SIG_EXPR_LIST_PTR(DASHD11),
1296                 SIG_EXPR_LIST_PTR(RGMII1RXCTL));
1297
1298 #define C11 166
1299 SIG_EXPR_LIST_DECL_SINGLE(GPIOU6, GPIOU6, SIG_DESC_SET(SCUA0, 14));
1300 SIG_EXPR_LIST_DECL_SINGLE(RMII1RXD0, RMII1, RMII1_DESC);
1301 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD0, RGMII1);
1302 MS_PIN_DECL_(C11, SIG_EXPR_LIST_PTR(GPIOU6), SIG_EXPR_LIST_PTR(RMII1RXD0),
1303                 SIG_EXPR_LIST_PTR(RGMII1RXD0));
1304
1305 #define B11 167
1306 SIG_EXPR_LIST_DECL_SINGLE(GPIOU7, GPIOU7, SIG_DESC_SET(SCUA0, 15));
1307 SIG_EXPR_LIST_DECL_SINGLE(RMII1RXD1, RMII1, RMII1_DESC);
1308 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD1, RGMII1);
1309 MS_PIN_DECL_(B11, SIG_EXPR_LIST_PTR(GPIOU7), SIG_EXPR_LIST_PTR(RMII1RXD1),
1310                 SIG_EXPR_LIST_PTR(RGMII1RXD1));
1311
1312 #define A11 168
1313 SIG_EXPR_LIST_DECL_SINGLE(GPIOV0, GPIOV0, SIG_DESC_SET(SCUA0, 16));
1314 SIG_EXPR_LIST_DECL_SINGLE(RMII1CRSDV, RMII1, RMII1_DESC);
1315 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD2, RGMII1);
1316 MS_PIN_DECL_(A11, SIG_EXPR_LIST_PTR(GPIOV0), SIG_EXPR_LIST_PTR(RMII1CRSDV),
1317                 SIG_EXPR_LIST_PTR(RGMII1RXD2));
1318
1319 #define E10 169
1320 SIG_EXPR_LIST_DECL_SINGLE(GPIOV1, GPIOV1, SIG_DESC_SET(SCUA0, 17));
1321 SIG_EXPR_LIST_DECL_SINGLE(RMII1RXER, RMII1, RMII1_DESC);
1322 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD3, RGMII1);
1323 MS_PIN_DECL_(E10, SIG_EXPR_LIST_PTR(GPIOV1), SIG_EXPR_LIST_PTR(RMII1RXER),
1324                 SIG_EXPR_LIST_PTR(RGMII1RXD3));
1325
1326 #define C9 170
1327 SIG_EXPR_LIST_DECL_SINGLE(GPIOV2, GPIOV2, SIG_DESC_SET(SCUA0, 18));
1328 SIG_EXPR_LIST_DECL_SINGLE(RMII2RCLK, RMII2, RMII2_DESC);
1329 SIG_EXPR_LIST_DECL_SINGLE(RGMII2RXCK, RGMII2);
1330 MS_PIN_DECL_(C9, SIG_EXPR_LIST_PTR(GPIOV2), SIG_EXPR_LIST_PTR(RMII2RCLK),
1331                 SIG_EXPR_LIST_PTR(RGMII2RXCK));
1332
1333 #define B9 171
1334 SIG_EXPR_LIST_DECL_SINGLE(GPIOV3, GPIOV3, SIG_DESC_SET(SCUA0, 19));
1335 SIG_EXPR_LIST_DECL_SINGLE(DASHB9, RMII2, RMII2_DESC);
1336 SIG_EXPR_LIST_DECL_SINGLE(RGMII2RXCTL, RGMII2);
1337 MS_PIN_DECL_(B9, SIG_EXPR_LIST_PTR(GPIOV3), SIG_EXPR_LIST_PTR(DASHB9),
1338                 SIG_EXPR_LIST_PTR(RGMII2RXCTL));
1339
1340 #define A9 172
1341 SIG_EXPR_LIST_DECL_SINGLE(GPIOV4, GPIOV4, SIG_DESC_SET(SCUA0, 20));
1342 SIG_EXPR_LIST_DECL_SINGLE(RMII2RXD0, RMII2, RMII2_DESC);
1343 SIG_EXPR_LIST_DECL_SINGLE(RGMII2RXD0, RGMII2);
1344 MS_PIN_DECL_(A9, SIG_EXPR_LIST_PTR(GPIOV4), SIG_EXPR_LIST_PTR(RMII2RXD0),
1345                 SIG_EXPR_LIST_PTR(RGMII2RXD0));
1346
1347 #define E8 173
1348 SIG_EXPR_LIST_DECL_SINGLE(GPIOV5, GPIOV5, SIG_DESC_SET(SCUA0, 21));
1349 SIG_EXPR_LIST_DECL_SINGLE(RMII2RXD1, RMII2, RMII2_DESC);
1350 SIG_EXPR_LIST_DECL_SINGLE(RGMII2RXD1, RGMII2);
1351 MS_PIN_DECL_(E8, SIG_EXPR_LIST_PTR(GPIOV5), SIG_EXPR_LIST_PTR(RMII2RXD1),
1352                 SIG_EXPR_LIST_PTR(RGMII2RXD1));
1353
1354 #define D8 174
1355 SIG_EXPR_LIST_DECL_SINGLE(GPIOV6, GPIOV6, SIG_DESC_SET(SCUA0, 22));
1356 SIG_EXPR_LIST_DECL_SINGLE(RMII2CRSDV, RMII2, RMII2_DESC);
1357 SIG_EXPR_LIST_DECL_SINGLE(RGMII2RXD2, RGMII2);
1358 MS_PIN_DECL_(D8, SIG_EXPR_LIST_PTR(GPIOV6), SIG_EXPR_LIST_PTR(RMII2CRSDV),
1359                 SIG_EXPR_LIST_PTR(RGMII2RXD2));
1360
1361 #define C8 175
1362 SIG_EXPR_LIST_DECL_SINGLE(GPIOV7, GPIOV7, SIG_DESC_SET(SCUA0, 23));
1363 SIG_EXPR_LIST_DECL_SINGLE(RMII2RXER, RMII2, RMII2_DESC);
1364 SIG_EXPR_LIST_DECL_SINGLE(RGMII2RXD3, RGMII2);
1365 MS_PIN_DECL_(C8, SIG_EXPR_LIST_PTR(GPIOV7), SIG_EXPR_LIST_PTR(RMII2RXER),
1366                 SIG_EXPR_LIST_PTR(RGMII2RXD3));
1367
1368 FUNC_GROUP_DECL(RMII1, A12, B12, C12, D12, E12, A13, E11, D11, C11, B11, A11,
1369                 E10);
1370 FUNC_GROUP_DECL(RGMII1, A12, B12, C12, D12, E12, A13, E11, D11, C11, B11, A11,
1371                 E10);
1372
1373 FUNC_GROUP_DECL(RMII2, D9, E9, A10, B10, C10, D10, C9, B9, A9, E8, D8, C8);
1374 FUNC_GROUP_DECL(RGMII2, D9, E9, A10, B10, C10, D10, C9, B9, A9, E8, D8, C8);
1375
1376 #define L5 176
1377 SIG_EXPR_LIST_DECL_SINGLE(GPIOW0, GPIOW0, SIG_DESC_SET(SCUA0, 24));
1378 SIG_EXPR_LIST_DECL_SINGLE(ADC0, ADC0);
1379 MS_PIN_DECL_(L5, SIG_EXPR_LIST_PTR(GPIOW0), SIG_EXPR_LIST_PTR(ADC0));
1380 FUNC_GROUP_DECL(ADC0, L5);
1381
1382 #define L4 177
1383 SIG_EXPR_LIST_DECL_SINGLE(GPIOW1, GPIOW1, SIG_DESC_SET(SCUA0, 25));
1384 SIG_EXPR_LIST_DECL_SINGLE(ADC1, ADC1);
1385 MS_PIN_DECL_(L4, SIG_EXPR_LIST_PTR(GPIOW1), SIG_EXPR_LIST_PTR(ADC1));
1386 FUNC_GROUP_DECL(ADC1, L4);
1387
1388 #define L3 178
1389 SIG_EXPR_LIST_DECL_SINGLE(GPIOW2, GPIOW2, SIG_DESC_SET(SCUA0, 26));
1390 SIG_EXPR_LIST_DECL_SINGLE(ADC2, ADC2);
1391 MS_PIN_DECL_(L3, SIG_EXPR_LIST_PTR(GPIOW2), SIG_EXPR_LIST_PTR(ADC2));
1392 FUNC_GROUP_DECL(ADC2, L3);
1393
1394 #define L2 179
1395 SIG_EXPR_LIST_DECL_SINGLE(GPIOW3, GPIOW3, SIG_DESC_SET(SCUA0, 27));
1396 SIG_EXPR_LIST_DECL_SINGLE(ADC3, ADC3);
1397 MS_PIN_DECL_(L2, SIG_EXPR_LIST_PTR(GPIOW3), SIG_EXPR_LIST_PTR(ADC3));
1398 FUNC_GROUP_DECL(ADC3, L2);
1399
1400 #define L1 180
1401 SIG_EXPR_LIST_DECL_SINGLE(GPIOW4, GPIOW4, SIG_DESC_SET(SCUA0, 28));
1402 SIG_EXPR_LIST_DECL_SINGLE(ADC4, ADC4);
1403 MS_PIN_DECL_(L1, SIG_EXPR_LIST_PTR(GPIOW4), SIG_EXPR_LIST_PTR(ADC4));
1404 FUNC_GROUP_DECL(ADC4, L1);
1405
1406 #define M5 181
1407 SIG_EXPR_LIST_DECL_SINGLE(GPIOW5, GPIOW5, SIG_DESC_SET(SCUA0, 29));
1408 SIG_EXPR_LIST_DECL_SINGLE(ADC5, ADC5);
1409 MS_PIN_DECL_(M5, SIG_EXPR_LIST_PTR(GPIOW5), SIG_EXPR_LIST_PTR(ADC5));
1410 FUNC_GROUP_DECL(ADC5, M5);
1411
1412 #define M4 182
1413 SIG_EXPR_LIST_DECL_SINGLE(GPIOW6, GPIOW6, SIG_DESC_SET(SCUA0, 30));
1414 SIG_EXPR_LIST_DECL_SINGLE(ADC6, ADC6);
1415 MS_PIN_DECL_(M4, SIG_EXPR_LIST_PTR(GPIOW6), SIG_EXPR_LIST_PTR(ADC6));
1416 FUNC_GROUP_DECL(ADC6, M4);
1417
1418 #define M3 183
1419 SIG_EXPR_LIST_DECL_SINGLE(GPIOW7, GPIOW7, SIG_DESC_SET(SCUA0, 31));
1420 SIG_EXPR_LIST_DECL_SINGLE(ADC7, ADC7);
1421 MS_PIN_DECL_(M3, SIG_EXPR_LIST_PTR(GPIOW7), SIG_EXPR_LIST_PTR(ADC7));
1422 FUNC_GROUP_DECL(ADC7, M3);
1423
1424 #define M2 184
1425 SIG_EXPR_LIST_DECL_SINGLE(GPIOX0, GPIOX0, SIG_DESC_SET(SCUA4, 0));
1426 SIG_EXPR_LIST_DECL_SINGLE(ADC8, ADC8);
1427 MS_PIN_DECL_(M2, SIG_EXPR_LIST_PTR(GPIOX0), SIG_EXPR_LIST_PTR(ADC8));
1428 FUNC_GROUP_DECL(ADC8, M2);
1429
1430 #define M1 185
1431 SIG_EXPR_LIST_DECL_SINGLE(GPIOX1, GPIOX1, SIG_DESC_SET(SCUA4, 1));
1432 SIG_EXPR_LIST_DECL_SINGLE(ADC9, ADC9);
1433 MS_PIN_DECL_(M1, SIG_EXPR_LIST_PTR(GPIOX1), SIG_EXPR_LIST_PTR(ADC9));
1434 FUNC_GROUP_DECL(ADC9, M1);
1435
1436 #define N5 186
1437 SIG_EXPR_LIST_DECL_SINGLE(GPIOX2, GPIOX2, SIG_DESC_SET(SCUA4, 2));
1438 SIG_EXPR_LIST_DECL_SINGLE(ADC10, ADC10);
1439 MS_PIN_DECL_(N5, SIG_EXPR_LIST_PTR(GPIOX2), SIG_EXPR_LIST_PTR(ADC10));
1440 FUNC_GROUP_DECL(ADC10, N5);
1441
1442 #define N4 187
1443 SIG_EXPR_LIST_DECL_SINGLE(GPIOX3, GPIOX3, SIG_DESC_SET(SCUA4, 3));
1444 SIG_EXPR_LIST_DECL_SINGLE(ADC11, ADC11);
1445 MS_PIN_DECL_(N4, SIG_EXPR_LIST_PTR(GPIOX3), SIG_EXPR_LIST_PTR(ADC11));
1446 FUNC_GROUP_DECL(ADC11, N4);
1447
1448 #define N3 188
1449 SIG_EXPR_LIST_DECL_SINGLE(GPIOX4, GPIOX4, SIG_DESC_SET(SCUA4, 4));
1450 SIG_EXPR_LIST_DECL_SINGLE(ADC12, ADC12);
1451 MS_PIN_DECL_(N3, SIG_EXPR_LIST_PTR(GPIOX4), SIG_EXPR_LIST_PTR(ADC12));
1452 FUNC_GROUP_DECL(ADC12, N3);
1453
1454 #define N2 189
1455 SIG_EXPR_LIST_DECL_SINGLE(GPIOX5, GPIOX5, SIG_DESC_SET(SCUA4, 5));
1456 SIG_EXPR_LIST_DECL_SINGLE(ADC13, ADC13);
1457 MS_PIN_DECL_(N2, SIG_EXPR_LIST_PTR(GPIOX5), SIG_EXPR_LIST_PTR(ADC13));
1458 FUNC_GROUP_DECL(ADC13, N2);
1459
1460 #define N1 190
1461 SIG_EXPR_LIST_DECL_SINGLE(GPIOX6, GPIOX6, SIG_DESC_SET(SCUA4, 6));
1462 SIG_EXPR_LIST_DECL_SINGLE(ADC14, ADC14);
1463 MS_PIN_DECL_(N1, SIG_EXPR_LIST_PTR(GPIOX6), SIG_EXPR_LIST_PTR(ADC14));
1464 FUNC_GROUP_DECL(ADC14, N1);
1465
1466 #define P5 191
1467 SIG_EXPR_LIST_DECL_SINGLE(GPIOX7, GPIOX7, SIG_DESC_SET(SCUA4, 7));
1468 SIG_EXPR_LIST_DECL_SINGLE(ADC15, ADC15);
1469 MS_PIN_DECL_(P5, SIG_EXPR_LIST_PTR(GPIOX7), SIG_EXPR_LIST_PTR(ADC15));
1470 FUNC_GROUP_DECL(ADC15, P5);
1471
1472 #define C21 192
1473 SIG_EXPR_DECL(SIOS3, SIOS3, SIG_DESC_SET(SCUA4, 8));
1474 SIG_EXPR_DECL(SIOS3, ACPI, ACPI_DESC);
1475 SIG_EXPR_LIST_DECL_DUAL(SIOS3, SIOS3, ACPI);
1476 SS_PIN_DECL(C21, GPIOY0, SIOS3);
1477 FUNC_GROUP_DECL(SIOS3, C21);
1478
1479 #define F20 193
1480 SIG_EXPR_DECL(SIOS5, SIOS5, SIG_DESC_SET(SCUA4, 9));
1481 SIG_EXPR_DECL(SIOS5, ACPI, ACPI_DESC);
1482 SIG_EXPR_LIST_DECL_DUAL(SIOS5, SIOS5, ACPI);
1483 SS_PIN_DECL(F20, GPIOY1, SIOS5);
1484 FUNC_GROUP_DECL(SIOS5, F20);
1485
1486 #define G20 194
1487 SIG_EXPR_DECL(SIOPWREQ, SIOPWREQ, SIG_DESC_SET(SCUA4, 10));
1488 SIG_EXPR_DECL(SIOPWREQ, ACPI, ACPI_DESC);
1489 SIG_EXPR_LIST_DECL_DUAL(SIOPWREQ, SIOPWREQ, ACPI);
1490 SS_PIN_DECL(G20, GPIOY2, SIOPWREQ);
1491 FUNC_GROUP_DECL(SIOPWREQ, G20);
1492
1493 #define K20 195
1494 SIG_EXPR_DECL(SIOONCTRL, SIOONCTRL, SIG_DESC_SET(SCUA4, 11));
1495 SIG_EXPR_DECL(SIOONCTRL, ACPI, ACPI_DESC);
1496 SIG_EXPR_LIST_DECL_DUAL(SIOONCTRL, SIOONCTRL, ACPI);
1497 SS_PIN_DECL(K20, GPIOY3, SIOONCTRL);
1498 FUNC_GROUP_DECL(SIOONCTRL, K20);
1499
1500 FUNC_GROUP_DECL(ACPI, B19, A20, D17, A19, C21, F20, G20, K20);
1501
1502 #define R22 200
1503 #define R22_DESC        SIG_DESC_SET(SCUA4, 16)
1504 SIG_EXPR_DECL(ROMA2, ROM8, R22_DESC, VPOOFF0_DESC);
1505 SIG_EXPR_DECL(ROMA2, ROM16, R22_DESC, VPOOFF0_DESC);
1506 SIG_EXPR_LIST_DECL_DUAL(ROMA2, ROM8, ROM16);
1507 SIG_EXPR_DECL(VPOB0, VPO12, R22_DESC, VPO12_DESC);
1508 SIG_EXPR_DECL(VPOB0, VPO24, R22_DESC, VPO24_DESC);
1509 SIG_EXPR_DECL(VPOB0, VPOOFF1, R22_DESC, VPOOFF1_DESC);
1510 SIG_EXPR_LIST_DECL(VPOB0, SIG_EXPR_PTR(VPOB0, VPO12),
1511                 SIG_EXPR_PTR(VPOB0, VPO24), SIG_EXPR_PTR(VPOB0, VPOOFF1));
1512 MS_PIN_DECL(R22, GPIOZ0, ROMA2, VPOB0);
1513
1514 #define P18 201
1515 #define P18_DESC        SIG_DESC_SET(SCUA4, 17)
1516 SIG_EXPR_DECL(ROMA3, ROM8, P18_DESC, VPOOFF0_DESC);
1517 SIG_EXPR_DECL(ROMA3, ROM16, P18_DESC, VPOOFF0_DESC);
1518 SIG_EXPR_LIST_DECL_DUAL(ROMA3, ROM8, ROM16);
1519 SIG_EXPR_DECL(VPOB1, VPO12, P18_DESC, VPO12_DESC);
1520 SIG_EXPR_DECL(VPOB1, VPO24, P18_DESC, VPO24_DESC);
1521 SIG_EXPR_DECL(VPOB1, VPOOFF1, P18_DESC, VPOOFF1_DESC);
1522 SIG_EXPR_LIST_DECL(VPOB1, SIG_EXPR_PTR(VPOB1, VPO12),
1523                 SIG_EXPR_PTR(VPOB1, VPO24), SIG_EXPR_PTR(VPOB1, VPOOFF1));
1524 MS_PIN_DECL(P18, GPIOZ1, ROMA3, VPOB1);
1525
1526 #define P19 202
1527 #define P19_DESC        SIG_DESC_SET(SCUA4, 18)
1528 SIG_EXPR_DECL(ROMA4, ROM8, P19_DESC, VPOOFF0_DESC);
1529 SIG_EXPR_DECL(ROMA4, ROM16, P19_DESC, VPOOFF0_DESC);
1530 SIG_EXPR_LIST_DECL_DUAL(ROMA4, ROM8, ROM16);
1531 SIG_EXPR_DECL(VPOB2, VPO12, P19_DESC, VPO12_DESC);
1532 SIG_EXPR_DECL(VPOB2, VPO24, P19_DESC, VPO24_DESC);
1533 SIG_EXPR_DECL(VPOB2, VPOOFF1, P19_DESC, VPOOFF1_DESC);
1534 SIG_EXPR_LIST_DECL(VPOB2, SIG_EXPR_PTR(VPOB2, VPO12),
1535                 SIG_EXPR_PTR(VPOB2, VPO24), SIG_EXPR_PTR(VPOB2, VPOOFF1));
1536 MS_PIN_DECL(P19, GPIOZ2, ROMA4, VPOB2);
1537
1538 #define P20 203
1539 #define P20_DESC        SIG_DESC_SET(SCUA4, 19)
1540 SIG_EXPR_DECL(ROMA5, ROM8, P20_DESC, VPOOFF0_DESC);
1541 SIG_EXPR_DECL(ROMA5, ROM16, P20_DESC, VPOOFF0_DESC);
1542 SIG_EXPR_LIST_DECL_DUAL(ROMA5, ROM8, ROM16);
1543 SIG_EXPR_DECL(VPOB3, VPO12, P20_DESC, VPO12_DESC);
1544 SIG_EXPR_DECL(VPOB3, VPO24, P20_DESC, VPO24_DESC);
1545 SIG_EXPR_DECL(VPOB3, VPOOFF1, P20_DESC, VPOOFF1_DESC);
1546 SIG_EXPR_LIST_DECL(VPOB3, SIG_EXPR_PTR(VPOB3, VPO12),
1547                 SIG_EXPR_PTR(VPOB3, VPO24), SIG_EXPR_PTR(VPOB3, VPOOFF1));
1548 MS_PIN_DECL(P20, GPIOZ3, ROMA5, VPOB3);
1549
1550 #define P21 204
1551 #define P21_DESC        SIG_DESC_SET(SCUA4, 20)
1552 SIG_EXPR_DECL(ROMA6, ROM8, P21_DESC, VPOOFF0_DESC);
1553 SIG_EXPR_DECL(ROMA6, ROM16, P21_DESC, VPOOFF0_DESC);
1554 SIG_EXPR_LIST_DECL_DUAL(ROMA6, ROM8, ROM16);
1555 SIG_EXPR_DECL(VPOB4, VPO12, P21_DESC, VPO12_DESC);
1556 SIG_EXPR_DECL(VPOB4, VPO24, P21_DESC, VPO24_DESC);
1557 SIG_EXPR_DECL(VPOB4, VPOOFF1, P21_DESC, VPOOFF1_DESC);
1558 SIG_EXPR_LIST_DECL(VPOB4, SIG_EXPR_PTR(VPOB4, VPO12),
1559                 SIG_EXPR_PTR(VPOB4, VPO24), SIG_EXPR_PTR(VPOB4, VPOOFF1));
1560 MS_PIN_DECL(P21, GPIOZ4, ROMA6, VPOB4);
1561
1562 #define P22 205
1563 #define P22_DESC        SIG_DESC_SET(SCUA4, 21)
1564 SIG_EXPR_DECL(ROMA7, ROM8, P22_DESC, VPOOFF0_DESC);
1565 SIG_EXPR_DECL(ROMA7, ROM16, P22_DESC, VPOOFF0_DESC);
1566 SIG_EXPR_LIST_DECL_DUAL(ROMA7, ROM8, ROM16);
1567 SIG_EXPR_DECL(VPOB5, VPO12, P22_DESC, VPO12_DESC);
1568 SIG_EXPR_DECL(VPOB5, VPO24, P22_DESC, VPO24_DESC);
1569 SIG_EXPR_DECL(VPOB5, VPOOFF1, P22_DESC, VPOOFF1_DESC);
1570 SIG_EXPR_LIST_DECL(VPOB5, SIG_EXPR_PTR(VPOB5, VPO12),
1571                 SIG_EXPR_PTR(VPOB5, VPO24), SIG_EXPR_PTR(VPOB5, VPOOFF1));
1572 MS_PIN_DECL(P22, GPIOZ5, ROMA7, VPOB5);
1573
1574 #define M19 206
1575 #define M19_DESC        SIG_DESC_SET(SCUA4, 22)
1576 SIG_EXPR_DECL(ROMA8, ROM8, M19_DESC, VPOOFF0_DESC);
1577 SIG_EXPR_DECL(ROMA8, ROM16, M19_DESC, VPOOFF0_DESC);
1578 SIG_EXPR_LIST_DECL_DUAL(ROMA8, ROM8, ROM16);
1579 SIG_EXPR_DECL(VPOB6, VPO12, M19_DESC, VPO12_DESC);
1580 SIG_EXPR_DECL(VPOB6, VPO24, M19_DESC, VPO24_DESC);
1581 SIG_EXPR_DECL(VPOB6, VPOOFF1, M19_DESC, VPOOFF1_DESC);
1582 SIG_EXPR_LIST_DECL(VPOB6, SIG_EXPR_PTR(VPOB6, VPO12),
1583                 SIG_EXPR_PTR(VPOB6, VPO24), SIG_EXPR_PTR(VPOB6, VPOOFF1));
1584 MS_PIN_DECL(M19, GPIOZ6, ROMA8, VPOB6);
1585
1586 #define M20 207
1587 #define M20_DESC        SIG_DESC_SET(SCUA4, 23)
1588 SIG_EXPR_DECL(ROMA9, ROM8, M20_DESC, VPOOFF0_DESC);
1589 SIG_EXPR_DECL(ROMA9, ROM16, M20_DESC, VPOOFF0_DESC);
1590 SIG_EXPR_LIST_DECL_DUAL(ROMA9, ROM8, ROM16);
1591 SIG_EXPR_DECL(VPOB7, VPO12, M20_DESC, VPO12_DESC);
1592 SIG_EXPR_DECL(VPOB7, VPO24, M20_DESC, VPO24_DESC);
1593 SIG_EXPR_DECL(VPOB7, VPOOFF1, M20_DESC, VPOOFF1_DESC);
1594 SIG_EXPR_LIST_DECL(VPOB7, SIG_EXPR_PTR(VPOB7, VPO12),
1595                 SIG_EXPR_PTR(VPOB7, VPO24), SIG_EXPR_PTR(VPOB7, VPOOFF1));
1596 MS_PIN_DECL(M20, GPIOZ7, ROMA9, VPOB7);
1597
1598 #define M21 208
1599 #define M21_DESC        SIG_DESC_SET(SCUA4, 24)
1600 SIG_EXPR_DECL(ROMA10, ROM8, M21_DESC, VPOOFF0_DESC);
1601 SIG_EXPR_DECL(ROMA10, ROM16, M21_DESC, VPOOFF0_DESC);
1602 SIG_EXPR_LIST_DECL_DUAL(ROMA10, ROM8, ROM16);
1603 SIG_EXPR_DECL(VPOG0, VPO12, M21_DESC, VPO12_DESC);
1604 SIG_EXPR_DECL(VPOG0, VPO24, M21_DESC, VPO24_DESC);
1605 SIG_EXPR_DECL(VPOG0, VPOOFF1, M21_DESC, VPOOFF1_DESC);
1606 SIG_EXPR_LIST_DECL(VPOG0, SIG_EXPR_PTR(VPOG0, VPO12),
1607                 SIG_EXPR_PTR(VPOG0, VPO24), SIG_EXPR_PTR(VPOG0, VPOOFF1));
1608 MS_PIN_DECL(M21, GPIOAA0, ROMA10, VPOG0);
1609
1610 #define M22 209
1611 #define M22_DESC        SIG_DESC_SET(SCUA4, 25)
1612 SIG_EXPR_DECL(ROMA11, ROM8, M22_DESC, VPOOFF0_DESC);
1613 SIG_EXPR_DECL(ROMA11, ROM16, M22_DESC, VPOOFF0_DESC);
1614 SIG_EXPR_LIST_DECL_DUAL(ROMA11, ROM8, ROM16);
1615 SIG_EXPR_DECL(VPOG1, VPO12, M22_DESC, VPO12_DESC);
1616 SIG_EXPR_DECL(VPOG1, VPO24, M22_DESC, VPO24_DESC);
1617 SIG_EXPR_DECL(VPOG1, VPOOFF1, M22_DESC, VPOOFF1_DESC);
1618 SIG_EXPR_LIST_DECL(VPOG1, SIG_EXPR_PTR(VPOG1, VPO12),
1619                 SIG_EXPR_PTR(VPOG1, VPO24), SIG_EXPR_PTR(VPOG1, VPOOFF1));
1620 MS_PIN_DECL(M22, GPIOAA1, ROMA11, VPOG1);
1621
1622 #define L18 210
1623 #define L18_DESC        SIG_DESC_SET(SCUA4, 26)
1624 SIG_EXPR_DECL(ROMA12, ROM8, L18_DESC, VPOOFF0_DESC);
1625 SIG_EXPR_DECL(ROMA12, ROM16, L18_DESC, VPOOFF0_DESC);
1626 SIG_EXPR_LIST_DECL_DUAL(ROMA12, ROM8, ROM16);
1627 SIG_EXPR_DECL(VPOG2, VPO12, L18_DESC, VPO12_DESC);
1628 SIG_EXPR_DECL(VPOG2, VPO24, L18_DESC, VPO24_DESC);
1629 SIG_EXPR_DECL(VPOG2, VPOOFF1, L18_DESC, VPOOFF1_DESC);
1630 SIG_EXPR_LIST_DECL(VPOG2, SIG_EXPR_PTR(VPOG2, VPO12),
1631                 SIG_EXPR_PTR(VPOG2, VPO24), SIG_EXPR_PTR(VPOG2, VPOOFF1));
1632 MS_PIN_DECL(L18, GPIOAA2, ROMA12, VPOG2);
1633
1634 #define L19 211
1635 #define L19_DESC        SIG_DESC_SET(SCUA4, 27)
1636 SIG_EXPR_DECL(ROMA13, ROM8, L19_DESC, VPOOFF0_DESC);
1637 SIG_EXPR_DECL(ROMA13, ROM16, L19_DESC, VPOOFF0_DESC);
1638 SIG_EXPR_LIST_DECL_DUAL(ROMA13, ROM8, ROM16);
1639 SIG_EXPR_DECL(VPOG3, VPO12, L19_DESC, VPO12_DESC);
1640 SIG_EXPR_DECL(VPOG3, VPO24, L19_DESC, VPO24_DESC);
1641 SIG_EXPR_DECL(VPOG3, VPOOFF1, L19_DESC, VPOOFF1_DESC);
1642 SIG_EXPR_LIST_DECL(VPOG3, SIG_EXPR_PTR(VPOG3, VPO12),
1643                 SIG_EXPR_PTR(VPOG3, VPO24), SIG_EXPR_PTR(VPOG3, VPOOFF1));
1644 MS_PIN_DECL(L19, GPIOAA3, ROMA13, VPOG3);
1645
1646 #define L20 212
1647 #define L20_DESC        SIG_DESC_SET(SCUA4, 28)
1648 SIG_EXPR_DECL(ROMA14, ROM8, L20_DESC, VPO_OFF_12);
1649 SIG_EXPR_DECL(ROMA14, ROM16, L20_DESC, VPO_OFF_12);
1650 SIG_EXPR_LIST_DECL_DUAL(ROMA14, ROM8, ROM16);
1651 SIG_EXPR_DECL(VPOG4, VPO24, L20_DESC, VPO24_DESC);
1652 SIG_EXPR_DECL(VPOG4, VPOOFF1, L20_DESC, VPOOFF1_DESC);
1653 SIG_EXPR_LIST_DECL_DUAL(VPOG4, VPO24, VPOOFF1);
1654 MS_PIN_DECL(L20, GPIOAA4, ROMA14, VPOG4);
1655
1656 #define L21 213
1657 #define L21_DESC        SIG_DESC_SET(SCUA4, 29)
1658 SIG_EXPR_DECL(ROMA15, ROM8, L21_DESC, VPO_OFF_12);
1659 SIG_EXPR_DECL(ROMA15, ROM16, L21_DESC, VPO_OFF_12);
1660 SIG_EXPR_LIST_DECL_DUAL(ROMA15, ROM8, ROM16);
1661 SIG_EXPR_DECL(VPOG5, VPO24, L21_DESC, VPO24_DESC);
1662 SIG_EXPR_DECL(VPOG5, VPOOFF1, L21_DESC, VPOOFF1_DESC);
1663 SIG_EXPR_LIST_DECL_DUAL(VPOG5, VPO24, VPOOFF1);
1664 MS_PIN_DECL(L21, GPIOAA5, ROMA15, VPOG5);
1665
1666 #define T18 214
1667 #define T18_DESC        SIG_DESC_SET(SCUA4, 30)
1668 SIG_EXPR_DECL(ROMA16, ROM8, T18_DESC, VPO_OFF_12);
1669 SIG_EXPR_DECL(ROMA16, ROM16, T18_DESC, VPO_OFF_12);
1670 SIG_EXPR_LIST_DECL_DUAL(ROMA16, ROM8, ROM16);
1671 SIG_EXPR_DECL(VPOG6, VPO24, T18_DESC, VPO24_DESC);
1672 SIG_EXPR_DECL(VPOG6, VPOOFF1, T18_DESC, VPOOFF1_DESC);
1673 SIG_EXPR_LIST_DECL_DUAL(VPOG6, VPO24, VPOOFF1);
1674 MS_PIN_DECL(T18, GPIOAA6, ROMA16, VPOG6);
1675
1676 #define N18 215
1677 #define N18_DESC        SIG_DESC_SET(SCUA4, 31)
1678 SIG_EXPR_DECL(ROMA17, ROM8, N18_DESC, VPO_OFF_12);
1679 SIG_EXPR_DECL(ROMA17, ROM16, N18_DESC, VPO_OFF_12);
1680 SIG_EXPR_LIST_DECL_DUAL(ROMA17, ROM8, ROM16);
1681 SIG_EXPR_DECL(VPOG7, VPO24, N18_DESC, VPO24_DESC);
1682 SIG_EXPR_DECL(VPOG7, VPOOFF1, N18_DESC, VPOOFF1_DESC);
1683 SIG_EXPR_LIST_DECL_DUAL(VPOG7, VPO24, VPOOFF1);
1684 MS_PIN_DECL(N18, GPIOAA7, ROMA17, VPOG7);
1685
1686 #define N19 216
1687 #define N19_DESC        SIG_DESC_SET(SCUA8, 0)
1688 SIG_EXPR_DECL(ROMA18, ROM8, N19_DESC, VPO_OFF_12);
1689 SIG_EXPR_DECL(ROMA18, ROM16, N19_DESC, VPO_OFF_12);
1690 SIG_EXPR_LIST_DECL_DUAL(ROMA18, ROM8, ROM16);
1691 SIG_EXPR_DECL(VPOR0, VPO24, N19_DESC, VPO24_DESC);
1692 SIG_EXPR_DECL(VPOR0, VPOOFF1, N19_DESC, VPOOFF1_DESC);
1693 SIG_EXPR_LIST_DECL_DUAL(VPOR0, VPO24, VPOOFF1);
1694 MS_PIN_DECL(N19, GPIOAB0, ROMA18, VPOR0);
1695
1696 #define M18 217
1697 #define M18_DESC        SIG_DESC_SET(SCUA8, 1)
1698 SIG_EXPR_DECL(ROMA19, ROM8, M18_DESC, VPO_OFF_12);
1699 SIG_EXPR_DECL(ROMA19, ROM16, M18_DESC, VPO_OFF_12);
1700 SIG_EXPR_LIST_DECL_DUAL(ROMA19, ROM8, ROM16);
1701 SIG_EXPR_DECL(VPOR1, VPO24, M18_DESC, VPO24_DESC);
1702 SIG_EXPR_DECL(VPOR1, VPOOFF1, M18_DESC, VPOOFF1_DESC);
1703 SIG_EXPR_LIST_DECL_DUAL(VPOR1, VPO24, VPOOFF1);
1704 MS_PIN_DECL(M18, GPIOAB1, ROMA19, VPOR1);
1705
1706 #define N22 218
1707 #define N22_DESC        SIG_DESC_SET(SCUA8, 2)
1708 SIG_EXPR_DECL(ROMA20, ROM8, N22_DESC, VPO_OFF_12);
1709 SIG_EXPR_DECL(ROMA20, ROM16, N22_DESC, VPO_OFF_12);
1710 SIG_EXPR_LIST_DECL_DUAL(ROMA20, ROM8, ROM16);
1711 SIG_EXPR_DECL(VPOR2, VPO24, N22_DESC, VPO24_DESC);
1712 SIG_EXPR_DECL(VPOR2, VPOOFF1, N22_DESC, VPOOFF1_DESC);
1713 SIG_EXPR_LIST_DECL_DUAL(VPOR2, VPO24, VPOOFF1);
1714 MS_PIN_DECL(N22, GPIOAB2, ROMA20, VPOR2);
1715
1716 #define N20 219
1717 #define N20_DESC        SIG_DESC_SET(SCUA8, 3)
1718 SIG_EXPR_DECL(ROMA21, ROM8, N20_DESC, VPO_OFF_12);
1719 SIG_EXPR_DECL(ROMA21, ROM16, N20_DESC, VPO_OFF_12);
1720 SIG_EXPR_LIST_DECL_DUAL(ROMA21, ROM8, ROM16);
1721 SIG_EXPR_DECL(VPOR3, VPO24, N20_DESC, VPO24_DESC);
1722 SIG_EXPR_DECL(VPOR3, VPOOFF1, N20_DESC, VPOOFF1_DESC);
1723 SIG_EXPR_LIST_DECL_DUAL(VPOR3, VPO24, VPOOFF1);
1724 MS_PIN_DECL(N20, GPIOAB3, ROMA21, VPOR3);
1725
1726 FUNC_GROUP_DECL(ROM8, V20, U21, T19, V22, U20, R18, N21, L22, K18, W21, Y22,
1727                 U19, R22, P18, P19, P20, P21, P22, M19, M20, M21, M22, L18,
1728                 L19, L20, L21, T18, N18, N19, M18, N22, N20);
1729 FUNC_GROUP_DECL(ROM16, V20, U21, T19, V22, U20, R18, N21, L22, K18,
1730                 A8, C7, B7, A7, D7, B6, A6, E7, W21, Y22, U19, R22, P18, P19,
1731                 P20, P21, P22, M19, M20, M21, M22, L18, L19, L20, L21, T18,
1732                 N18, N19, M18, N22, N20);
1733 FUNC_GROUP_DECL(VPO12, U21, T19, V22, U20, R22, P18, P19, P20, P21, P22, M19,
1734                 M20, M21, M22, L18, L19, L20, L21, T18, N18, N19, M18, N22,
1735                 N20);
1736 FUNC_GROUP_DECL(VPO24, U21, T19, V22, U20, L22, K18, V21, W22, R22, P18, P19,
1737                 P20, P21, P22, M19, M20, M21, M22, L18, L19);
1738
1739 #define USB11H2_DESC    SIG_DESC_SET(SCU90, 3)
1740 #define USB11D1_DESC    SIG_DESC_BIT(SCU90, 3, 0)
1741
1742 #define K4 220
1743 SIG_EXPR_LIST_DECL_SINGLE(USB11HDP2, USB11H2, USB11H2_DESC);
1744 SIG_EXPR_LIST_DECL_SINGLE(USB11DP1, USB11D1, USB11D1_DESC);
1745 MS_PIN_DECL_(K4, SIG_EXPR_LIST_PTR(USB11HDP2), SIG_EXPR_LIST_PTR(USB11DP1));
1746
1747 #define K3 221
1748 SIG_EXPR_LIST_DECL_SINGLE(USB11HDN1, USB11H2, USB11H2_DESC);
1749 SIG_EXPR_LIST_DECL_SINGLE(USB11DDN1, USB11D1, USB11D1_DESC);
1750 MS_PIN_DECL_(K3, SIG_EXPR_LIST_PTR(USB11HDN1), SIG_EXPR_LIST_PTR(USB11DDN1));
1751
1752 FUNC_GROUP_DECL(USB11H2, K4, K3);
1753 FUNC_GROUP_DECL(USB11D1, K4, K3);
1754
1755 #define USB2H1_DESC     SIG_DESC_SET(SCU90, 29)
1756 #define USB2D1_DESC     SIG_DESC_BIT(SCU90, 29, 0)
1757
1758 #define AB21 222
1759 SIG_EXPR_LIST_DECL_SINGLE(USB2HDP1, USB2H1, USB2H1_DESC);
1760 SIG_EXPR_LIST_DECL_SINGLE(USB2DDP1, USB2D1, USB2D1_DESC);
1761 MS_PIN_DECL_(AB21, SIG_EXPR_LIST_PTR(USB2HDP1), SIG_EXPR_LIST_PTR(USB2DDP1));
1762
1763 #define AB20 223
1764 SIG_EXPR_LIST_DECL_SINGLE(USB2HDN1, USB2H1, USB2H1_DESC);
1765 SIG_EXPR_LIST_DECL_SINGLE(USB2DDN1, USB2D1, USB2D1_DESC);
1766 MS_PIN_DECL_(AB20, SIG_EXPR_LIST_PTR(USB2HDN1), SIG_EXPR_LIST_PTR(USB2DDN1));
1767
1768 FUNC_GROUP_DECL(USB2H1, AB21, AB20);
1769 FUNC_GROUP_DECL(USB2D1, AB21, AB20);
1770
1771 /* Note we account for GPIOY4-GPIOY7 even though they're not valid, thus 216
1772  * pins becomes 220. Four additional non-GPIO-capable pins are present for USB.
1773  */
1774 #define ASPEED_G4_NR_PINS 224
1775
1776 /* Pins, groups and functions are sort(1):ed alphabetically for sanity */
1777
1778 static struct pinctrl_pin_desc aspeed_g4_pins[ASPEED_G4_NR_PINS] = {
1779         ASPEED_PINCTRL_PIN(A1),
1780         ASPEED_PINCTRL_PIN(A10),
1781         ASPEED_PINCTRL_PIN(A11),
1782         ASPEED_PINCTRL_PIN(A12),
1783         ASPEED_PINCTRL_PIN(A13),
1784         ASPEED_PINCTRL_PIN(A14),
1785         ASPEED_PINCTRL_PIN(A15),
1786         ASPEED_PINCTRL_PIN(A16),
1787         ASPEED_PINCTRL_PIN(A17),
1788         ASPEED_PINCTRL_PIN(A18),
1789         ASPEED_PINCTRL_PIN(A19),
1790         ASPEED_PINCTRL_PIN(A2),
1791         ASPEED_PINCTRL_PIN(A20),
1792         ASPEED_PINCTRL_PIN(A3),
1793         ASPEED_PINCTRL_PIN(A4),
1794         ASPEED_PINCTRL_PIN(A5),
1795         ASPEED_PINCTRL_PIN(A6),
1796         ASPEED_PINCTRL_PIN(A7),
1797         ASPEED_PINCTRL_PIN(A8),
1798         ASPEED_PINCTRL_PIN(A9),
1799         ASPEED_PINCTRL_PIN(AA1),
1800         ASPEED_PINCTRL_PIN(AA2),
1801         ASPEED_PINCTRL_PIN(AA22),
1802         ASPEED_PINCTRL_PIN(AA3),
1803         ASPEED_PINCTRL_PIN(AA4),
1804         ASPEED_PINCTRL_PIN(AA5),
1805         ASPEED_PINCTRL_PIN(AA6),
1806         ASPEED_PINCTRL_PIN(AA7),
1807         ASPEED_PINCTRL_PIN(AB1),
1808         ASPEED_PINCTRL_PIN(AB2),
1809         ASPEED_PINCTRL_PIN(AB3),
1810         ASPEED_PINCTRL_PIN(AB4),
1811         ASPEED_PINCTRL_PIN(AB5),
1812         ASPEED_PINCTRL_PIN(AB6),
1813         ASPEED_PINCTRL_PIN(AB7),
1814         ASPEED_PINCTRL_PIN(AB20),
1815         ASPEED_PINCTRL_PIN(AB21),
1816         ASPEED_PINCTRL_PIN(B1),
1817         ASPEED_PINCTRL_PIN(B10),
1818         ASPEED_PINCTRL_PIN(B11),
1819         ASPEED_PINCTRL_PIN(B12),
1820         ASPEED_PINCTRL_PIN(B13),
1821         ASPEED_PINCTRL_PIN(B14),
1822         ASPEED_PINCTRL_PIN(B15),
1823         ASPEED_PINCTRL_PIN(B16),
1824         ASPEED_PINCTRL_PIN(B17),
1825         ASPEED_PINCTRL_PIN(B18),
1826         ASPEED_PINCTRL_PIN(B19),
1827         ASPEED_PINCTRL_PIN(B2),
1828         ASPEED_PINCTRL_PIN(B22),
1829         ASPEED_PINCTRL_PIN(B3),
1830         ASPEED_PINCTRL_PIN(B4),
1831         ASPEED_PINCTRL_PIN(B5),
1832         ASPEED_PINCTRL_PIN(B6),
1833         ASPEED_PINCTRL_PIN(B7),
1834         ASPEED_PINCTRL_PIN(B9),
1835         ASPEED_PINCTRL_PIN(C1),
1836         ASPEED_PINCTRL_PIN(C10),
1837         ASPEED_PINCTRL_PIN(C11),
1838         ASPEED_PINCTRL_PIN(C12),
1839         ASPEED_PINCTRL_PIN(C13),
1840         ASPEED_PINCTRL_PIN(C14),
1841         ASPEED_PINCTRL_PIN(C15),
1842         ASPEED_PINCTRL_PIN(C16),
1843         ASPEED_PINCTRL_PIN(C17),
1844         ASPEED_PINCTRL_PIN(C18),
1845         ASPEED_PINCTRL_PIN(C2),
1846         ASPEED_PINCTRL_PIN(C20),
1847         ASPEED_PINCTRL_PIN(C21),
1848         ASPEED_PINCTRL_PIN(C22),
1849         ASPEED_PINCTRL_PIN(C3),
1850         ASPEED_PINCTRL_PIN(C4),
1851         ASPEED_PINCTRL_PIN(C5),
1852         ASPEED_PINCTRL_PIN(C6),
1853         ASPEED_PINCTRL_PIN(C7),
1854         ASPEED_PINCTRL_PIN(C8),
1855         ASPEED_PINCTRL_PIN(C9),
1856         ASPEED_PINCTRL_PIN(D1),
1857         ASPEED_PINCTRL_PIN(D10),
1858         ASPEED_PINCTRL_PIN(D11),
1859         ASPEED_PINCTRL_PIN(D12),
1860         ASPEED_PINCTRL_PIN(D13),
1861         ASPEED_PINCTRL_PIN(D14),
1862         ASPEED_PINCTRL_PIN(D15),
1863         ASPEED_PINCTRL_PIN(D16),
1864         ASPEED_PINCTRL_PIN(D17),
1865         ASPEED_PINCTRL_PIN(D18),
1866         ASPEED_PINCTRL_PIN(D19),
1867         ASPEED_PINCTRL_PIN(D2),
1868         ASPEED_PINCTRL_PIN(D3),
1869         ASPEED_PINCTRL_PIN(D4),
1870         ASPEED_PINCTRL_PIN(D5),
1871         ASPEED_PINCTRL_PIN(D6),
1872         ASPEED_PINCTRL_PIN(D7),
1873         ASPEED_PINCTRL_PIN(D8),
1874         ASPEED_PINCTRL_PIN(D9),
1875         ASPEED_PINCTRL_PIN(E10),
1876         ASPEED_PINCTRL_PIN(E11),
1877         ASPEED_PINCTRL_PIN(E12),
1878         ASPEED_PINCTRL_PIN(E13),
1879         ASPEED_PINCTRL_PIN(E14),
1880         ASPEED_PINCTRL_PIN(E15),
1881         ASPEED_PINCTRL_PIN(E16),
1882         ASPEED_PINCTRL_PIN(E18),
1883         ASPEED_PINCTRL_PIN(E19),
1884         ASPEED_PINCTRL_PIN(E2),
1885         ASPEED_PINCTRL_PIN(E20),
1886         ASPEED_PINCTRL_PIN(E3),
1887         ASPEED_PINCTRL_PIN(E5),
1888         ASPEED_PINCTRL_PIN(E6),
1889         ASPEED_PINCTRL_PIN(E7),
1890         ASPEED_PINCTRL_PIN(E8),
1891         ASPEED_PINCTRL_PIN(E9),
1892         ASPEED_PINCTRL_PIN(F18),
1893         ASPEED_PINCTRL_PIN(F20),
1894         ASPEED_PINCTRL_PIN(F3),
1895         ASPEED_PINCTRL_PIN(F4),
1896         ASPEED_PINCTRL_PIN(F5),
1897         ASPEED_PINCTRL_PIN(G18),
1898         ASPEED_PINCTRL_PIN(G19),
1899         ASPEED_PINCTRL_PIN(G20),
1900         ASPEED_PINCTRL_PIN(G5),
1901         ASPEED_PINCTRL_PIN(H1),
1902         ASPEED_PINCTRL_PIN(H18),
1903         ASPEED_PINCTRL_PIN(H19),
1904         ASPEED_PINCTRL_PIN(H2),
1905         ASPEED_PINCTRL_PIN(H20),
1906         ASPEED_PINCTRL_PIN(H3),
1907         ASPEED_PINCTRL_PIN(H4),
1908         ASPEED_PINCTRL_PIN(J20),
1909         ASPEED_PINCTRL_PIN(J21),
1910         ASPEED_PINCTRL_PIN(J3),
1911         ASPEED_PINCTRL_PIN(J4),
1912         ASPEED_PINCTRL_PIN(J5),
1913         ASPEED_PINCTRL_PIN(K18),
1914         ASPEED_PINCTRL_PIN(K20),
1915         ASPEED_PINCTRL_PIN(K3),
1916         ASPEED_PINCTRL_PIN(K4),
1917         ASPEED_PINCTRL_PIN(K5),
1918         ASPEED_PINCTRL_PIN(L1),
1919         ASPEED_PINCTRL_PIN(L18),
1920         ASPEED_PINCTRL_PIN(L19),
1921         ASPEED_PINCTRL_PIN(L2),
1922         ASPEED_PINCTRL_PIN(L20),
1923         ASPEED_PINCTRL_PIN(L21),
1924         ASPEED_PINCTRL_PIN(L22),
1925         ASPEED_PINCTRL_PIN(L3),
1926         ASPEED_PINCTRL_PIN(L4),
1927         ASPEED_PINCTRL_PIN(L5),
1928         ASPEED_PINCTRL_PIN(M1),
1929         ASPEED_PINCTRL_PIN(M18),
1930         ASPEED_PINCTRL_PIN(M19),
1931         ASPEED_PINCTRL_PIN(M2),
1932         ASPEED_PINCTRL_PIN(M20),
1933         ASPEED_PINCTRL_PIN(M21),
1934         ASPEED_PINCTRL_PIN(M22),
1935         ASPEED_PINCTRL_PIN(M3),
1936         ASPEED_PINCTRL_PIN(M4),
1937         ASPEED_PINCTRL_PIN(M5),
1938         ASPEED_PINCTRL_PIN(N1),
1939         ASPEED_PINCTRL_PIN(N18),
1940         ASPEED_PINCTRL_PIN(N19),
1941         ASPEED_PINCTRL_PIN(N2),
1942         ASPEED_PINCTRL_PIN(N20),
1943         ASPEED_PINCTRL_PIN(N21),
1944         ASPEED_PINCTRL_PIN(N22),
1945         ASPEED_PINCTRL_PIN(N3),
1946         ASPEED_PINCTRL_PIN(N4),
1947         ASPEED_PINCTRL_PIN(N5),
1948         ASPEED_PINCTRL_PIN(P18),
1949         ASPEED_PINCTRL_PIN(P19),
1950         ASPEED_PINCTRL_PIN(P20),
1951         ASPEED_PINCTRL_PIN(P21),
1952         ASPEED_PINCTRL_PIN(P22),
1953         ASPEED_PINCTRL_PIN(P5),
1954         ASPEED_PINCTRL_PIN(R18),
1955         ASPEED_PINCTRL_PIN(R22),
1956         ASPEED_PINCTRL_PIN(T1),
1957         ASPEED_PINCTRL_PIN(T18),
1958         ASPEED_PINCTRL_PIN(T19),
1959         ASPEED_PINCTRL_PIN(T2),
1960         ASPEED_PINCTRL_PIN(T4),
1961         ASPEED_PINCTRL_PIN(T5),
1962         ASPEED_PINCTRL_PIN(U1),
1963         ASPEED_PINCTRL_PIN(U18),
1964         ASPEED_PINCTRL_PIN(U19),
1965         ASPEED_PINCTRL_PIN(U2),
1966         ASPEED_PINCTRL_PIN(U20),
1967         ASPEED_PINCTRL_PIN(U21),
1968         ASPEED_PINCTRL_PIN(U3),
1969         ASPEED_PINCTRL_PIN(U4),
1970         ASPEED_PINCTRL_PIN(U5),
1971         ASPEED_PINCTRL_PIN(V1),
1972         ASPEED_PINCTRL_PIN(V2),
1973         ASPEED_PINCTRL_PIN(V20),
1974         ASPEED_PINCTRL_PIN(V21),
1975         ASPEED_PINCTRL_PIN(V22),
1976         ASPEED_PINCTRL_PIN(V3),
1977         ASPEED_PINCTRL_PIN(V4),
1978         ASPEED_PINCTRL_PIN(V5),
1979         ASPEED_PINCTRL_PIN(V6),
1980         ASPEED_PINCTRL_PIN(V7),
1981         ASPEED_PINCTRL_PIN(W1),
1982         ASPEED_PINCTRL_PIN(W2),
1983         ASPEED_PINCTRL_PIN(W21),
1984         ASPEED_PINCTRL_PIN(W22),
1985         ASPEED_PINCTRL_PIN(W3),
1986         ASPEED_PINCTRL_PIN(W4),
1987         ASPEED_PINCTRL_PIN(W5),
1988         ASPEED_PINCTRL_PIN(W6),
1989         ASPEED_PINCTRL_PIN(W7),
1990         ASPEED_PINCTRL_PIN(Y1),
1991         ASPEED_PINCTRL_PIN(Y2),
1992         ASPEED_PINCTRL_PIN(Y21),
1993         ASPEED_PINCTRL_PIN(Y22),
1994         ASPEED_PINCTRL_PIN(Y3),
1995         ASPEED_PINCTRL_PIN(Y4),
1996         ASPEED_PINCTRL_PIN(Y5),
1997         ASPEED_PINCTRL_PIN(Y6),
1998         ASPEED_PINCTRL_PIN(Y7),
1999 };
2000
2001 static const struct aspeed_pin_group aspeed_g4_groups[] = {
2002         ASPEED_PINCTRL_GROUP(ACPI),
2003         ASPEED_PINCTRL_GROUP(ADC0),
2004         ASPEED_PINCTRL_GROUP(ADC1),
2005         ASPEED_PINCTRL_GROUP(ADC10),
2006         ASPEED_PINCTRL_GROUP(ADC11),
2007         ASPEED_PINCTRL_GROUP(ADC12),
2008         ASPEED_PINCTRL_GROUP(ADC13),
2009         ASPEED_PINCTRL_GROUP(ADC14),
2010         ASPEED_PINCTRL_GROUP(ADC15),
2011         ASPEED_PINCTRL_GROUP(ADC2),
2012         ASPEED_PINCTRL_GROUP(ADC3),
2013         ASPEED_PINCTRL_GROUP(ADC4),
2014         ASPEED_PINCTRL_GROUP(ADC5),
2015         ASPEED_PINCTRL_GROUP(ADC6),
2016         ASPEED_PINCTRL_GROUP(ADC7),
2017         ASPEED_PINCTRL_GROUP(ADC8),
2018         ASPEED_PINCTRL_GROUP(ADC9),
2019         ASPEED_PINCTRL_GROUP(BMCINT),
2020         ASPEED_PINCTRL_GROUP(DDCCLK),
2021         ASPEED_PINCTRL_GROUP(DDCDAT),
2022         ASPEED_PINCTRL_GROUP(EXTRST),
2023         ASPEED_PINCTRL_GROUP(FLACK),
2024         ASPEED_PINCTRL_GROUP(FLBUSY),
2025         ASPEED_PINCTRL_GROUP(FLWP),
2026         ASPEED_PINCTRL_GROUP(GPID),
2027         ASPEED_PINCTRL_GROUP(GPID0),
2028         ASPEED_PINCTRL_GROUP(GPID2),
2029         ASPEED_PINCTRL_GROUP(GPID4),
2030         ASPEED_PINCTRL_GROUP(GPID6),
2031         ASPEED_PINCTRL_GROUP(GPIE0),
2032         ASPEED_PINCTRL_GROUP(GPIE2),
2033         ASPEED_PINCTRL_GROUP(GPIE4),
2034         ASPEED_PINCTRL_GROUP(GPIE6),
2035         ASPEED_PINCTRL_GROUP(I2C10),
2036         ASPEED_PINCTRL_GROUP(I2C11),
2037         ASPEED_PINCTRL_GROUP(I2C12),
2038         ASPEED_PINCTRL_GROUP(I2C13),
2039         ASPEED_PINCTRL_GROUP(I2C14),
2040         ASPEED_PINCTRL_GROUP(I2C3),
2041         ASPEED_PINCTRL_GROUP(I2C4),
2042         ASPEED_PINCTRL_GROUP(I2C5),
2043         ASPEED_PINCTRL_GROUP(I2C6),
2044         ASPEED_PINCTRL_GROUP(I2C7),
2045         ASPEED_PINCTRL_GROUP(I2C8),
2046         ASPEED_PINCTRL_GROUP(I2C9),
2047         ASPEED_PINCTRL_GROUP(LPCPD),
2048         ASPEED_PINCTRL_GROUP(LPCPME),
2049         ASPEED_PINCTRL_GROUP(LPCRST),
2050         ASPEED_PINCTRL_GROUP(LPCSMI),
2051         ASPEED_PINCTRL_GROUP(MAC1LINK),
2052         ASPEED_PINCTRL_GROUP(MAC2LINK),
2053         ASPEED_PINCTRL_GROUP(MDIO1),
2054         ASPEED_PINCTRL_GROUP(MDIO2),
2055         ASPEED_PINCTRL_GROUP(NCTS1),
2056         ASPEED_PINCTRL_GROUP(NCTS2),
2057         ASPEED_PINCTRL_GROUP(NCTS3),
2058         ASPEED_PINCTRL_GROUP(NCTS4),
2059         ASPEED_PINCTRL_GROUP(NDCD1),
2060         ASPEED_PINCTRL_GROUP(NDCD2),
2061         ASPEED_PINCTRL_GROUP(NDCD3),
2062         ASPEED_PINCTRL_GROUP(NDCD4),
2063         ASPEED_PINCTRL_GROUP(NDSR1),
2064         ASPEED_PINCTRL_GROUP(NDSR2),
2065         ASPEED_PINCTRL_GROUP(NDSR3),
2066         ASPEED_PINCTRL_GROUP(NDSR4),
2067         ASPEED_PINCTRL_GROUP(NDTR1),
2068         ASPEED_PINCTRL_GROUP(NDTR2),
2069         ASPEED_PINCTRL_GROUP(NDTR3),
2070         ASPEED_PINCTRL_GROUP(NDTR4),
2071         ASPEED_PINCTRL_GROUP(NDTS4),
2072         ASPEED_PINCTRL_GROUP(NRI1),
2073         ASPEED_PINCTRL_GROUP(NRI2),
2074         ASPEED_PINCTRL_GROUP(NRI3),
2075         ASPEED_PINCTRL_GROUP(NRI4),
2076         ASPEED_PINCTRL_GROUP(NRTS1),
2077         ASPEED_PINCTRL_GROUP(NRTS2),
2078         ASPEED_PINCTRL_GROUP(NRTS3),
2079         ASPEED_PINCTRL_GROUP(OSCCLK),
2080         ASPEED_PINCTRL_GROUP(PWM0),
2081         ASPEED_PINCTRL_GROUP(PWM1),
2082         ASPEED_PINCTRL_GROUP(PWM2),
2083         ASPEED_PINCTRL_GROUP(PWM3),
2084         ASPEED_PINCTRL_GROUP(PWM4),
2085         ASPEED_PINCTRL_GROUP(PWM5),
2086         ASPEED_PINCTRL_GROUP(PWM6),
2087         ASPEED_PINCTRL_GROUP(PWM7),
2088         ASPEED_PINCTRL_GROUP(RGMII1),
2089         ASPEED_PINCTRL_GROUP(RGMII2),
2090         ASPEED_PINCTRL_GROUP(RMII1),
2091         ASPEED_PINCTRL_GROUP(RMII2),
2092         ASPEED_PINCTRL_GROUP(ROM16),
2093         ASPEED_PINCTRL_GROUP(ROM8),
2094         ASPEED_PINCTRL_GROUP(ROMCS1),
2095         ASPEED_PINCTRL_GROUP(ROMCS2),
2096         ASPEED_PINCTRL_GROUP(ROMCS3),
2097         ASPEED_PINCTRL_GROUP(ROMCS4),
2098         ASPEED_PINCTRL_GROUP(RXD1),
2099         ASPEED_PINCTRL_GROUP(RXD2),
2100         ASPEED_PINCTRL_GROUP(RXD3),
2101         ASPEED_PINCTRL_GROUP(RXD4),
2102         ASPEED_PINCTRL_GROUP(SALT1),
2103         ASPEED_PINCTRL_GROUP(SALT2),
2104         ASPEED_PINCTRL_GROUP(SALT3),
2105         ASPEED_PINCTRL_GROUP(SALT4),
2106         ASPEED_PINCTRL_GROUP(SD1),
2107         ASPEED_PINCTRL_GROUP(SD2),
2108         ASPEED_PINCTRL_GROUP(SGPMCK),
2109         ASPEED_PINCTRL_GROUP(SGPMI),
2110         ASPEED_PINCTRL_GROUP(SGPMLD),
2111         ASPEED_PINCTRL_GROUP(SGPMO),
2112         ASPEED_PINCTRL_GROUP(SGPSCK),
2113         ASPEED_PINCTRL_GROUP(SGPSI0),
2114         ASPEED_PINCTRL_GROUP(SGPSI1),
2115         ASPEED_PINCTRL_GROUP(SGPSLD),
2116         ASPEED_PINCTRL_GROUP(SIOONCTRL),
2117         ASPEED_PINCTRL_GROUP(SIOPBI),
2118         ASPEED_PINCTRL_GROUP(SIOPBO),
2119         ASPEED_PINCTRL_GROUP(SIOPWREQ),
2120         ASPEED_PINCTRL_GROUP(SIOPWRGD),
2121         ASPEED_PINCTRL_GROUP(SIOS3),
2122         ASPEED_PINCTRL_GROUP(SIOS5),
2123         ASPEED_PINCTRL_GROUP(SIOSCI),
2124         ASPEED_PINCTRL_GROUP(SPI1),
2125         ASPEED_PINCTRL_GROUP(SPI1DEBUG),
2126         ASPEED_PINCTRL_GROUP(SPI1PASSTHRU),
2127         ASPEED_PINCTRL_GROUP(SPICS1),
2128         ASPEED_PINCTRL_GROUP(TIMER3),
2129         ASPEED_PINCTRL_GROUP(TIMER4),
2130         ASPEED_PINCTRL_GROUP(TIMER5),
2131         ASPEED_PINCTRL_GROUP(TIMER6),
2132         ASPEED_PINCTRL_GROUP(TIMER7),
2133         ASPEED_PINCTRL_GROUP(TIMER8),
2134         ASPEED_PINCTRL_GROUP(TXD1),
2135         ASPEED_PINCTRL_GROUP(TXD2),
2136         ASPEED_PINCTRL_GROUP(TXD3),
2137         ASPEED_PINCTRL_GROUP(TXD4),
2138         ASPEED_PINCTRL_GROUP(UART6),
2139         ASPEED_PINCTRL_GROUP(USB11D1),
2140         ASPEED_PINCTRL_GROUP(USB11H2),
2141         ASPEED_PINCTRL_GROUP(USB2D1),
2142         ASPEED_PINCTRL_GROUP(USB2H1),
2143         ASPEED_PINCTRL_GROUP(USBCKI),
2144         ASPEED_PINCTRL_GROUP(VGABIOS_ROM),
2145         ASPEED_PINCTRL_GROUP(VGAHS),
2146         ASPEED_PINCTRL_GROUP(VGAVS),
2147         ASPEED_PINCTRL_GROUP(VPI18),
2148         ASPEED_PINCTRL_GROUP(VPI24),
2149         ASPEED_PINCTRL_GROUP(VPI30),
2150         ASPEED_PINCTRL_GROUP(VPO12),
2151         ASPEED_PINCTRL_GROUP(VPO24),
2152         ASPEED_PINCTRL_GROUP(WDTRST1),
2153         ASPEED_PINCTRL_GROUP(WDTRST2),
2154 };
2155
2156 static const struct aspeed_pin_function aspeed_g4_functions[] = {
2157         ASPEED_PINCTRL_FUNC(ACPI),
2158         ASPEED_PINCTRL_FUNC(ADC0),
2159         ASPEED_PINCTRL_FUNC(ADC1),
2160         ASPEED_PINCTRL_FUNC(ADC10),
2161         ASPEED_PINCTRL_FUNC(ADC11),
2162         ASPEED_PINCTRL_FUNC(ADC12),
2163         ASPEED_PINCTRL_FUNC(ADC13),
2164         ASPEED_PINCTRL_FUNC(ADC14),
2165         ASPEED_PINCTRL_FUNC(ADC15),
2166         ASPEED_PINCTRL_FUNC(ADC2),
2167         ASPEED_PINCTRL_FUNC(ADC3),
2168         ASPEED_PINCTRL_FUNC(ADC4),
2169         ASPEED_PINCTRL_FUNC(ADC5),
2170         ASPEED_PINCTRL_FUNC(ADC6),
2171         ASPEED_PINCTRL_FUNC(ADC7),
2172         ASPEED_PINCTRL_FUNC(ADC8),
2173         ASPEED_PINCTRL_FUNC(ADC9),
2174         ASPEED_PINCTRL_FUNC(BMCINT),
2175         ASPEED_PINCTRL_FUNC(DDCCLK),
2176         ASPEED_PINCTRL_FUNC(DDCDAT),
2177         ASPEED_PINCTRL_FUNC(EXTRST),
2178         ASPEED_PINCTRL_FUNC(FLACK),
2179         ASPEED_PINCTRL_FUNC(FLBUSY),
2180         ASPEED_PINCTRL_FUNC(FLWP),
2181         ASPEED_PINCTRL_FUNC(GPID),
2182         ASPEED_PINCTRL_FUNC(GPID0),
2183         ASPEED_PINCTRL_FUNC(GPID2),
2184         ASPEED_PINCTRL_FUNC(GPID4),
2185         ASPEED_PINCTRL_FUNC(GPID6),
2186         ASPEED_PINCTRL_FUNC(GPIE0),
2187         ASPEED_PINCTRL_FUNC(GPIE2),
2188         ASPEED_PINCTRL_FUNC(GPIE4),
2189         ASPEED_PINCTRL_FUNC(GPIE6),
2190         ASPEED_PINCTRL_FUNC(I2C10),
2191         ASPEED_PINCTRL_FUNC(I2C11),
2192         ASPEED_PINCTRL_FUNC(I2C12),
2193         ASPEED_PINCTRL_FUNC(I2C13),
2194         ASPEED_PINCTRL_FUNC(I2C14),
2195         ASPEED_PINCTRL_FUNC(I2C3),
2196         ASPEED_PINCTRL_FUNC(I2C4),
2197         ASPEED_PINCTRL_FUNC(I2C5),
2198         ASPEED_PINCTRL_FUNC(I2C6),
2199         ASPEED_PINCTRL_FUNC(I2C7),
2200         ASPEED_PINCTRL_FUNC(I2C8),
2201         ASPEED_PINCTRL_FUNC(I2C9),
2202         ASPEED_PINCTRL_FUNC(LPCPD),
2203         ASPEED_PINCTRL_FUNC(LPCPME),
2204         ASPEED_PINCTRL_FUNC(LPCRST),
2205         ASPEED_PINCTRL_FUNC(LPCSMI),
2206         ASPEED_PINCTRL_FUNC(MAC1LINK),
2207         ASPEED_PINCTRL_FUNC(MAC2LINK),
2208         ASPEED_PINCTRL_FUNC(MDIO1),
2209         ASPEED_PINCTRL_FUNC(MDIO2),
2210         ASPEED_PINCTRL_FUNC(NCTS1),
2211         ASPEED_PINCTRL_FUNC(NCTS2),
2212         ASPEED_PINCTRL_FUNC(NCTS3),
2213         ASPEED_PINCTRL_FUNC(NCTS4),
2214         ASPEED_PINCTRL_FUNC(NDCD1),
2215         ASPEED_PINCTRL_FUNC(NDCD2),
2216         ASPEED_PINCTRL_FUNC(NDCD3),
2217         ASPEED_PINCTRL_FUNC(NDCD4),
2218         ASPEED_PINCTRL_FUNC(NDSR1),
2219         ASPEED_PINCTRL_FUNC(NDSR2),
2220         ASPEED_PINCTRL_FUNC(NDSR3),
2221         ASPEED_PINCTRL_FUNC(NDSR4),
2222         ASPEED_PINCTRL_FUNC(NDTR1),
2223         ASPEED_PINCTRL_FUNC(NDTR2),
2224         ASPEED_PINCTRL_FUNC(NDTR3),
2225         ASPEED_PINCTRL_FUNC(NDTR4),
2226         ASPEED_PINCTRL_FUNC(NDTS4),
2227         ASPEED_PINCTRL_FUNC(NRI1),
2228         ASPEED_PINCTRL_FUNC(NRI2),
2229         ASPEED_PINCTRL_FUNC(NRI3),
2230         ASPEED_PINCTRL_FUNC(NRI4),
2231         ASPEED_PINCTRL_FUNC(NRTS1),
2232         ASPEED_PINCTRL_FUNC(NRTS2),
2233         ASPEED_PINCTRL_FUNC(NRTS3),
2234         ASPEED_PINCTRL_FUNC(OSCCLK),
2235         ASPEED_PINCTRL_FUNC(PWM0),
2236         ASPEED_PINCTRL_FUNC(PWM1),
2237         ASPEED_PINCTRL_FUNC(PWM2),
2238         ASPEED_PINCTRL_FUNC(PWM3),
2239         ASPEED_PINCTRL_FUNC(PWM4),
2240         ASPEED_PINCTRL_FUNC(PWM5),
2241         ASPEED_PINCTRL_FUNC(PWM6),
2242         ASPEED_PINCTRL_FUNC(PWM7),
2243         ASPEED_PINCTRL_FUNC(RGMII1),
2244         ASPEED_PINCTRL_FUNC(RGMII2),
2245         ASPEED_PINCTRL_FUNC(RMII1),
2246         ASPEED_PINCTRL_FUNC(RMII2),
2247         ASPEED_PINCTRL_FUNC(ROM16),
2248         ASPEED_PINCTRL_FUNC(ROM8),
2249         ASPEED_PINCTRL_FUNC(ROMCS1),
2250         ASPEED_PINCTRL_FUNC(ROMCS2),
2251         ASPEED_PINCTRL_FUNC(ROMCS3),
2252         ASPEED_PINCTRL_FUNC(ROMCS4),
2253         ASPEED_PINCTRL_FUNC(RXD1),
2254         ASPEED_PINCTRL_FUNC(RXD2),
2255         ASPEED_PINCTRL_FUNC(RXD3),
2256         ASPEED_PINCTRL_FUNC(RXD4),
2257         ASPEED_PINCTRL_FUNC(SALT1),
2258         ASPEED_PINCTRL_FUNC(SALT2),
2259         ASPEED_PINCTRL_FUNC(SALT3),
2260         ASPEED_PINCTRL_FUNC(SALT4),
2261         ASPEED_PINCTRL_FUNC(SD1),
2262         ASPEED_PINCTRL_FUNC(SD2),
2263         ASPEED_PINCTRL_FUNC(SGPMCK),
2264         ASPEED_PINCTRL_FUNC(SGPMI),
2265         ASPEED_PINCTRL_FUNC(SGPMLD),
2266         ASPEED_PINCTRL_FUNC(SGPMO),
2267         ASPEED_PINCTRL_FUNC(SGPSCK),
2268         ASPEED_PINCTRL_FUNC(SGPSI0),
2269         ASPEED_PINCTRL_FUNC(SGPSI1),
2270         ASPEED_PINCTRL_FUNC(SGPSLD),
2271         ASPEED_PINCTRL_FUNC(SIOONCTRL),
2272         ASPEED_PINCTRL_FUNC(SIOPBI),
2273         ASPEED_PINCTRL_FUNC(SIOPBO),
2274         ASPEED_PINCTRL_FUNC(SIOPWREQ),
2275         ASPEED_PINCTRL_FUNC(SIOPWRGD),
2276         ASPEED_PINCTRL_FUNC(SIOS3),
2277         ASPEED_PINCTRL_FUNC(SIOS5),
2278         ASPEED_PINCTRL_FUNC(SIOSCI),
2279         ASPEED_PINCTRL_FUNC(SPI1),
2280         ASPEED_PINCTRL_FUNC(SPI1DEBUG),
2281         ASPEED_PINCTRL_FUNC(SPI1PASSTHRU),
2282         ASPEED_PINCTRL_FUNC(SPICS1),
2283         ASPEED_PINCTRL_FUNC(TIMER3),
2284         ASPEED_PINCTRL_FUNC(TIMER4),
2285         ASPEED_PINCTRL_FUNC(TIMER5),
2286         ASPEED_PINCTRL_FUNC(TIMER6),
2287         ASPEED_PINCTRL_FUNC(TIMER7),
2288         ASPEED_PINCTRL_FUNC(TIMER8),
2289         ASPEED_PINCTRL_FUNC(TXD1),
2290         ASPEED_PINCTRL_FUNC(TXD2),
2291         ASPEED_PINCTRL_FUNC(TXD3),
2292         ASPEED_PINCTRL_FUNC(TXD4),
2293         ASPEED_PINCTRL_FUNC(UART6),
2294         ASPEED_PINCTRL_FUNC(USB11D1),
2295         ASPEED_PINCTRL_FUNC(USB11H2),
2296         ASPEED_PINCTRL_FUNC(USB2D1),
2297         ASPEED_PINCTRL_FUNC(USB2H1),
2298         ASPEED_PINCTRL_FUNC(USBCKI),
2299         ASPEED_PINCTRL_FUNC(VGABIOS_ROM),
2300         ASPEED_PINCTRL_FUNC(VGAHS),
2301         ASPEED_PINCTRL_FUNC(VGAVS),
2302         ASPEED_PINCTRL_FUNC(VPI18),
2303         ASPEED_PINCTRL_FUNC(VPI24),
2304         ASPEED_PINCTRL_FUNC(VPI30),
2305         ASPEED_PINCTRL_FUNC(VPO12),
2306         ASPEED_PINCTRL_FUNC(VPO24),
2307         ASPEED_PINCTRL_FUNC(WDTRST1),
2308         ASPEED_PINCTRL_FUNC(WDTRST2),
2309 };
2310
2311 static const struct aspeed_pin_config aspeed_g4_configs[] = {
2312         /* GPIO banks ranges [A, B], [D, J], [M, R] */
2313         { PIN_CONFIG_BIAS_PULL_DOWN, { D6,  D5  }, SCU8C, 16 },
2314         { PIN_CONFIG_BIAS_DISABLE,   { D6,  D5  }, SCU8C, 16 },
2315         { PIN_CONFIG_BIAS_PULL_DOWN, { J21, E18 }, SCU8C, 17 },
2316         { PIN_CONFIG_BIAS_DISABLE,   { J21, E18 }, SCU8C, 17 },
2317         { PIN_CONFIG_BIAS_PULL_DOWN, { A18, E15 }, SCU8C, 19 },
2318         { PIN_CONFIG_BIAS_DISABLE,   { A18, E15 }, SCU8C, 19 },
2319         { PIN_CONFIG_BIAS_PULL_DOWN, { D15, B14 }, SCU8C, 20 },
2320         { PIN_CONFIG_BIAS_DISABLE,   { D15, B14 }, SCU8C, 20 },
2321         { PIN_CONFIG_BIAS_PULL_DOWN, { D18, C17 }, SCU8C, 21 },
2322         { PIN_CONFIG_BIAS_DISABLE,   { D18, C17 }, SCU8C, 21 },
2323         { PIN_CONFIG_BIAS_PULL_DOWN, { A14, U18 }, SCU8C, 22 },
2324         { PIN_CONFIG_BIAS_DISABLE,   { A14, U18 }, SCU8C, 22 },
2325         { PIN_CONFIG_BIAS_PULL_DOWN, { A8,  E7  }, SCU8C, 23 },
2326         { PIN_CONFIG_BIAS_DISABLE,   { A8,  E7  }, SCU8C, 23 },
2327         { PIN_CONFIG_BIAS_PULL_DOWN, { C22, E20 }, SCU8C, 24 },
2328         { PIN_CONFIG_BIAS_DISABLE,   { C22, E20 }, SCU8C, 24 },
2329         { PIN_CONFIG_BIAS_PULL_DOWN, { J5,  T1  }, SCU8C, 25 },
2330         { PIN_CONFIG_BIAS_DISABLE,   { J5,  T1  }, SCU8C, 25 },
2331         { PIN_CONFIG_BIAS_PULL_DOWN, { U1,  U5  }, SCU8C, 26 },
2332         { PIN_CONFIG_BIAS_DISABLE,   { U1,  U5  }, SCU8C, 26 },
2333         { PIN_CONFIG_BIAS_PULL_DOWN, { V3,  V5  }, SCU8C, 27 },
2334         { PIN_CONFIG_BIAS_DISABLE,   { V3,  V5  }, SCU8C, 27 },
2335         { PIN_CONFIG_BIAS_PULL_DOWN, { W4,  AB2 }, SCU8C, 28 },
2336         { PIN_CONFIG_BIAS_DISABLE,   { W4,  AB2 }, SCU8C, 28 },
2337         { PIN_CONFIG_BIAS_PULL_DOWN, { V6,  V7  }, SCU8C, 29 },
2338         { PIN_CONFIG_BIAS_DISABLE,   { V6,  V7  }, SCU8C, 29 },
2339         { PIN_CONFIG_BIAS_PULL_DOWN, { Y6,  AB7 }, SCU8C, 30 },
2340         { PIN_CONFIG_BIAS_DISABLE,   { Y6,  AB7 }, SCU8C, 30 },
2341         { PIN_CONFIG_BIAS_PULL_DOWN, { V20, A5  }, SCU8C, 31 },
2342         { PIN_CONFIG_BIAS_DISABLE,   { V20, A5  }, SCU8C, 31 },
2343
2344         /* GPIOs T[0-5] (RGMII1 Tx pins) */
2345         { PIN_CONFIG_DRIVE_STRENGTH, { A12, A13 }, SCU90, 9  },
2346         { PIN_CONFIG_BIAS_PULL_DOWN, { A12, A13 }, SCU90, 12 },
2347         { PIN_CONFIG_BIAS_DISABLE,   { A12, A13 }, SCU90, 12 },
2348
2349         /* GPIOs T[6-7], U[0-3] (RGMII2 TX pins) */
2350         { PIN_CONFIG_DRIVE_STRENGTH, { D9,  D10 }, SCU90, 11 },
2351         { PIN_CONFIG_BIAS_PULL_DOWN, { D9,  D10 }, SCU90, 14 },
2352         { PIN_CONFIG_BIAS_DISABLE,   { D9,  D10 }, SCU90, 14 },
2353
2354         /* GPIOs U[4-7], V[0-1] (RGMII1 Rx pins) */
2355         { PIN_CONFIG_BIAS_PULL_DOWN, { E11, E10 }, SCU90, 13 },
2356         { PIN_CONFIG_BIAS_DISABLE,   { E11, E10 }, SCU90, 13 },
2357
2358         /* GPIOs V[2-7] (RGMII2 Rx pins) */
2359         { PIN_CONFIG_BIAS_PULL_DOWN, { C9,  C8  }, SCU90, 15 },
2360         { PIN_CONFIG_BIAS_DISABLE,   { C9,  C8  }, SCU90, 15 },
2361
2362         /* ADC pull-downs (SCUA8[19:4]) */
2363         { PIN_CONFIG_BIAS_PULL_DOWN, { L5,  L5  }, SCUA8, 4 },
2364         { PIN_CONFIG_BIAS_DISABLE,   { L5,  L5  }, SCUA8, 4 },
2365         { PIN_CONFIG_BIAS_PULL_DOWN, { L4,  L4  }, SCUA8, 5 },
2366         { PIN_CONFIG_BIAS_DISABLE,   { L4,  L4  }, SCUA8, 5 },
2367         { PIN_CONFIG_BIAS_PULL_DOWN, { L3,  L3  }, SCUA8, 6 },
2368         { PIN_CONFIG_BIAS_DISABLE,   { L3,  L3  }, SCUA8, 6 },
2369         { PIN_CONFIG_BIAS_PULL_DOWN, { L2,  L2  }, SCUA8, 7 },
2370         { PIN_CONFIG_BIAS_DISABLE,   { L2,  L2  }, SCUA8, 7 },
2371         { PIN_CONFIG_BIAS_PULL_DOWN, { L1,  L1  }, SCUA8, 8 },
2372         { PIN_CONFIG_BIAS_DISABLE,   { L1,  L1  }, SCUA8, 8 },
2373         { PIN_CONFIG_BIAS_PULL_DOWN, { M5,  M5  }, SCUA8, 9 },
2374         { PIN_CONFIG_BIAS_DISABLE,   { M5,  M5  }, SCUA8, 9 },
2375         { PIN_CONFIG_BIAS_PULL_DOWN, { M4,  M4  }, SCUA8, 10 },
2376         { PIN_CONFIG_BIAS_DISABLE,   { M4,  M4  }, SCUA8, 10 },
2377         { PIN_CONFIG_BIAS_PULL_DOWN, { M3,  M3  }, SCUA8, 11 },
2378         { PIN_CONFIG_BIAS_DISABLE,   { M3,  M3  }, SCUA8, 11 },
2379         { PIN_CONFIG_BIAS_PULL_DOWN, { M2,  M2  }, SCUA8, 12 },
2380         { PIN_CONFIG_BIAS_DISABLE,   { M2,  M2  }, SCUA8, 12 },
2381         { PIN_CONFIG_BIAS_PULL_DOWN, { M1,  M1  }, SCUA8, 13 },
2382         { PIN_CONFIG_BIAS_DISABLE,   { M1,  M1  }, SCUA8, 13 },
2383         { PIN_CONFIG_BIAS_PULL_DOWN, { N5,  N5  }, SCUA8, 14 },
2384         { PIN_CONFIG_BIAS_DISABLE,   { N5,  N5  }, SCUA8, 14 },
2385         { PIN_CONFIG_BIAS_PULL_DOWN, { N4,  N4  }, SCUA8, 15 },
2386         { PIN_CONFIG_BIAS_DISABLE,   { N4,  N4  }, SCUA8, 15 },
2387         { PIN_CONFIG_BIAS_PULL_DOWN, { N3,  N3  }, SCUA8, 16 },
2388         { PIN_CONFIG_BIAS_DISABLE,   { N3,  N3  }, SCUA8, 16 },
2389         { PIN_CONFIG_BIAS_PULL_DOWN, { N2,  N2  }, SCUA8, 17 },
2390         { PIN_CONFIG_BIAS_DISABLE,   { N2,  N2  }, SCUA8, 17 },
2391         { PIN_CONFIG_BIAS_PULL_DOWN, { N1,  N1  }, SCUA8, 18 },
2392         { PIN_CONFIG_BIAS_DISABLE,   { N1,  N1  }, SCUA8, 18 },
2393         { PIN_CONFIG_BIAS_PULL_DOWN, { P5,  P5  }, SCUA8, 19 },
2394         { PIN_CONFIG_BIAS_DISABLE,   { P5,  P5  }, SCUA8, 19 },
2395
2396         /*
2397          * Debounce settings for GPIOs D and E passthrough mode are in
2398          * SCUA8[27:20] and so are managed by pinctrl. Normal GPIO debounce for
2399          * banks D and E is handled by the GPIO driver - GPIO passthrough is
2400          * treated like any other non-GPIO mux function. There is a catch
2401          * however, in that the debounce period is configured in the GPIO
2402          * controller. Due to this tangle between GPIO and pinctrl we don't yet
2403          * fully support pass-through debounce.
2404          */
2405         { PIN_CONFIG_INPUT_DEBOUNCE, { A18, D16 }, SCUA8, 20 },
2406         { PIN_CONFIG_INPUT_DEBOUNCE, { B17, A17 }, SCUA8, 21 },
2407         { PIN_CONFIG_INPUT_DEBOUNCE, { C16, B16 }, SCUA8, 22 },
2408         { PIN_CONFIG_INPUT_DEBOUNCE, { A16, E15 }, SCUA8, 23 },
2409         { PIN_CONFIG_INPUT_DEBOUNCE, { D15, C15 }, SCUA8, 24 },
2410         { PIN_CONFIG_INPUT_DEBOUNCE, { B15, A15 }, SCUA8, 25 },
2411         { PIN_CONFIG_INPUT_DEBOUNCE, { E14, D14 }, SCUA8, 26 },
2412         { PIN_CONFIG_INPUT_DEBOUNCE, { C14, B14 }, SCUA8, 27 },
2413 };
2414
2415 static int aspeed_g4_sig_expr_set(struct aspeed_pinmux_data *ctx,
2416                                   const struct aspeed_sig_expr *expr,
2417                                   bool enable)
2418 {
2419         int ret;
2420         int i;
2421
2422         for (i = 0; i < expr->ndescs; i++) {
2423                 const struct aspeed_sig_desc *desc = &expr->descs[i];
2424                 u32 pattern = enable ? desc->enable : desc->disable;
2425                 u32 val = (pattern << __ffs(desc->mask));
2426
2427                 if (!ctx->maps[desc->ip])
2428                         return -ENODEV;
2429
2430                 /*
2431                  * Strap registers are configured in hardware or by early-boot
2432                  * firmware. Treat them as read-only despite that we can write
2433                  * them. This may mean that certain functions cannot be
2434                  * deconfigured and is the reason we re-evaluate after writing
2435                  * all descriptor bits.
2436                  *
2437                  * Port D and port E GPIO loopback modes are the only exception
2438                  * as those are commonly used with front-panel buttons to allow
2439                  * normal operation of the host when the BMC is powered off or
2440                  * fails to boot. Once the BMC has booted, the loopback mode
2441                  * must be disabled for the BMC to control host power-on and
2442                  * reset.
2443                  */
2444                 if (desc->ip == ASPEED_IP_SCU && desc->reg == HW_STRAP1 &&
2445                     !(desc->mask & (BIT(21) | BIT(22))))
2446                         continue;
2447
2448                 if (desc->ip == ASPEED_IP_SCU && desc->reg == HW_STRAP2)
2449                         continue;
2450
2451                 ret = regmap_update_bits(ctx->maps[desc->ip], desc->reg,
2452                                          desc->mask, val);
2453
2454                 if (ret)
2455                         return ret;
2456         }
2457
2458         ret = aspeed_sig_expr_eval(ctx, expr, enable);
2459         if (ret < 0)
2460                 return ret;
2461
2462         if (!ret)
2463                 return -EPERM;
2464
2465         return 0;
2466 }
2467
2468 static const struct aspeed_pinmux_ops aspeed_g4_ops = {
2469         .set = aspeed_g4_sig_expr_set,
2470 };
2471
2472 static struct aspeed_pinctrl_data aspeed_g4_pinctrl_data = {
2473         .pins = aspeed_g4_pins,
2474         .npins = ARRAY_SIZE(aspeed_g4_pins),
2475         .pinmux = {
2476                 .ops = &aspeed_g4_ops,
2477                 .groups = aspeed_g4_groups,
2478                 .ngroups = ARRAY_SIZE(aspeed_g4_groups),
2479                 .functions = aspeed_g4_functions,
2480                 .nfunctions = ARRAY_SIZE(aspeed_g4_functions),
2481         },
2482         .configs = aspeed_g4_configs,
2483         .nconfigs = ARRAY_SIZE(aspeed_g4_configs),
2484 };
2485
2486 static const struct pinmux_ops aspeed_g4_pinmux_ops = {
2487         .get_functions_count = aspeed_pinmux_get_fn_count,
2488         .get_function_name = aspeed_pinmux_get_fn_name,
2489         .get_function_groups = aspeed_pinmux_get_fn_groups,
2490         .set_mux = aspeed_pinmux_set_mux,
2491         .gpio_request_enable = aspeed_gpio_request_enable,
2492         .strict = true,
2493 };
2494
2495 static const struct pinctrl_ops aspeed_g4_pinctrl_ops = {
2496         .get_groups_count = aspeed_pinctrl_get_groups_count,
2497         .get_group_name = aspeed_pinctrl_get_group_name,
2498         .get_group_pins = aspeed_pinctrl_get_group_pins,
2499         .pin_dbg_show = aspeed_pinctrl_pin_dbg_show,
2500         .dt_node_to_map = pinconf_generic_dt_node_to_map_all,
2501         .dt_free_map = pinctrl_utils_free_map,
2502 };
2503
2504 static const struct pinconf_ops aspeed_g4_conf_ops = {
2505         .is_generic = true,
2506         .pin_config_get = aspeed_pin_config_get,
2507         .pin_config_set = aspeed_pin_config_set,
2508         .pin_config_group_get = aspeed_pin_config_group_get,
2509         .pin_config_group_set = aspeed_pin_config_group_set,
2510 };
2511
2512 static struct pinctrl_desc aspeed_g4_pinctrl_desc = {
2513         .name = "aspeed-g4-pinctrl",
2514         .pins = aspeed_g4_pins,
2515         .npins = ARRAY_SIZE(aspeed_g4_pins),
2516         .pctlops = &aspeed_g4_pinctrl_ops,
2517         .pmxops = &aspeed_g4_pinmux_ops,
2518         .confops = &aspeed_g4_conf_ops,
2519 };
2520
2521 static int aspeed_g4_pinctrl_probe(struct platform_device *pdev)
2522 {
2523         int i;
2524
2525         for (i = 0; i < ARRAY_SIZE(aspeed_g4_pins); i++)
2526                 aspeed_g4_pins[i].number = i;
2527
2528         return aspeed_pinctrl_probe(pdev, &aspeed_g4_pinctrl_desc,
2529                         &aspeed_g4_pinctrl_data);
2530 }
2531
2532 static const struct of_device_id aspeed_g4_pinctrl_of_match[] = {
2533         { .compatible = "aspeed,ast2400-pinctrl", },
2534         { .compatible = "aspeed,g4-pinctrl", },
2535         { },
2536 };
2537
2538 static struct platform_driver aspeed_g4_pinctrl_driver = {
2539         .probe = aspeed_g4_pinctrl_probe,
2540         .driver = {
2541                 .name = "aspeed-g4-pinctrl",
2542                 .of_match_table = aspeed_g4_pinctrl_of_match,
2543         },
2544 };
2545
2546 static int aspeed_g4_pinctrl_init(void)
2547 {
2548         return platform_driver_register(&aspeed_g4_pinctrl_driver);
2549 }
2550
2551 arch_initcall(aspeed_g4_pinctrl_init);