2 * Copyright (C) 2016 IBM Corp.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 #include <linux/bitops.h>
10 #include <linux/init.h>
12 #include <linux/kernel.h>
13 #include <linux/mutex.h>
15 #include <linux/platform_device.h>
16 #include <linux/pinctrl/pinctrl.h>
17 #include <linux/pinctrl/pinmux.h>
18 #include <linux/pinctrl/pinconf.h>
19 #include <linux/pinctrl/pinconf-generic.h>
20 #include <linux/string.h>
21 #include <linux/types.h>
24 #include "../pinctrl-utils.h"
25 #include "pinctrl-aspeed.h"
28 * Uses undefined macros for symbol naming and references, eg GPIOA0, MAC1LINK,
31 * Pins are defined in GPIO bank order:
43 * Not all pins have their signals defined (yet).
47 SSSF_PIN_DECL(A4
, GPIOA2
, TIMER3
, SIG_DESC_SET(SCU80
, 2));
49 #define I2C9_DESC SIG_DESC_SET(SCU90, 22)
52 SIG_EXPR_LIST_DECL_SINGLE(SCL9
, I2C9
, I2C9_DESC
);
53 SIG_EXPR_LIST_DECL_SINGLE(TIMER5
, TIMER5
, SIG_DESC_SET(SCU80
, 4));
54 MS_PIN_DECL(C5
, GPIOA4
, SCL9
, TIMER5
);
56 FUNC_GROUP_DECL(TIMER5
, C5
);
59 SIG_EXPR_LIST_DECL_SINGLE(SDA9
, I2C9
, I2C9_DESC
);
60 SIG_EXPR_LIST_DECL_SINGLE(TIMER6
, TIMER6
, SIG_DESC_SET(SCU80
, 5));
61 MS_PIN_DECL(B4
, GPIOA5
, SDA9
, TIMER6
);
63 FUNC_GROUP_DECL(TIMER6
, B4
);
64 FUNC_GROUP_DECL(I2C9
, C5
, B4
);
66 #define MDIO2_DESC SIG_DESC_SET(SCU90, 2)
69 SIG_EXPR_LIST_DECL_SINGLE(MDC2
, MDIO2
, MDIO2_DESC
);
70 SIG_EXPR_LIST_DECL_SINGLE(TIMER7
, TIMER7
, SIG_DESC_SET(SCU80
, 6));
71 MS_PIN_DECL(A3
, GPIOA6
, MDC2
, TIMER7
);
73 FUNC_GROUP_DECL(TIMER7
, A3
);
76 SIG_EXPR_LIST_DECL_SINGLE(MDIO2
, MDIO2
, MDIO2_DESC
);
77 SIG_EXPR_LIST_DECL_SINGLE(TIMER8
, TIMER8
, SIG_DESC_SET(SCU80
, 7));
78 MS_PIN_DECL(D5
, GPIOA7
, MDIO2
, TIMER8
);
80 FUNC_GROUP_DECL(TIMER8
, D5
);
81 FUNC_GROUP_DECL(MDIO2
, A3
, D5
);
84 #define H19_DESC SIG_DESC_SET(SCU80, 13)
85 SIG_EXPR_LIST_DECL_SINGLE(LPCPD
, LPCPD
, H19_DESC
);
86 SIG_EXPR_LIST_DECL_SINGLE(LPCSMI
, LPCSMI
, H19_DESC
);
87 MS_PIN_DECL(H19
, GPIOB5
, LPCPD
, LPCSMI
);
89 FUNC_GROUP_DECL(LPCPD
, H19
);
90 FUNC_GROUP_DECL(LPCSMI
, H19
);
93 SSSF_PIN_DECL(H20
, GPIOB6
, LPCPME
, SIG_DESC_SET(SCU80
, 14));
95 #define SD1_DESC SIG_DESC_SET(SCU90, 0)
96 #define I2C10_DESC SIG_DESC_SET(SCU90, 23)
99 SIG_EXPR_LIST_DECL_SINGLE(SD1CLK
, SD1
, SD1_DESC
);
100 SIG_EXPR_LIST_DECL_SINGLE(SCL10
, I2C10
, I2C10_DESC
);
101 MS_PIN_DECL(C4
, GPIOC0
, SD1CLK
, SCL10
);
104 SIG_EXPR_LIST_DECL_SINGLE(SD1CMD
, SD1
, SD1_DESC
);
105 SIG_EXPR_LIST_DECL_SINGLE(SDA10
, I2C10
, I2C10_DESC
);
106 MS_PIN_DECL(B3
, GPIOC1
, SD1CMD
, SDA10
);
108 FUNC_GROUP_DECL(I2C10
, C4
, B3
);
110 #define I2C11_DESC SIG_DESC_SET(SCU90, 24)
113 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT0
, SD1
, SD1_DESC
);
114 SIG_EXPR_LIST_DECL_SINGLE(SCL11
, I2C11
, I2C11_DESC
);
115 MS_PIN_DECL(A2
, GPIOC2
, SD1DAT0
, SCL11
);
118 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT1
, SD1
, SD1_DESC
);
119 SIG_EXPR_LIST_DECL_SINGLE(SDA11
, I2C11
, I2C11_DESC
);
120 MS_PIN_DECL(E5
, GPIOC3
, SD1DAT1
, SDA11
);
122 FUNC_GROUP_DECL(I2C11
, A2
, E5
);
124 #define I2C12_DESC SIG_DESC_SET(SCU90, 25)
127 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT2
, SD1
, SD1_DESC
);
128 SIG_EXPR_LIST_DECL_SINGLE(SCL12
, I2C12
, I2C12_DESC
);
129 MS_PIN_DECL(D4
, GPIOC4
, SD1DAT2
, SCL12
);
132 SIG_EXPR_LIST_DECL_SINGLE(SD1DAT3
, SD1
, SD1_DESC
);
133 SIG_EXPR_LIST_DECL_SINGLE(SDA12
, I2C12
, I2C12_DESC
);
134 MS_PIN_DECL(C3
, GPIOC5
, SD1DAT3
, SDA12
);
136 FUNC_GROUP_DECL(I2C12
, D4
, C3
);
138 #define I2C13_DESC SIG_DESC_SET(SCU90, 26)
141 SIG_EXPR_LIST_DECL_SINGLE(SD1CD
, SD1
, SD1_DESC
);
142 SIG_EXPR_LIST_DECL_SINGLE(SCL13
, I2C13
, I2C13_DESC
);
143 MS_PIN_DECL(B2
, GPIOC6
, SD1CD
, SCL13
);
146 SIG_EXPR_LIST_DECL_SINGLE(SD1WP
, SD1
, SD1_DESC
);
147 SIG_EXPR_LIST_DECL_SINGLE(SDA13
, I2C13
, I2C13_DESC
);
148 MS_PIN_DECL(A1
, GPIOC7
, SD1WP
, SDA13
);
150 FUNC_GROUP_DECL(I2C13
, B2
, A1
);
151 FUNC_GROUP_DECL(SD1
, C4
, B3
, A2
, E5
, D4
, C3
, B2
, A1
);
153 #define SD2_DESC SIG_DESC_SET(SCU90, 1)
154 #define GPID_DESC SIG_DESC_SET(HW_STRAP1, 21)
155 #define GPID0_DESC SIG_DESC_SET(SCU8C, 8)
158 SIG_EXPR_LIST_DECL_SINGLE(SD2CLK
, SD2
, SD2_DESC
);
159 SIG_EXPR_DECL(GPID0IN
, GPID0
, GPID0_DESC
);
160 SIG_EXPR_DECL(GPID0IN
, GPID
, GPID_DESC
);
161 SIG_EXPR_LIST_DECL_DUAL(GPID0IN
, GPID0
, GPID
);
162 MS_PIN_DECL(A18
, GPIOD0
, SD2CLK
, GPID0IN
);
165 SIG_EXPR_LIST_DECL_SINGLE(SD2CMD
, SD2
, SD2_DESC
);
166 SIG_EXPR_DECL(GPID0OUT
, GPID0
, GPID0_DESC
);
167 SIG_EXPR_DECL(GPID0OUT
, GPID
, GPID_DESC
);
168 SIG_EXPR_LIST_DECL_DUAL(GPID0OUT
, GPID0
, GPID
);
169 MS_PIN_DECL(D16
, GPIOD1
, SD2CMD
, GPID0OUT
);
171 FUNC_GROUP_DECL(GPID0
, A18
, D16
);
173 #define GPIE_DESC SIG_DESC_SET(HW_STRAP1, 22)
174 #define GPIE0_DESC SIG_DESC_SET(SCU8C, 12)
175 #define GPIE2_DESC SIG_DESC_SET(SCU8C, 13)
176 #define GPIE4_DESC SIG_DESC_SET(SCU8C, 14)
177 #define GPIE6_DESC SIG_DESC_SET(SCU8C, 15)
180 SIG_EXPR_LIST_DECL_SINGLE(NCTS3
, NCTS3
, SIG_DESC_SET(SCU80
, 16));
181 SIG_EXPR_DECL(GPIE0IN
, GPIE0
, GPIE0_DESC
);
182 SIG_EXPR_DECL(GPIE0IN
, GPIE
, GPIE_DESC
);
183 SIG_EXPR_LIST_DECL_DUAL(GPIE0IN
, GPIE0
, GPIE
);
184 MS_PIN_DECL(D15
, GPIOE0
, NCTS3
, GPIE0IN
);
186 FUNC_GROUP_DECL(NCTS3
, D15
);
189 SIG_EXPR_LIST_DECL_SINGLE(NDCD3
, NDCD3
, SIG_DESC_SET(SCU80
, 17));
190 SIG_EXPR_DECL(GPIE0OUT
, GPIE0
, GPIE0_DESC
);
191 SIG_EXPR_DECL(GPIE0OUT
, GPIE
, GPIE_DESC
);
192 SIG_EXPR_LIST_DECL_DUAL(GPIE0OUT
, GPIE0
, GPIE
);
193 MS_PIN_DECL(C15
, GPIOE1
, NDCD3
, GPIE0OUT
);
195 FUNC_GROUP_DECL(NDCD3
, C15
);
196 FUNC_GROUP_DECL(GPIE0
, D15
, C15
);
199 SIG_EXPR_LIST_DECL_SINGLE(NDSR3
, NDSR3
, SIG_DESC_SET(SCU80
, 18));
200 SIG_EXPR_DECL(GPIE2IN
, GPIE2
, GPIE2_DESC
);
201 SIG_EXPR_DECL(GPIE2IN
, GPIE
, GPIE_DESC
);
202 SIG_EXPR_LIST_DECL_DUAL(GPIE2IN
, GPIE2
, GPIE
);
203 MS_PIN_DECL(B15
, GPIOE2
, NDSR3
, GPIE2IN
);
205 FUNC_GROUP_DECL(NDSR3
, B15
);
208 SIG_EXPR_LIST_DECL_SINGLE(NRI3
, NRI3
, SIG_DESC_SET(SCU80
, 19));
209 SIG_EXPR_DECL(GPIE2OUT
, GPIE2
, GPIE2_DESC
);
210 SIG_EXPR_DECL(GPIE2OUT
, GPIE
, GPIE_DESC
);
211 SIG_EXPR_LIST_DECL_DUAL(GPIE2OUT
, GPIE2
, GPIE
);
212 MS_PIN_DECL(A15
, GPIOE3
, NRI3
, GPIE2OUT
);
214 FUNC_GROUP_DECL(NRI3
, A15
);
215 FUNC_GROUP_DECL(GPIE2
, B15
, A15
);
218 SIG_EXPR_LIST_DECL_SINGLE(NDTR3
, NDTR3
, SIG_DESC_SET(SCU80
, 20));
219 SIG_EXPR_DECL(GPIE4IN
, GPIE4
, GPIE4_DESC
);
220 SIG_EXPR_DECL(GPIE4IN
, GPIE
, GPIE_DESC
);
221 SIG_EXPR_LIST_DECL_DUAL(GPIE4IN
, GPIE4
, GPIE
);
222 MS_PIN_DECL(E14
, GPIOE4
, NDTR3
, GPIE4IN
);
224 FUNC_GROUP_DECL(NDTR3
, E14
);
227 SIG_EXPR_LIST_DECL_SINGLE(NRTS3
, NRTS3
, SIG_DESC_SET(SCU80
, 21));
228 SIG_EXPR_DECL(GPIE4OUT
, GPIE4
, GPIE4_DESC
);
229 SIG_EXPR_DECL(GPIE4OUT
, GPIE
, GPIE_DESC
);
230 SIG_EXPR_LIST_DECL_DUAL(GPIE4OUT
, GPIE4
, GPIE
);
231 MS_PIN_DECL(D14
, GPIOE5
, NRTS3
, GPIE4OUT
);
233 FUNC_GROUP_DECL(NRTS3
, D14
);
234 FUNC_GROUP_DECL(GPIE4
, E14
, D14
);
237 SIG_EXPR_LIST_DECL_SINGLE(TXD3
, TXD3
, SIG_DESC_SET(SCU80
, 22));
238 SIG_EXPR_DECL(GPIE6IN
, GPIE6
, GPIE6_DESC
);
239 SIG_EXPR_DECL(GPIE6IN
, GPIE
, GPIE_DESC
);
240 SIG_EXPR_LIST_DECL_DUAL(GPIE6IN
, GPIE6
, GPIE
);
241 MS_PIN_DECL(C14
, GPIOE6
, TXD3
, GPIE6IN
);
243 FUNC_GROUP_DECL(TXD3
, C14
);
246 SIG_EXPR_LIST_DECL_SINGLE(RXD3
, RXD3
, SIG_DESC_SET(SCU80
, 23));
247 SIG_EXPR_DECL(GPIE6OUT
, GPIE6
, GPIE6_DESC
);
248 SIG_EXPR_DECL(GPIE6OUT
, GPIE
, GPIE_DESC
);
249 SIG_EXPR_LIST_DECL_DUAL(GPIE6OUT
, GPIE6
, GPIE
);
250 MS_PIN_DECL(B14
, GPIOE7
, RXD3
, GPIE6OUT
);
252 FUNC_GROUP_DECL(RXD3
, B14
);
253 FUNC_GROUP_DECL(GPIE6
, C14
, B14
);
256 SSSF_PIN_DECL(D18
, GPIOF0
, NCTS4
, SIG_DESC_SET(SCU80
, 24));
258 #define ACPI_DESC SIG_DESC_BIT(HW_STRAP1, 19, 0)
261 SIG_EXPR_LIST_DECL_SINGLE(NDCD4
, NDCD4
, SIG_DESC_SET(SCU80
, 25));
262 SIG_EXPR_DECL(SIOPBI
, SIOPBI
, SIG_DESC_SET(SCUA4
, 12));
263 SIG_EXPR_DECL(SIOPBI
, ACPI
, ACPI_DESC
);
264 SIG_EXPR_LIST_DECL_DUAL(SIOPBI
, SIOPBI
, ACPI
);
265 MS_PIN_DECL(B19
, GPIOF1
, NDCD4
, SIOPBI
);
266 FUNC_GROUP_DECL(NDCD4
, B19
);
267 FUNC_GROUP_DECL(SIOPBI
, B19
);
270 SIG_EXPR_LIST_DECL_SINGLE(NRI4
, NRI4
, SIG_DESC_SET(SCU80
, 27));
271 SIG_EXPR_DECL(SIOPBO
, SIOPBO
, SIG_DESC_SET(SCUA4
, 14));
272 SIG_EXPR_DECL(SIOPBO
, ACPI
, ACPI_DESC
);
273 SIG_EXPR_LIST_DECL_DUAL(SIOPBO
, SIOPBO
, ACPI
);
274 MS_PIN_DECL(D17
, GPIOF3
, NRI4
, SIOPBO
);
275 FUNC_GROUP_DECL(NRI4
, D17
);
276 FUNC_GROUP_DECL(SIOPBO
, D17
);
278 FUNC_GROUP_DECL(ACPI
, B19
, D17
);
281 SSSF_PIN_DECL(E16
, GPIOF6
, TXD4
, SIG_DESC_SET(SCU80
, 30));
284 SSSF_PIN_DECL(C17
, GPIOF7
, RXD4
, SIG_DESC_SET(SCU80
, 31));
287 SSSF_PIN_DECL(AA22
, GPIOG6
, FLBUSY
, SIG_DESC_SET(SCU84
, 6));
290 SSSF_PIN_DECL(U18
, GPIOG7
, FLWP
, SIG_DESC_SET(SCU84
, 7));
292 #define UART6_DESC SIG_DESC_SET(SCU90, 7)
293 #define ROM16_DESC SIG_DESC_SET(SCU90, 6)
294 #define FLASH_WIDE SIG_DESC_SET(HW_STRAP1, 4)
295 #define BOOT_SRC_NOR { HW_STRAP1, GENMASK(1, 0), 0, 0 }
298 SIG_EXPR_DECL(ROMD8
, ROM16
, ROM16_DESC
);
299 SIG_EXPR_DECL(ROMD8
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
300 SIG_EXPR_LIST_DECL_DUAL(ROMD8
, ROM16
, ROM16S
);
301 SIG_EXPR_LIST_DECL_SINGLE(NCTS6
, NCTS6
, UART6_DESC
);
302 MS_PIN_DECL(A8
, GPIOH0
, ROMD8
, NCTS6
);
305 SIG_EXPR_DECL(ROMD9
, ROM16
, ROM16_DESC
);
306 SIG_EXPR_DECL(ROMD9
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
307 SIG_EXPR_LIST_DECL_DUAL(ROMD9
, ROM16
, ROM16S
);
308 SIG_EXPR_LIST_DECL_SINGLE(NDCD6
, NDCD6
, UART6_DESC
);
309 MS_PIN_DECL(C7
, GPIOH1
, ROMD9
, NDCD6
);
312 SIG_EXPR_DECL(ROMD10
, ROM16
, ROM16_DESC
);
313 SIG_EXPR_DECL(ROMD10
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
314 SIG_EXPR_LIST_DECL_DUAL(ROMD10
, ROM16
, ROM16S
);
315 SIG_EXPR_LIST_DECL_SINGLE(NDSR6
, NDSR6
, UART6_DESC
);
316 MS_PIN_DECL(B7
, GPIOH2
, ROMD10
, NDSR6
);
319 SIG_EXPR_DECL(ROMD11
, ROM16
, ROM16_DESC
);
320 SIG_EXPR_DECL(ROMD11
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
321 SIG_EXPR_LIST_DECL_DUAL(ROMD11
, ROM16
, ROM16S
);
322 SIG_EXPR_LIST_DECL_SINGLE(NRI6
, NRI6
, UART6_DESC
);
323 MS_PIN_DECL(A7
, GPIOH3
, ROMD11
, NRI6
);
326 SIG_EXPR_DECL(ROMD12
, ROM16
, ROM16_DESC
);
327 SIG_EXPR_DECL(ROMD12
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
328 SIG_EXPR_LIST_DECL_DUAL(ROMD12
, ROM16
, ROM16S
);
329 SIG_EXPR_LIST_DECL_SINGLE(NDTR6
, NDTR6
, UART6_DESC
);
330 MS_PIN_DECL(D7
, GPIOH4
, ROMD12
, NDTR6
);
333 SIG_EXPR_DECL(ROMD13
, ROM16
, ROM16_DESC
);
334 SIG_EXPR_DECL(ROMD13
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
335 SIG_EXPR_LIST_DECL_DUAL(ROMD13
, ROM16
, ROM16S
);
336 SIG_EXPR_LIST_DECL_SINGLE(NRTS6
, NRTS6
, UART6_DESC
);
337 MS_PIN_DECL(B6
, GPIOH5
, ROMD13
, NRTS6
);
340 SIG_EXPR_DECL(ROMD14
, ROM16
, ROM16_DESC
);
341 SIG_EXPR_DECL(ROMD14
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
342 SIG_EXPR_LIST_DECL_DUAL(ROMD14
, ROM16
, ROM16S
);
343 SIG_EXPR_LIST_DECL_SINGLE(TXD6
, TXD6
, UART6_DESC
);
344 MS_PIN_DECL(A6
, GPIOH6
, ROMD14
, TXD6
);
347 SIG_EXPR_DECL(ROMD15
, ROM16
, ROM16_DESC
);
348 SIG_EXPR_DECL(ROMD15
, ROM16S
, FLASH_WIDE
, BOOT_SRC_NOR
);
349 SIG_EXPR_LIST_DECL_DUAL(ROMD15
, ROM16
, ROM16S
);
350 SIG_EXPR_LIST_DECL_SINGLE(RXD6
, RXD6
, UART6_DESC
);
351 MS_PIN_DECL(E7
, GPIOH7
, ROMD15
, RXD6
);
353 FUNC_GROUP_DECL(UART6
, A8
, C7
, B7
, A7
, D7
, B6
, A6
, E7
);
356 SSSF_PIN_DECL(J3
, GPIOJ3
, SGPMI
, SIG_DESC_SET(SCU84
, 11));
359 SSSF_PIN_DECL(T4
, GPIOJ4
, VGAHS
, SIG_DESC_SET(SCU84
, 12));
362 SSSF_PIN_DECL(U2
, GPIOJ5
, VGAVS
, SIG_DESC_SET(SCU84
, 13));
365 SSSF_PIN_DECL(T2
, GPIOJ6
, DDCCLK
, SIG_DESC_SET(SCU84
, 14));
368 SSSF_PIN_DECL(T1
, GPIOJ7
, DDCDAT
, SIG_DESC_SET(SCU84
, 15));
370 #define I2C5_DESC SIG_DESC_SET(SCU90, 18)
373 SIG_EXPR_LIST_DECL_SINGLE(SCL5
, I2C5
, I2C5_DESC
);
374 SS_PIN_DECL(E3
, GPIOK0
, SCL5
);
377 SIG_EXPR_LIST_DECL_SINGLE(SDA5
, I2C5
, I2C5_DESC
);
378 SS_PIN_DECL(D2
, GPIOK1
, SDA5
);
380 FUNC_GROUP_DECL(I2C5
, E3
, D2
);
382 #define I2C6_DESC SIG_DESC_SET(SCU90, 19)
385 SIG_EXPR_LIST_DECL_SINGLE(SCL6
, I2C6
, I2C6_DESC
);
386 SS_PIN_DECL(C1
, GPIOK2
, SCL6
);
389 SIG_EXPR_LIST_DECL_SINGLE(SDA6
, I2C6
, I2C6_DESC
);
390 SS_PIN_DECL(F4
, GPIOK3
, SDA6
);
392 FUNC_GROUP_DECL(I2C6
, C1
, F4
);
394 #define I2C7_DESC SIG_DESC_SET(SCU90, 20)
397 SIG_EXPR_LIST_DECL_SINGLE(SCL7
, I2C7
, I2C7_DESC
);
398 SS_PIN_DECL(E2
, GPIOK4
, SCL7
);
401 SIG_EXPR_LIST_DECL_SINGLE(SDA7
, I2C7
, I2C7_DESC
);
402 SS_PIN_DECL(D1
, GPIOK5
, SDA7
);
404 FUNC_GROUP_DECL(I2C7
, E2
, D1
);
406 #define I2C8_DESC SIG_DESC_SET(SCU90, 21)
409 SIG_EXPR_LIST_DECL_SINGLE(SCL8
, I2C8
, I2C8_DESC
);
410 SS_PIN_DECL(G5
, GPIOK6
, SCL8
);
413 SIG_EXPR_LIST_DECL_SINGLE(SDA8
, I2C8
, I2C8_DESC
);
414 SS_PIN_DECL(F3
, GPIOK7
, SDA8
);
416 FUNC_GROUP_DECL(I2C8
, G5
, F3
);
419 SSSF_PIN_DECL(U1
, GPIOL0
, NCTS1
, SIG_DESC_SET(SCU84
, 16));
421 #define VPI18_DESC { SCU90, GENMASK(5, 4), 1, 0 }
422 #define VPI24_DESC { SCU90, GENMASK(5, 4), 2, 0 }
423 #define VPI30_DESC { SCU90, GENMASK(5, 4), 3, 0 }
426 #define T5_DESC SIG_DESC_SET(SCU84, 17)
427 SIG_EXPR_DECL(VPIDE
, VPI18
, VPI18_DESC
, T5_DESC
);
428 SIG_EXPR_DECL(VPIDE
, VPI24
, VPI24_DESC
, T5_DESC
);
429 SIG_EXPR_DECL(VPIDE
, VPI30
, VPI30_DESC
, T5_DESC
);
430 SIG_EXPR_LIST_DECL(VPIDE
, SIG_EXPR_PTR(VPIDE
, VPI18
),
431 SIG_EXPR_PTR(VPIDE
, VPI24
),
432 SIG_EXPR_PTR(VPIDE
, VPI30
));
433 SIG_EXPR_LIST_DECL_SINGLE(NDCD1
, NDCD1
, T5_DESC
);
434 MS_PIN_DECL(T5
, GPIOL1
, VPIDE
, NDCD1
);
435 FUNC_GROUP_DECL(NDCD1
, T5
);
438 #define U3_DESC SIG_DESC_SET(SCU84, 18)
439 SIG_EXPR_DECL(VPIODD
, VPI18
, VPI18_DESC
, U3_DESC
);
440 SIG_EXPR_DECL(VPIODD
, VPI24
, VPI24_DESC
, U3_DESC
);
441 SIG_EXPR_DECL(VPIODD
, VPI30
, VPI30_DESC
, U3_DESC
);
442 SIG_EXPR_LIST_DECL(VPIODD
, SIG_EXPR_PTR(VPIODD
, VPI18
),
443 SIG_EXPR_PTR(VPIODD
, VPI24
),
444 SIG_EXPR_PTR(VPIODD
, VPI30
));
445 SIG_EXPR_LIST_DECL_SINGLE(NDSR1
, NDSR1
, U3_DESC
);
446 MS_PIN_DECL(U3
, GPIOL2
, VPIODD
, NDSR1
);
447 FUNC_GROUP_DECL(NDSR1
, U3
);
450 #define V1_DESC SIG_DESC_SET(SCU84, 19)
451 SIG_EXPR_DECL(VPIHS
, VPI18
, VPI18_DESC
, V1_DESC
);
452 SIG_EXPR_DECL(VPIHS
, VPI24
, VPI24_DESC
, V1_DESC
);
453 SIG_EXPR_DECL(VPIHS
, VPI30
, VPI30_DESC
, V1_DESC
);
454 SIG_EXPR_LIST_DECL(VPIHS
, SIG_EXPR_PTR(VPIHS
, VPI18
),
455 SIG_EXPR_PTR(VPIHS
, VPI24
),
456 SIG_EXPR_PTR(VPIHS
, VPI30
));
457 SIG_EXPR_LIST_DECL_SINGLE(NRI1
, NRI1
, V1_DESC
);
458 MS_PIN_DECL(V1
, GPIOL3
, VPIHS
, NRI1
);
459 FUNC_GROUP_DECL(NRI1
, V1
);
462 #define U4_DESC SIG_DESC_SET(SCU84, 20)
463 SIG_EXPR_DECL(VPIVS
, VPI18
, VPI18_DESC
, U4_DESC
);
464 SIG_EXPR_DECL(VPIVS
, VPI24
, VPI24_DESC
, U4_DESC
);
465 SIG_EXPR_DECL(VPIVS
, VPI30
, VPI30_DESC
, U4_DESC
);
466 SIG_EXPR_LIST_DECL(VPIVS
, SIG_EXPR_PTR(VPIVS
, VPI18
),
467 SIG_EXPR_PTR(VPIVS
, VPI24
),
468 SIG_EXPR_PTR(VPIVS
, VPI30
));
469 SIG_EXPR_LIST_DECL_SINGLE(NDTR1
, NDTR1
, U4_DESC
);
470 MS_PIN_DECL(U4
, GPIOL4
, VPIVS
, NDTR1
);
471 FUNC_GROUP_DECL(NDTR1
, U4
);
474 #define V2_DESC SIG_DESC_SET(SCU84, 21)
475 SIG_EXPR_DECL(VPICLK
, VPI18
, VPI18_DESC
, V2_DESC
);
476 SIG_EXPR_DECL(VPICLK
, VPI24
, VPI24_DESC
, V2_DESC
);
477 SIG_EXPR_DECL(VPICLK
, VPI30
, VPI30_DESC
, V2_DESC
);
478 SIG_EXPR_LIST_DECL(VPICLK
, SIG_EXPR_PTR(VPICLK
, VPI18
),
479 SIG_EXPR_PTR(VPICLK
, VPI24
),
480 SIG_EXPR_PTR(VPICLK
, VPI30
));
481 SIG_EXPR_LIST_DECL_SINGLE(NRTS1
, NRTS1
, V2_DESC
);
482 MS_PIN_DECL(V2
, GPIOL5
, VPICLK
, NRTS1
);
483 FUNC_GROUP_DECL(NRTS1
, V2
);
486 #define W1_DESC SIG_DESC_SET(SCU84, 22)
487 SIG_EXPR_LIST_DECL_SINGLE(VPIB0
, VPI30
, VPI30_DESC
, W1_DESC
);
488 SIG_EXPR_LIST_DECL_SINGLE(TXD1
, TXD1
, W1_DESC
);
489 MS_PIN_DECL(W1
, GPIOL6
, VPIB0
, TXD1
);
490 FUNC_GROUP_DECL(TXD1
, W1
);
493 #define U5_DESC SIG_DESC_SET(SCU84, 23)
494 SIG_EXPR_LIST_DECL_SINGLE(VPIB1
, VPI30
, VPI30_DESC
, U5_DESC
);
495 SIG_EXPR_LIST_DECL_SINGLE(RXD1
, RXD1
, U5_DESC
);
496 MS_PIN_DECL(U5
, GPIOL7
, VPIB1
, RXD1
);
497 FUNC_GROUP_DECL(RXD1
, U5
);
500 #define W4_DESC SIG_DESC_SET(SCU88, 0)
501 SIG_EXPR_LIST_DECL_SINGLE(VPIG0
, VPI30
, VPI30_DESC
, W4_DESC
);
502 SIG_EXPR_LIST_DECL_SINGLE(PWM0
, PWM0
, W4_DESC
);
503 MS_PIN_DECL(W4
, GPION0
, VPIG0
, PWM0
);
504 FUNC_GROUP_DECL(PWM0
, W4
);
507 #define Y3_DESC SIG_DESC_SET(SCU88, 1)
508 SIG_EXPR_LIST_DECL_SINGLE(VPIG1
, VPI30
, VPI30_DESC
, Y3_DESC
);
509 SIG_EXPR_LIST_DECL_SINGLE(PWM1
, PWM1
, Y3_DESC
);
510 MS_PIN_DECL(Y3
, GPION1
, VPIG1
, PWM1
);
511 FUNC_GROUP_DECL(PWM1
, Y3
);
514 #define AA2_DESC SIG_DESC_SET(SCU88, 2)
515 SIG_EXPR_DECL(VPIG2
, VPI18
, VPI18_DESC
, AA2_DESC
);
516 SIG_EXPR_DECL(VPIG2
, VPI24
, VPI24_DESC
, AA2_DESC
);
517 SIG_EXPR_DECL(VPIG2
, VPI30
, VPI30_DESC
, AA2_DESC
);
518 SIG_EXPR_LIST_DECL(VPIG2
, SIG_EXPR_PTR(VPIG2
, VPI18
),
519 SIG_EXPR_PTR(VPIG2
, VPI24
),
520 SIG_EXPR_PTR(VPIG2
, VPI30
));
521 SIG_EXPR_LIST_DECL_SINGLE(PWM2
, PWM2
, AA2_DESC
);
522 MS_PIN_DECL(AA2
, GPION2
, VPIG2
, PWM2
);
523 FUNC_GROUP_DECL(PWM2
, AA2
);
526 #define AB1_DESC SIG_DESC_SET(SCU88, 3)
527 SIG_EXPR_DECL(VPIG3
, VPI18
, VPI18_DESC
, AB1_DESC
);
528 SIG_EXPR_DECL(VPIG3
, VPI24
, VPI24_DESC
, AB1_DESC
);
529 SIG_EXPR_DECL(VPIG3
, VPI30
, VPI30_DESC
, AB1_DESC
);
530 SIG_EXPR_LIST_DECL(VPIG3
, SIG_EXPR_PTR(VPIG3
, VPI18
),
531 SIG_EXPR_PTR(VPIG2
, VPI24
),
532 SIG_EXPR_PTR(VPIG2
, VPI30
));
533 SIG_EXPR_LIST_DECL_SINGLE(PWM3
, PWM3
, AB1_DESC
);
534 MS_PIN_DECL(AB1
, GPION3
, VPIG3
, PWM3
);
535 FUNC_GROUP_DECL(PWM3
, AB1
);
538 #define W5_DESC SIG_DESC_SET(SCU88, 4)
539 SIG_EXPR_DECL(VPIG4
, VPI18
, VPI18_DESC
, W5_DESC
);
540 SIG_EXPR_DECL(VPIG4
, VPI24
, VPI24_DESC
, W5_DESC
);
541 SIG_EXPR_DECL(VPIG4
, VPI30
, VPI30_DESC
, W5_DESC
);
542 SIG_EXPR_LIST_DECL(VPIG4
, SIG_EXPR_PTR(VPIG4
, VPI18
),
543 SIG_EXPR_PTR(VPIG2
, VPI24
),
544 SIG_EXPR_PTR(VPIG2
, VPI30
));
545 SIG_EXPR_LIST_DECL_SINGLE(PWM4
, PWM4
, W5_DESC
);
546 MS_PIN_DECL(W5
, GPION4
, VPIG4
, PWM4
);
547 FUNC_GROUP_DECL(PWM4
, W5
);
550 #define Y4_DESC SIG_DESC_SET(SCU88, 5)
551 SIG_EXPR_DECL(VPIG5
, VPI18
, VPI18_DESC
, Y4_DESC
);
552 SIG_EXPR_DECL(VPIG5
, VPI24
, VPI24_DESC
, Y4_DESC
);
553 SIG_EXPR_DECL(VPIG5
, VPI30
, VPI30_DESC
, Y4_DESC
);
554 SIG_EXPR_LIST_DECL(VPIG5
, SIG_EXPR_PTR(VPIG5
, VPI18
),
555 SIG_EXPR_PTR(VPIG2
, VPI24
),
556 SIG_EXPR_PTR(VPIG2
, VPI30
));
557 SIG_EXPR_LIST_DECL_SINGLE(PWM5
, PWM5
, Y4_DESC
);
558 MS_PIN_DECL(Y4
, GPION5
, VPIG5
, PWM5
);
559 FUNC_GROUP_DECL(PWM5
, Y4
);
562 #define AA3_DESC SIG_DESC_SET(SCU88, 6)
563 SIG_EXPR_LIST_DECL_SINGLE(VPIG6
, VPI30
, VPI30_DESC
, AA3_DESC
);
564 SIG_EXPR_LIST_DECL_SINGLE(PWM6
, PWM6
, AA3_DESC
);
565 MS_PIN_DECL(AA3
, GPION6
, VPIG6
, PWM6
);
566 FUNC_GROUP_DECL(PWM6
, AA3
);
569 #define AB2_DESC SIG_DESC_SET(SCU88, 7)
570 SIG_EXPR_LIST_DECL_SINGLE(VPIG7
, VPI30
, VPI30_DESC
, AB2_DESC
);
571 SIG_EXPR_LIST_DECL_SINGLE(PWM7
, PWM7
, AB2_DESC
);
572 MS_PIN_DECL(AB2
, GPION7
, VPIG7
, PWM7
);
573 FUNC_GROUP_DECL(PWM7
, AB2
);
576 SIG_EXPR_LIST_DECL_SINGLE(VPIG8
, VPI24
, VPI24_DESC
, SIG_DESC_SET(SCU88
, 8));
577 SS_PIN_DECL(V6
, GPIOO0
, VPIG8
);
580 SIG_EXPR_LIST_DECL_SINGLE(VPIG9
, VPI24
, VPI24_DESC
, SIG_DESC_SET(SCU88
, 9));
581 SS_PIN_DECL(Y5
, GPIOO1
, VPIG9
);
583 FUNC_GROUP_DECL(VPI18
, T5
, U3
, V1
, U4
, V2
, AA22
, W5
, Y4
, AA3
, AB2
);
584 FUNC_GROUP_DECL(VPI24
, T5
, U3
, V1
, U4
, V2
, AA22
, W5
, Y4
, AA3
, AB2
, V6
, Y5
);
585 FUNC_GROUP_DECL(VPI30
, T5
, U3
, V1
, U4
, V2
, W1
, U5
, W4
, Y3
, AA22
, W5
, Y4
, AA3
,
589 SIG_EXPR_LIST_DECL_SINGLE(GPIOP5
, GPIOP5
);
590 MS_PIN_DECL_(Y7
, SIG_EXPR_LIST_PTR(GPIOP5
));
593 SSSF_PIN_DECL(AA7
, GPIOP6
, BMCINT
, SIG_DESC_SET(SCU88
, 22));
596 SSSF_PIN_DECL(AB7
, GPIOP7
, FLACK
, SIG_DESC_SET(SCU88
, 23));
598 #define I2C3_DESC SIG_DESC_SET(SCU90, 16)
601 SIG_EXPR_LIST_DECL_SINGLE(SCL3
, I2C3
, I2C3_DESC
);
602 SS_PIN_DECL(D3
, GPIOQ0
, SCL3
);
605 SIG_EXPR_LIST_DECL_SINGLE(SDA3
, I2C3
, I2C3_DESC
);
606 SS_PIN_DECL(C2
, GPIOQ1
, SDA3
);
608 FUNC_GROUP_DECL(I2C3
, D3
, C2
);
610 #define I2C4_DESC SIG_DESC_SET(SCU90, 17)
613 SIG_EXPR_LIST_DECL_SINGLE(SCL4
, I2C4
, I2C4_DESC
);
614 SS_PIN_DECL(B1
, GPIOQ2
, SCL4
);
617 SIG_EXPR_LIST_DECL_SINGLE(SDA4
, I2C4
, I2C4_DESC
);
618 SS_PIN_DECL(F5
, GPIOQ3
, SDA4
);
620 FUNC_GROUP_DECL(I2C4
, B1
, F5
);
622 #define DASH9028_DESC SIG_DESC_SET(SCU90, 28)
625 SIG_EXPR_LIST_DECL_SINGLE(DASHH2
, DASHH2
, DASH9028_DESC
);
626 SS_PIN_DECL(H2
, GPIOQ6
, DASHH2
);
629 SIG_EXPR_LIST_DECL_SINGLE(DASHH1
, DASHH1
, DASH9028_DESC
);
630 SS_PIN_DECL(H1
, GPIOQ7
, DASHH1
);
633 SSSF_PIN_DECL(V20
, GPIOR0
, ROMCS1
, SIG_DESC_SET(SCU88
, 24));
636 SSSF_PIN_DECL(W21
, GPIOR1
, ROMCS2
, SIG_DESC_SET(SCU88
, 25));
639 SSSF_PIN_DECL(Y22
, GPIOR2
, ROMCS3
, SIG_DESC_SET(SCU88
, 26));
642 SSSF_PIN_DECL(U19
, GPIOR3
, ROMCS4
, SIG_DESC_SET(SCU88
, 27));
644 #define VPOOFF0_DESC { SCU94, GENMASK(1, 0), 0, 0 }
645 #define VPO12_DESC { SCU94, GENMASK(1, 0), 1, 0 }
646 #define VPO24_DESC { SCU94, GENMASK(1, 0), 2, 0 }
647 #define VPOOFF1_DESC { SCU94, GENMASK(1, 0), 3, 0 }
648 #define VPO_OFF_12 { SCU94, 0x2, 0, 0 }
649 #define VPO_24_OFF SIG_DESC_SET(SCU94, 1)
652 #define V21_DESC SIG_DESC_SET(SCU88, 28)
653 SIG_EXPR_DECL(ROMA24
, ROM8
, V21_DESC
, VPO_OFF_12
);
654 SIG_EXPR_DECL(ROMA24
, ROM16
, V21_DESC
, VPO_OFF_12
);
655 SIG_EXPR_DECL(ROMA24
, ROM16S
, V21_DESC
, VPO_OFF_12
);
656 SIG_EXPR_LIST_DECL(ROMA24
, SIG_EXPR_PTR(ROMA24
, ROM8
),
657 SIG_EXPR_PTR(ROMA24
, ROM16
),
658 SIG_EXPR_PTR(ROMA24
, ROM16S
));
659 SIG_EXPR_LIST_DECL_SINGLE(VPOR6
, VPO24
, V21_DESC
, VPO_24_OFF
);
660 MS_PIN_DECL(V21
, GPIOR4
, ROMA24
, VPOR6
);
663 #define W22_DESC SIG_DESC_SET(SCU88, 29)
664 SIG_EXPR_DECL(ROMA25
, ROM8
, W22_DESC
, VPO_OFF_12
);
665 SIG_EXPR_DECL(ROMA25
, ROM16
, W22_DESC
, VPO_OFF_12
);
666 SIG_EXPR_DECL(ROMA25
, ROM16S
, W22_DESC
, VPO_OFF_12
);
667 SIG_EXPR_LIST_DECL(ROMA25
, SIG_EXPR_PTR(ROMA25
, ROM8
),
668 SIG_EXPR_PTR(ROMA25
, ROM16
),
669 SIG_EXPR_PTR(ROMA25
, ROM16S
));
670 SIG_EXPR_LIST_DECL_SINGLE(VPOR7
, VPO24
, W22_DESC
, VPO_24_OFF
);
671 MS_PIN_DECL(W22
, GPIOR5
, ROMA25
, VPOR7
);
674 SIG_EXPR_LIST_DECL_SINGLE(MDC1
, MDIO1
, SIG_DESC_SET(SCU88
, 30));
675 SS_PIN_DECL(C6
, GPIOR6
, MDC1
);
678 SIG_EXPR_LIST_DECL_SINGLE(MDIO1
, MDIO1
, SIG_DESC_SET(SCU88
, 31));
679 SS_PIN_DECL(A5
, GPIOR7
, MDIO1
);
681 FUNC_GROUP_DECL(MDIO1
, C6
, A5
);
684 #define U21_DESC SIG_DESC_SET(SCU8C, 0)
685 SIG_EXPR_DECL(ROMD4
, ROM8
, U21_DESC
, VPOOFF0_DESC
);
686 SIG_EXPR_DECL(ROMD4
, ROM16
, U21_DESC
, VPOOFF0_DESC
);
687 SIG_EXPR_DECL(ROMD4
, ROM16S
, U21_DESC
, VPOOFF0_DESC
);
688 SIG_EXPR_LIST_DECL(ROMD4
, SIG_EXPR_PTR(ROMD4
, ROM8
),
689 SIG_EXPR_PTR(ROMD4
, ROM16
),
690 SIG_EXPR_PTR(ROMD4
, ROM16S
));
691 SIG_EXPR_DECL(VPODE
, VPO12
, U21_DESC
, VPO12_DESC
);
692 SIG_EXPR_DECL(VPODE
, VPO24
, U21_DESC
, VPO12_DESC
);
693 SIG_EXPR_LIST_DECL_DUAL(VPODE
, VPO12
, VPO24
);
694 MS_PIN_DECL(U21
, GPIOS0
, ROMD4
, VPODE
);
697 #define T19_DESC SIG_DESC_SET(SCU8C, 1)
698 SIG_EXPR_DECL(ROMD5
, ROM8
, T19_DESC
, VPOOFF0_DESC
);
699 SIG_EXPR_DECL(ROMD5
, ROM16
, T19_DESC
, VPOOFF0_DESC
);
700 SIG_EXPR_DECL(ROMD5
, ROM16S
, T19_DESC
, VPOOFF0_DESC
);
701 SIG_EXPR_LIST_DECL(ROMD5
, SIG_EXPR_PTR(ROMD5
, ROM8
),
702 SIG_EXPR_PTR(ROMD5
, ROM16
),
703 SIG_EXPR_PTR(ROMD5
, ROM16S
));
704 SIG_EXPR_DECL(VPOHS
, VPO12
, T19_DESC
, VPO12_DESC
);
705 SIG_EXPR_DECL(VPOHS
, VPO24
, T19_DESC
, VPO24_DESC
);
706 SIG_EXPR_LIST_DECL_DUAL(VPOHS
, VPO12
, VPO24
);
707 MS_PIN_DECL(T19
, GPIOS1
, ROMD5
, VPOHS
);
710 #define V22_DESC SIG_DESC_SET(SCU8C, 2)
711 SIG_EXPR_DECL(ROMD6
, ROM8
, V22_DESC
, VPOOFF0_DESC
);
712 SIG_EXPR_DECL(ROMD6
, ROM16
, V22_DESC
, VPOOFF0_DESC
);
713 SIG_EXPR_DECL(ROMD6
, ROM16S
, V22_DESC
, VPOOFF0_DESC
);
714 SIG_EXPR_LIST_DECL(ROMD6
, SIG_EXPR_PTR(ROMD6
, ROM8
),
715 SIG_EXPR_PTR(ROMD6
, ROM16
),
716 SIG_EXPR_PTR(ROMD6
, ROM16S
));
717 SIG_EXPR_DECL(VPOVS
, VPO12
, V22_DESC
, VPO12_DESC
);
718 SIG_EXPR_DECL(VPOVS
, VPO24
, V22_DESC
, VPO24_DESC
);
719 SIG_EXPR_LIST_DECL_DUAL(VPOVS
, VPO12
, VPO24
);
720 MS_PIN_DECL(V22
, GPIOS2
, ROMD6
, VPOVS
);
723 #define U20_DESC SIG_DESC_SET(SCU8C, 3)
724 SIG_EXPR_DECL(ROMD7
, ROM8
, U20_DESC
, VPOOFF0_DESC
);
725 SIG_EXPR_DECL(ROMD7
, ROM16
, U20_DESC
, VPOOFF0_DESC
);
726 SIG_EXPR_DECL(ROMD7
, ROM16S
, U20_DESC
, VPOOFF0_DESC
);
727 SIG_EXPR_LIST_DECL(ROMD7
, SIG_EXPR_PTR(ROMD7
, ROM8
),
728 SIG_EXPR_PTR(ROMD7
, ROM16
),
729 SIG_EXPR_PTR(ROMD7
, ROM16S
));
730 SIG_EXPR_DECL(VPOCLK
, VPO12
, U20_DESC
, VPO12_DESC
);
731 SIG_EXPR_DECL(VPOCLK
, VPO24
, U20_DESC
, VPO24_DESC
);
732 SIG_EXPR_LIST_DECL_DUAL(VPOCLK
, VPO12
, VPO24
);
733 MS_PIN_DECL(U20
, GPIOS3
, ROMD7
, VPOCLK
);
736 #define ROMOE_DESC SIG_DESC_SET(SCU8C, 4)
737 SIG_EXPR_LIST_DECL_SINGLE(GPIOS4
, GPIOS4
);
738 SIG_EXPR_DECL(ROMOE
, ROM8
, ROMOE_DESC
);
739 SIG_EXPR_DECL(ROMOE
, ROM16
, ROMOE_DESC
);
740 SIG_EXPR_DECL(ROMOE
, ROM16S
, ROMOE_DESC
);
741 SIG_EXPR_LIST_DECL(ROMOE
, SIG_EXPR_PTR(ROMOE
, ROM8
),
742 SIG_EXPR_PTR(ROMOE
, ROM16
),
743 SIG_EXPR_PTR(ROMOE
, ROM16S
));
744 MS_PIN_DECL_(R18
, SIG_EXPR_LIST_PTR(ROMOE
), SIG_EXPR_LIST_PTR(GPIOS4
));
747 #define ROMWE_DESC SIG_DESC_SET(SCU8C, 5)
748 SIG_EXPR_LIST_DECL_SINGLE(GPIOS5
, GPIOS5
);
749 SIG_EXPR_DECL(ROMWE
, ROM8
, ROMWE_DESC
);
750 SIG_EXPR_DECL(ROMWE
, ROM16
, ROMWE_DESC
);
751 SIG_EXPR_DECL(ROMWE
, ROM16S
, ROMWE_DESC
);
752 SIG_EXPR_LIST_DECL(ROMWE
, SIG_EXPR_PTR(ROMWE
, ROM8
),
753 SIG_EXPR_PTR(ROMWE
, ROM16
),
754 SIG_EXPR_PTR(ROMWE
, ROM16S
));
755 MS_PIN_DECL_(N21
, SIG_EXPR_LIST_PTR(ROMWE
), SIG_EXPR_LIST_PTR(GPIOS5
));
758 #define L22_DESC SIG_DESC_SET(SCU8C, 6)
759 SIG_EXPR_DECL(ROMA22
, ROM8
, L22_DESC
, VPO_OFF_12
);
760 SIG_EXPR_DECL(ROMA22
, ROM16
, L22_DESC
, VPO_OFF_12
);
761 SIG_EXPR_DECL(ROMA22
, ROM16S
, L22_DESC
, VPO_OFF_12
);
762 SIG_EXPR_LIST_DECL(ROMA22
, SIG_EXPR_PTR(ROMA22
, ROM8
),
763 SIG_EXPR_PTR(ROMA22
, ROM16
),
764 SIG_EXPR_PTR(ROMA22
, ROM16S
));
765 SIG_EXPR_LIST_DECL_SINGLE(VPOR4
, VPO24
, L22_DESC
, VPO_24_OFF
);
766 MS_PIN_DECL(L22
, GPIOS6
, ROMA22
, VPOR4
);
769 #define K18_DESC SIG_DESC_SET(SCU8C, 7)
770 SIG_EXPR_DECL(ROMA23
, ROM8
, K18_DESC
, VPO_OFF_12
);
771 SIG_EXPR_DECL(ROMA23
, ROM16
, K18_DESC
, VPO_OFF_12
);
772 SIG_EXPR_DECL(ROMA23
, ROM16S
, K18_DESC
, VPO_OFF_12
);
773 SIG_EXPR_LIST_DECL(ROMA23
, SIG_EXPR_PTR(ROMA23
, ROM8
),
774 SIG_EXPR_PTR(ROMA23
, ROM16
),
775 SIG_EXPR_PTR(ROMA23
, ROM16S
));
776 SIG_EXPR_LIST_DECL_SINGLE(VPOR5
, VPO24
, K18_DESC
, VPO_24_OFF
);
777 MS_PIN_DECL(K18
, GPIOS7
, ROMA23
, VPOR5
);
779 FUNC_GROUP_DECL(ROM8
, V20
, U21
, T19
, V22
, U20
, R18
, N21
, L22
, K18
, W21
, Y22
,
781 FUNC_GROUP_DECL(ROM16
, V20
, U21
, T19
, V22
, U20
, R18
, N21
, L22
, K18
,
782 A8
, C7
, B7
, A7
, D7
, B6
, A6
, E7
, W21
, Y22
, U19
);
783 FUNC_GROUP_DECL(VPO12
, U21
, T19
, V22
, U20
);
784 FUNC_GROUP_DECL(VPO24
, U21
, T19
, V22
, U20
, L22
, K18
, V21
, W22
);
786 #define RMII1_DESC SIG_DESC_BIT(HW_STRAP1, 6, 0)
789 SIG_EXPR_LIST_DECL_SINGLE(GPIOT0
, GPIOT0
, SIG_DESC_SET(SCUA0
, 0));
790 SIG_EXPR_LIST_DECL_SINGLE(RMII1TXEN
, RMII1
, RMII1_DESC
);
791 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXCK
, RGMII1
);
792 MS_PIN_DECL_(A12
, SIG_EXPR_LIST_PTR(GPIOT0
), SIG_EXPR_LIST_PTR(RMII1TXEN
),
793 SIG_EXPR_LIST_PTR(RGMII1TXCK
));
796 SIG_EXPR_LIST_DECL_SINGLE(GPIOT1
, GPIOT1
, SIG_DESC_SET(SCUA0
, 1));
797 SIG_EXPR_LIST_DECL_SINGLE(DASHB12
, RMII1
, RMII1_DESC
);
798 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXCTL
, RGMII1
);
799 MS_PIN_DECL_(B12
, SIG_EXPR_LIST_PTR(GPIOT1
), SIG_EXPR_LIST_PTR(DASHB12
),
800 SIG_EXPR_LIST_PTR(RGMII1TXCTL
));
803 SIG_EXPR_LIST_DECL_SINGLE(GPIOT2
, GPIOT2
, SIG_DESC_SET(SCUA0
, 2));
804 SIG_EXPR_LIST_DECL_SINGLE(RMII1TXD0
, RMII1
, RMII1_DESC
);
805 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD0
, RGMII1
);
806 MS_PIN_DECL_(C12
, SIG_EXPR_LIST_PTR(GPIOT2
), SIG_EXPR_LIST_PTR(RMII1TXD0
),
807 SIG_EXPR_LIST_PTR(RGMII1TXD0
));
810 SIG_EXPR_LIST_DECL_SINGLE(GPIOT3
, GPIOT3
, SIG_DESC_SET(SCUA0
, 3));
811 SIG_EXPR_LIST_DECL_SINGLE(RMII1TXD1
, RMII1
, RMII1_DESC
);
812 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD1
, RGMII1
);
813 MS_PIN_DECL_(D12
, SIG_EXPR_LIST_PTR(GPIOT3
), SIG_EXPR_LIST_PTR(RMII1TXD1
),
814 SIG_EXPR_LIST_PTR(RGMII1TXD1
));
817 SIG_EXPR_LIST_DECL_SINGLE(GPIOT4
, GPIOT4
, SIG_DESC_SET(SCUA0
, 4));
818 SIG_EXPR_LIST_DECL_SINGLE(DASHE12
, RMII1
, RMII1_DESC
);
819 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD2
, RGMII1
);
820 MS_PIN_DECL_(E12
, SIG_EXPR_LIST_PTR(GPIOT4
), SIG_EXPR_LIST_PTR(DASHE12
),
821 SIG_EXPR_LIST_PTR(RGMII1TXD2
));
824 SIG_EXPR_LIST_DECL_SINGLE(GPIOT5
, GPIOT5
, SIG_DESC_SET(SCUA0
, 5));
825 SIG_EXPR_LIST_DECL_SINGLE(DASHA13
, RMII1
, RMII1_DESC
);
826 SIG_EXPR_LIST_DECL_SINGLE(RGMII1TXD3
, RGMII1
);
827 MS_PIN_DECL_(A13
, SIG_EXPR_LIST_PTR(GPIOT5
), SIG_EXPR_LIST_PTR(DASHA13
),
828 SIG_EXPR_LIST_PTR(RGMII1TXD3
));
831 SIG_EXPR_LIST_DECL_SINGLE(GPIOU4
, GPIOU4
, SIG_DESC_SET(SCUA0
, 12));
832 SIG_EXPR_LIST_DECL_SINGLE(RMII1RCLK
, RMII1
, RMII1_DESC
);
833 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXCK
, RGMII1
);
834 MS_PIN_DECL_(E11
, SIG_EXPR_LIST_PTR(GPIOU4
), SIG_EXPR_LIST_PTR(RMII1RCLK
),
835 SIG_EXPR_LIST_PTR(RGMII1RXCK
));
838 SIG_EXPR_LIST_DECL_SINGLE(GPIOU5
, GPIOU5
, SIG_DESC_SET(SCUA0
, 13));
839 SIG_EXPR_LIST_DECL_SINGLE(DASHD11
, RMII1
, RMII1_DESC
);
840 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXCTL
, RGMII1
);
841 MS_PIN_DECL_(D11
, SIG_EXPR_LIST_PTR(GPIOU5
), SIG_EXPR_LIST_PTR(DASHD11
),
842 SIG_EXPR_LIST_PTR(RGMII1RXCTL
));
845 SIG_EXPR_LIST_DECL_SINGLE(GPIOU6
, GPIOU6
, SIG_DESC_SET(SCUA0
, 14));
846 SIG_EXPR_LIST_DECL_SINGLE(RMII1RXD0
, RMII1
, RMII1_DESC
);
847 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD0
, RGMII1
);
848 MS_PIN_DECL_(C11
, SIG_EXPR_LIST_PTR(GPIOU6
), SIG_EXPR_LIST_PTR(RMII1RXD0
),
849 SIG_EXPR_LIST_PTR(RGMII1RXD0
));
852 SIG_EXPR_LIST_DECL_SINGLE(GPIOU7
, GPIOU7
, SIG_DESC_SET(SCUA0
, 15));
853 SIG_EXPR_LIST_DECL_SINGLE(RMII1RXD1
, RMII1
, RMII1_DESC
);
854 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD1
, RGMII1
);
855 MS_PIN_DECL_(B11
, SIG_EXPR_LIST_PTR(GPIOU7
), SIG_EXPR_LIST_PTR(RMII1RXD1
),
856 SIG_EXPR_LIST_PTR(RGMII1RXD1
));
859 SIG_EXPR_LIST_DECL_SINGLE(GPIOV0
, GPIOV0
, SIG_DESC_SET(SCUA0
, 16));
860 SIG_EXPR_LIST_DECL_SINGLE(RMII1CRSDV
, RMII1
, RMII1_DESC
);
861 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD2
, RGMII1
);
862 MS_PIN_DECL_(A11
, SIG_EXPR_LIST_PTR(GPIOV0
), SIG_EXPR_LIST_PTR(RMII1CRSDV
),
863 SIG_EXPR_LIST_PTR(RGMII1RXD2
));
866 SIG_EXPR_LIST_DECL_SINGLE(GPIOV1
, GPIOV1
, SIG_DESC_SET(SCUA0
, 17));
867 SIG_EXPR_LIST_DECL_SINGLE(RMII1RXER
, RMII1
, RMII1_DESC
);
868 SIG_EXPR_LIST_DECL_SINGLE(RGMII1RXD3
, RGMII1
);
869 MS_PIN_DECL_(E10
, SIG_EXPR_LIST_PTR(GPIOV1
), SIG_EXPR_LIST_PTR(RMII1RXER
),
870 SIG_EXPR_LIST_PTR(RGMII1RXD3
));
872 FUNC_GROUP_DECL(RMII1
, A12
, B12
, C12
, D12
, E12
, A13
, E11
, D11
, C11
, B11
, A11
,
874 FUNC_GROUP_DECL(RGMII1
, A12
, B12
, C12
, D12
, E12
, A13
, E11
, D11
, C11
, B11
, A11
,
877 /* Note we account for GPIOY4-GPIOY7 even though they're not valid, thus 216
880 #define ASPEED_G4_NR_PINS 220
882 /* Pins, groups and functions are sort(1):ed alphabetically for sanity */
884 static struct pinctrl_pin_desc aspeed_g4_pins
[ASPEED_G4_NR_PINS
] = {
885 ASPEED_PINCTRL_PIN(A1
),
886 ASPEED_PINCTRL_PIN(A11
),
887 ASPEED_PINCTRL_PIN(A12
),
888 ASPEED_PINCTRL_PIN(A13
),
889 ASPEED_PINCTRL_PIN(A15
),
890 ASPEED_PINCTRL_PIN(A18
),
891 ASPEED_PINCTRL_PIN(A2
),
892 ASPEED_PINCTRL_PIN(A3
),
893 ASPEED_PINCTRL_PIN(A4
),
894 ASPEED_PINCTRL_PIN(A5
),
895 ASPEED_PINCTRL_PIN(A6
),
896 ASPEED_PINCTRL_PIN(A7
),
897 ASPEED_PINCTRL_PIN(A8
),
898 ASPEED_PINCTRL_PIN(AA2
),
899 ASPEED_PINCTRL_PIN(AA22
),
900 ASPEED_PINCTRL_PIN(AA3
),
901 ASPEED_PINCTRL_PIN(AA7
),
902 ASPEED_PINCTRL_PIN(AB1
),
903 ASPEED_PINCTRL_PIN(AB2
),
904 ASPEED_PINCTRL_PIN(AB7
),
905 ASPEED_PINCTRL_PIN(B1
),
906 ASPEED_PINCTRL_PIN(B11
),
907 ASPEED_PINCTRL_PIN(B12
),
908 ASPEED_PINCTRL_PIN(B14
),
909 ASPEED_PINCTRL_PIN(B15
),
910 ASPEED_PINCTRL_PIN(B19
),
911 ASPEED_PINCTRL_PIN(B2
),
912 ASPEED_PINCTRL_PIN(B3
),
913 ASPEED_PINCTRL_PIN(B4
),
914 ASPEED_PINCTRL_PIN(B6
),
915 ASPEED_PINCTRL_PIN(B7
),
916 ASPEED_PINCTRL_PIN(C1
),
917 ASPEED_PINCTRL_PIN(C11
),
918 ASPEED_PINCTRL_PIN(C12
),
919 ASPEED_PINCTRL_PIN(C14
),
920 ASPEED_PINCTRL_PIN(C15
),
921 ASPEED_PINCTRL_PIN(C17
),
922 ASPEED_PINCTRL_PIN(C2
),
923 ASPEED_PINCTRL_PIN(C3
),
924 ASPEED_PINCTRL_PIN(C4
),
925 ASPEED_PINCTRL_PIN(C5
),
926 ASPEED_PINCTRL_PIN(C6
),
927 ASPEED_PINCTRL_PIN(C7
),
928 ASPEED_PINCTRL_PIN(D1
),
929 ASPEED_PINCTRL_PIN(D11
),
930 ASPEED_PINCTRL_PIN(D12
),
931 ASPEED_PINCTRL_PIN(D14
),
932 ASPEED_PINCTRL_PIN(D15
),
933 ASPEED_PINCTRL_PIN(D16
),
934 ASPEED_PINCTRL_PIN(D17
),
935 ASPEED_PINCTRL_PIN(D18
),
936 ASPEED_PINCTRL_PIN(D2
),
937 ASPEED_PINCTRL_PIN(D3
),
938 ASPEED_PINCTRL_PIN(D4
),
939 ASPEED_PINCTRL_PIN(D5
),
940 ASPEED_PINCTRL_PIN(D7
),
941 ASPEED_PINCTRL_PIN(E10
),
942 ASPEED_PINCTRL_PIN(E11
),
943 ASPEED_PINCTRL_PIN(E12
),
944 ASPEED_PINCTRL_PIN(E14
),
945 ASPEED_PINCTRL_PIN(E16
),
946 ASPEED_PINCTRL_PIN(E2
),
947 ASPEED_PINCTRL_PIN(E3
),
948 ASPEED_PINCTRL_PIN(E5
),
949 ASPEED_PINCTRL_PIN(E7
),
950 ASPEED_PINCTRL_PIN(F3
),
951 ASPEED_PINCTRL_PIN(F4
),
952 ASPEED_PINCTRL_PIN(F5
),
953 ASPEED_PINCTRL_PIN(G5
),
954 ASPEED_PINCTRL_PIN(H1
),
955 ASPEED_PINCTRL_PIN(H19
),
956 ASPEED_PINCTRL_PIN(H2
),
957 ASPEED_PINCTRL_PIN(H20
),
958 ASPEED_PINCTRL_PIN(J3
),
959 ASPEED_PINCTRL_PIN(K18
),
960 ASPEED_PINCTRL_PIN(L22
),
961 ASPEED_PINCTRL_PIN(N21
),
962 ASPEED_PINCTRL_PIN(R18
),
963 ASPEED_PINCTRL_PIN(T1
),
964 ASPEED_PINCTRL_PIN(T19
),
965 ASPEED_PINCTRL_PIN(T2
),
966 ASPEED_PINCTRL_PIN(T4
),
967 ASPEED_PINCTRL_PIN(T5
),
968 ASPEED_PINCTRL_PIN(U1
),
969 ASPEED_PINCTRL_PIN(U18
),
970 ASPEED_PINCTRL_PIN(U19
),
971 ASPEED_PINCTRL_PIN(U2
),
972 ASPEED_PINCTRL_PIN(U20
),
973 ASPEED_PINCTRL_PIN(U21
),
974 ASPEED_PINCTRL_PIN(U3
),
975 ASPEED_PINCTRL_PIN(U4
),
976 ASPEED_PINCTRL_PIN(U5
),
977 ASPEED_PINCTRL_PIN(V1
),
978 ASPEED_PINCTRL_PIN(V2
),
979 ASPEED_PINCTRL_PIN(V20
),
980 ASPEED_PINCTRL_PIN(V21
),
981 ASPEED_PINCTRL_PIN(V22
),
982 ASPEED_PINCTRL_PIN(V6
),
983 ASPEED_PINCTRL_PIN(W1
),
984 ASPEED_PINCTRL_PIN(W21
),
985 ASPEED_PINCTRL_PIN(W22
),
986 ASPEED_PINCTRL_PIN(W4
),
987 ASPEED_PINCTRL_PIN(W5
),
988 ASPEED_PINCTRL_PIN(Y22
),
989 ASPEED_PINCTRL_PIN(Y3
),
990 ASPEED_PINCTRL_PIN(Y4
),
991 ASPEED_PINCTRL_PIN(Y5
),
992 ASPEED_PINCTRL_PIN(Y7
),
995 static const struct aspeed_pin_group aspeed_g4_groups
[] = {
996 ASPEED_PINCTRL_GROUP(ACPI
),
997 ASPEED_PINCTRL_GROUP(BMCINT
),
998 ASPEED_PINCTRL_GROUP(DDCCLK
),
999 ASPEED_PINCTRL_GROUP(DDCDAT
),
1000 ASPEED_PINCTRL_GROUP(FLACK
),
1001 ASPEED_PINCTRL_GROUP(FLBUSY
),
1002 ASPEED_PINCTRL_GROUP(FLWP
),
1003 ASPEED_PINCTRL_GROUP(GPID0
),
1004 ASPEED_PINCTRL_GROUP(GPIE0
),
1005 ASPEED_PINCTRL_GROUP(GPIE2
),
1006 ASPEED_PINCTRL_GROUP(GPIE4
),
1007 ASPEED_PINCTRL_GROUP(GPIE6
),
1008 ASPEED_PINCTRL_GROUP(I2C10
),
1009 ASPEED_PINCTRL_GROUP(I2C11
),
1010 ASPEED_PINCTRL_GROUP(I2C12
),
1011 ASPEED_PINCTRL_GROUP(I2C13
),
1012 ASPEED_PINCTRL_GROUP(I2C3
),
1013 ASPEED_PINCTRL_GROUP(I2C4
),
1014 ASPEED_PINCTRL_GROUP(I2C5
),
1015 ASPEED_PINCTRL_GROUP(I2C6
),
1016 ASPEED_PINCTRL_GROUP(I2C7
),
1017 ASPEED_PINCTRL_GROUP(I2C8
),
1018 ASPEED_PINCTRL_GROUP(I2C9
),
1019 ASPEED_PINCTRL_GROUP(LPCPD
),
1020 ASPEED_PINCTRL_GROUP(LPCPME
),
1021 ASPEED_PINCTRL_GROUP(LPCPME
),
1022 ASPEED_PINCTRL_GROUP(LPCSMI
),
1023 ASPEED_PINCTRL_GROUP(MDIO1
),
1024 ASPEED_PINCTRL_GROUP(MDIO2
),
1025 ASPEED_PINCTRL_GROUP(NCTS1
),
1026 ASPEED_PINCTRL_GROUP(NCTS3
),
1027 ASPEED_PINCTRL_GROUP(NCTS4
),
1028 ASPEED_PINCTRL_GROUP(NDCD1
),
1029 ASPEED_PINCTRL_GROUP(NDCD3
),
1030 ASPEED_PINCTRL_GROUP(NDCD4
),
1031 ASPEED_PINCTRL_GROUP(NDSR1
),
1032 ASPEED_PINCTRL_GROUP(NDSR3
),
1033 ASPEED_PINCTRL_GROUP(NDTR1
),
1034 ASPEED_PINCTRL_GROUP(NDTR3
),
1035 ASPEED_PINCTRL_GROUP(NRI1
),
1036 ASPEED_PINCTRL_GROUP(NRI3
),
1037 ASPEED_PINCTRL_GROUP(NRI4
),
1038 ASPEED_PINCTRL_GROUP(NRTS1
),
1039 ASPEED_PINCTRL_GROUP(NRTS3
),
1040 ASPEED_PINCTRL_GROUP(PWM0
),
1041 ASPEED_PINCTRL_GROUP(PWM1
),
1042 ASPEED_PINCTRL_GROUP(PWM2
),
1043 ASPEED_PINCTRL_GROUP(PWM3
),
1044 ASPEED_PINCTRL_GROUP(PWM4
),
1045 ASPEED_PINCTRL_GROUP(PWM5
),
1046 ASPEED_PINCTRL_GROUP(PWM6
),
1047 ASPEED_PINCTRL_GROUP(PWM7
),
1048 ASPEED_PINCTRL_GROUP(RGMII1
),
1049 ASPEED_PINCTRL_GROUP(RMII1
),
1050 ASPEED_PINCTRL_GROUP(ROM16
),
1051 ASPEED_PINCTRL_GROUP(ROM8
),
1052 ASPEED_PINCTRL_GROUP(ROMCS1
),
1053 ASPEED_PINCTRL_GROUP(ROMCS2
),
1054 ASPEED_PINCTRL_GROUP(ROMCS3
),
1055 ASPEED_PINCTRL_GROUP(ROMCS4
),
1056 ASPEED_PINCTRL_GROUP(RXD1
),
1057 ASPEED_PINCTRL_GROUP(RXD3
),
1058 ASPEED_PINCTRL_GROUP(RXD4
),
1059 ASPEED_PINCTRL_GROUP(SD1
),
1060 ASPEED_PINCTRL_GROUP(SGPMI
),
1061 ASPEED_PINCTRL_GROUP(SIOPBI
),
1062 ASPEED_PINCTRL_GROUP(SIOPBO
),
1063 ASPEED_PINCTRL_GROUP(TIMER3
),
1064 ASPEED_PINCTRL_GROUP(TIMER5
),
1065 ASPEED_PINCTRL_GROUP(TIMER6
),
1066 ASPEED_PINCTRL_GROUP(TIMER7
),
1067 ASPEED_PINCTRL_GROUP(TIMER8
),
1068 ASPEED_PINCTRL_GROUP(TXD1
),
1069 ASPEED_PINCTRL_GROUP(TXD3
),
1070 ASPEED_PINCTRL_GROUP(TXD4
),
1071 ASPEED_PINCTRL_GROUP(UART6
),
1072 ASPEED_PINCTRL_GROUP(VGAHS
),
1073 ASPEED_PINCTRL_GROUP(VGAVS
),
1074 ASPEED_PINCTRL_GROUP(VPI18
),
1075 ASPEED_PINCTRL_GROUP(VPI24
),
1076 ASPEED_PINCTRL_GROUP(VPI30
),
1077 ASPEED_PINCTRL_GROUP(VPO12
),
1078 ASPEED_PINCTRL_GROUP(VPO24
),
1081 static const struct aspeed_pin_function aspeed_g4_functions
[] = {
1082 ASPEED_PINCTRL_FUNC(ACPI
),
1083 ASPEED_PINCTRL_FUNC(BMCINT
),
1084 ASPEED_PINCTRL_FUNC(DDCCLK
),
1085 ASPEED_PINCTRL_FUNC(DDCDAT
),
1086 ASPEED_PINCTRL_FUNC(FLACK
),
1087 ASPEED_PINCTRL_FUNC(FLBUSY
),
1088 ASPEED_PINCTRL_FUNC(FLWP
),
1089 ASPEED_PINCTRL_FUNC(GPID0
),
1090 ASPEED_PINCTRL_FUNC(GPIE0
),
1091 ASPEED_PINCTRL_FUNC(GPIE2
),
1092 ASPEED_PINCTRL_FUNC(GPIE4
),
1093 ASPEED_PINCTRL_FUNC(GPIE6
),
1094 ASPEED_PINCTRL_FUNC(I2C10
),
1095 ASPEED_PINCTRL_FUNC(I2C11
),
1096 ASPEED_PINCTRL_FUNC(I2C12
),
1097 ASPEED_PINCTRL_FUNC(I2C13
),
1098 ASPEED_PINCTRL_FUNC(I2C3
),
1099 ASPEED_PINCTRL_FUNC(I2C4
),
1100 ASPEED_PINCTRL_FUNC(I2C5
),
1101 ASPEED_PINCTRL_FUNC(I2C6
),
1102 ASPEED_PINCTRL_FUNC(I2C7
),
1103 ASPEED_PINCTRL_FUNC(I2C8
),
1104 ASPEED_PINCTRL_FUNC(I2C9
),
1105 ASPEED_PINCTRL_FUNC(LPCPD
),
1106 ASPEED_PINCTRL_FUNC(LPCPME
),
1107 ASPEED_PINCTRL_FUNC(LPCSMI
),
1108 ASPEED_PINCTRL_FUNC(MDIO1
),
1109 ASPEED_PINCTRL_FUNC(MDIO2
),
1110 ASPEED_PINCTRL_FUNC(NCTS1
),
1111 ASPEED_PINCTRL_FUNC(NCTS3
),
1112 ASPEED_PINCTRL_FUNC(NCTS4
),
1113 ASPEED_PINCTRL_FUNC(NDCD1
),
1114 ASPEED_PINCTRL_FUNC(NDCD3
),
1115 ASPEED_PINCTRL_FUNC(NDCD4
),
1116 ASPEED_PINCTRL_FUNC(NDSR1
),
1117 ASPEED_PINCTRL_FUNC(NDSR3
),
1118 ASPEED_PINCTRL_FUNC(NDTR1
),
1119 ASPEED_PINCTRL_FUNC(NDTR3
),
1120 ASPEED_PINCTRL_FUNC(NRI1
),
1121 ASPEED_PINCTRL_FUNC(NRI3
),
1122 ASPEED_PINCTRL_FUNC(NRI4
),
1123 ASPEED_PINCTRL_FUNC(NRTS1
),
1124 ASPEED_PINCTRL_FUNC(NRTS3
),
1125 ASPEED_PINCTRL_FUNC(PWM0
),
1126 ASPEED_PINCTRL_FUNC(PWM1
),
1127 ASPEED_PINCTRL_FUNC(PWM2
),
1128 ASPEED_PINCTRL_FUNC(PWM3
),
1129 ASPEED_PINCTRL_FUNC(PWM4
),
1130 ASPEED_PINCTRL_FUNC(PWM5
),
1131 ASPEED_PINCTRL_FUNC(PWM6
),
1132 ASPEED_PINCTRL_FUNC(PWM7
),
1133 ASPEED_PINCTRL_FUNC(RGMII1
),
1134 ASPEED_PINCTRL_FUNC(RMII1
),
1135 ASPEED_PINCTRL_FUNC(ROM16
),
1136 ASPEED_PINCTRL_FUNC(ROM8
),
1137 ASPEED_PINCTRL_FUNC(ROMCS1
),
1138 ASPEED_PINCTRL_FUNC(ROMCS2
),
1139 ASPEED_PINCTRL_FUNC(ROMCS3
),
1140 ASPEED_PINCTRL_FUNC(ROMCS4
),
1141 ASPEED_PINCTRL_FUNC(RXD1
),
1142 ASPEED_PINCTRL_FUNC(RXD3
),
1143 ASPEED_PINCTRL_FUNC(RXD4
),
1144 ASPEED_PINCTRL_FUNC(SD1
),
1145 ASPEED_PINCTRL_FUNC(SGPMI
),
1146 ASPEED_PINCTRL_FUNC(SIOPBI
),
1147 ASPEED_PINCTRL_FUNC(SIOPBO
),
1148 ASPEED_PINCTRL_FUNC(TIMER3
),
1149 ASPEED_PINCTRL_FUNC(TIMER5
),
1150 ASPEED_PINCTRL_FUNC(TIMER6
),
1151 ASPEED_PINCTRL_FUNC(TIMER7
),
1152 ASPEED_PINCTRL_FUNC(TIMER8
),
1153 ASPEED_PINCTRL_FUNC(TXD1
),
1154 ASPEED_PINCTRL_FUNC(TXD3
),
1155 ASPEED_PINCTRL_FUNC(TXD4
),
1156 ASPEED_PINCTRL_FUNC(UART6
),
1157 ASPEED_PINCTRL_FUNC(VGAHS
),
1158 ASPEED_PINCTRL_FUNC(VGAVS
),
1159 ASPEED_PINCTRL_FUNC(VPI18
),
1160 ASPEED_PINCTRL_FUNC(VPI24
),
1161 ASPEED_PINCTRL_FUNC(VPI30
),
1162 ASPEED_PINCTRL_FUNC(VPO12
),
1163 ASPEED_PINCTRL_FUNC(VPO24
),
1166 static struct aspeed_pinctrl_data aspeed_g4_pinctrl_data
= {
1167 .pins
= aspeed_g4_pins
,
1168 .npins
= ARRAY_SIZE(aspeed_g4_pins
),
1169 .groups
= aspeed_g4_groups
,
1170 .ngroups
= ARRAY_SIZE(aspeed_g4_groups
),
1171 .functions
= aspeed_g4_functions
,
1172 .nfunctions
= ARRAY_SIZE(aspeed_g4_functions
),
1175 static struct pinmux_ops aspeed_g4_pinmux_ops
= {
1176 .get_functions_count
= aspeed_pinmux_get_fn_count
,
1177 .get_function_name
= aspeed_pinmux_get_fn_name
,
1178 .get_function_groups
= aspeed_pinmux_get_fn_groups
,
1179 .set_mux
= aspeed_pinmux_set_mux
,
1180 .gpio_request_enable
= aspeed_gpio_request_enable
,
1184 static struct pinctrl_ops aspeed_g4_pinctrl_ops
= {
1185 .get_groups_count
= aspeed_pinctrl_get_groups_count
,
1186 .get_group_name
= aspeed_pinctrl_get_group_name
,
1187 .get_group_pins
= aspeed_pinctrl_get_group_pins
,
1188 .pin_dbg_show
= aspeed_pinctrl_pin_dbg_show
,
1189 .dt_node_to_map
= pinconf_generic_dt_node_to_map_pin
,
1190 .dt_free_map
= pinctrl_utils_free_map
,
1193 static struct pinctrl_desc aspeed_g4_pinctrl_desc
= {
1194 .name
= "aspeed-g4-pinctrl",
1195 .pins
= aspeed_g4_pins
,
1196 .npins
= ARRAY_SIZE(aspeed_g4_pins
),
1197 .pctlops
= &aspeed_g4_pinctrl_ops
,
1198 .pmxops
= &aspeed_g4_pinmux_ops
,
1201 static int aspeed_g4_pinctrl_probe(struct platform_device
*pdev
)
1205 for (i
= 0; i
< ARRAY_SIZE(aspeed_g4_pins
); i
++)
1206 aspeed_g4_pins
[i
].number
= i
;
1208 return aspeed_pinctrl_probe(pdev
, &aspeed_g4_pinctrl_desc
,
1209 &aspeed_g4_pinctrl_data
);
1212 static const struct of_device_id aspeed_g4_pinctrl_of_match
[] = {
1213 { .compatible
= "aspeed,ast2400-pinctrl", },
1214 { .compatible
= "aspeed,g4-pinctrl", },
1218 static struct platform_driver aspeed_g4_pinctrl_driver
= {
1219 .probe
= aspeed_g4_pinctrl_probe
,
1221 .name
= "aspeed-g4-pinctrl",
1222 .of_match_table
= aspeed_g4_pinctrl_of_match
,
1226 static int aspeed_g4_pinctrl_init(void)
1228 return platform_driver_register(&aspeed_g4_pinctrl_driver
);
1231 arch_initcall(aspeed_g4_pinctrl_init
);