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);
2552