mesong12a_pinctrl.c revision 1.1 1 1.1 ryo /* $NetBSD: mesong12a_pinctrl.c,v 1.1 2021/01/01 07:21:58 ryo Exp $ */
2 1.1 ryo
3 1.1 ryo /*-
4 1.1 ryo * Copyright (c) 2019 Jared McNeill <jmcneill (at) invisible.ca>
5 1.1 ryo * All rights reserved.
6 1.1 ryo *
7 1.1 ryo * Redistribution and use in source and binary forms, with or without
8 1.1 ryo * modification, are permitted provided that the following conditions
9 1.1 ryo * are met:
10 1.1 ryo * 1. Redistributions of source code must retain the above copyright
11 1.1 ryo * notice, this list of conditions and the following disclaimer.
12 1.1 ryo * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 ryo * notice, this list of conditions and the following disclaimer in the
14 1.1 ryo * documentation and/or other materials provided with the distribution.
15 1.1 ryo *
16 1.1 ryo * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 1.1 ryo * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 1.1 ryo * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 1.1 ryo * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 1.1 ryo * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 1.1 ryo * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 1.1 ryo * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 1.1 ryo * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 1.1 ryo * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 1.1 ryo * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 1.1 ryo * SUCH DAMAGE.
27 1.1 ryo */
28 1.1 ryo
29 1.1 ryo #include <sys/cdefs.h>
30 1.1 ryo __KERNEL_RCSID(0, "$NetBSD: mesong12a_pinctrl.c,v 1.1 2021/01/01 07:21:58 ryo Exp $");
31 1.1 ryo
32 1.1 ryo #include <sys/param.h>
33 1.1 ryo #include <sys/types.h>
34 1.1 ryo #include <sys/bus.h>
35 1.1 ryo #include <sys/device.h>
36 1.1 ryo
37 1.1 ryo #include <arm/amlogic/meson_pinctrl.h>
38 1.1 ryo
39 1.1 ryo /* CBUS pinmux registers */
40 1.1 ryo #define CBUS_REG(n) ((n) << 2)
41 1.1 ryo
42 1.1 ryo /*
43 1.1 ryo * GPIO banks.
44 1.1 ryo * The values must match those in dt-bindings/gpio/meson-g12a-gpio.h
45 1.1 ryo */
46 1.1 ryo enum {
47 1.1 ryo GPIOZ_0 = 0,
48 1.1 ryo GPIOZ_1,
49 1.1 ryo GPIOZ_2,
50 1.1 ryo GPIOZ_3,
51 1.1 ryo GPIOZ_4,
52 1.1 ryo GPIOZ_5,
53 1.1 ryo GPIOZ_6,
54 1.1 ryo GPIOZ_7,
55 1.1 ryo GPIOZ_8,
56 1.1 ryo GPIOZ_9,
57 1.1 ryo GPIOZ_10,
58 1.1 ryo GPIOZ_11,
59 1.1 ryo GPIOZ_12,
60 1.1 ryo GPIOZ_13,
61 1.1 ryo GPIOZ_14,
62 1.1 ryo GPIOZ_15,
63 1.1 ryo
64 1.1 ryo GPIOH_0 = 16,
65 1.1 ryo GPIOH_1,
66 1.1 ryo GPIOH_2,
67 1.1 ryo GPIOH_3,
68 1.1 ryo GPIOH_4,
69 1.1 ryo GPIOH_5,
70 1.1 ryo GPIOH_6,
71 1.1 ryo GPIOH_7,
72 1.1 ryo GPIOH_8,
73 1.1 ryo
74 1.1 ryo BOOT_0 = 25,
75 1.1 ryo BOOT_1,
76 1.1 ryo BOOT_2,
77 1.1 ryo BOOT_3,
78 1.1 ryo BOOT_4,
79 1.1 ryo BOOT_5,
80 1.1 ryo BOOT_6,
81 1.1 ryo BOOT_7,
82 1.1 ryo BOOT_8,
83 1.1 ryo BOOT_9,
84 1.1 ryo BOOT_10,
85 1.1 ryo BOOT_11,
86 1.1 ryo BOOT_12,
87 1.1 ryo BOOT_13,
88 1.1 ryo BOOT_14,
89 1.1 ryo BOOT_15,
90 1.1 ryo
91 1.1 ryo GPIOC_0 = 41,
92 1.1 ryo GPIOC_1,
93 1.1 ryo GPIOC_2,
94 1.1 ryo GPIOC_3,
95 1.1 ryo GPIOC_4,
96 1.1 ryo GPIOC_5,
97 1.1 ryo GPIOC_6,
98 1.1 ryo GPIOC_7,
99 1.1 ryo
100 1.1 ryo GPIOA_0 = 49,
101 1.1 ryo GPIOA_1,
102 1.1 ryo GPIOA_2,
103 1.1 ryo GPIOA_3,
104 1.1 ryo GPIOA_4,
105 1.1 ryo GPIOA_5,
106 1.1 ryo GPIOA_6,
107 1.1 ryo GPIOA_7,
108 1.1 ryo GPIOA_8,
109 1.1 ryo GPIOA_9,
110 1.1 ryo GPIOA_10,
111 1.1 ryo GPIOA_11,
112 1.1 ryo GPIOA_12,
113 1.1 ryo GPIOA_13,
114 1.1 ryo GPIOA_14,
115 1.1 ryo GPIOA_15,
116 1.1 ryo
117 1.1 ryo GPIOX_0 = 65,
118 1.1 ryo GPIOX_1,
119 1.1 ryo GPIOX_2,
120 1.1 ryo GPIOX_3,
121 1.1 ryo GPIOX_4,
122 1.1 ryo GPIOX_5,
123 1.1 ryo GPIOX_6,
124 1.1 ryo GPIOX_7,
125 1.1 ryo GPIOX_8,
126 1.1 ryo GPIOX_9,
127 1.1 ryo GPIOX_10,
128 1.1 ryo GPIOX_11,
129 1.1 ryo GPIOX_12,
130 1.1 ryo GPIOX_13,
131 1.1 ryo GPIOX_14,
132 1.1 ryo GPIOX_15,
133 1.1 ryo GPIOX_16,
134 1.1 ryo GPIOX_17,
135 1.1 ryo GPIOX_18,
136 1.1 ryo GPIOX_19,
137 1.1 ryo
138 1.1 ryo GPIOAO_0 = 0,
139 1.1 ryo GPIOAO_1,
140 1.1 ryo GPIOAO_2,
141 1.1 ryo GPIOAO_3,
142 1.1 ryo GPIOAO_4,
143 1.1 ryo GPIOAO_5,
144 1.1 ryo GPIOAO_6,
145 1.1 ryo GPIOAO_7,
146 1.1 ryo GPIOAO_8,
147 1.1 ryo GPIOAO_9,
148 1.1 ryo GPIOAO_10,
149 1.1 ryo GPIOAO_11,
150 1.1 ryo GPIOE_0 = 12,
151 1.1 ryo GPIOE_1,
152 1.1 ryo GPIOE_2,
153 1.1 ryo };
154 1.1 ryo
155 1.1 ryo #define CBUS_GPIO(_id, _off, _bit) \
156 1.1 ryo [_id] = { \
157 1.1 ryo .id = (_id), \
158 1.1 ryo .name = __STRING(_id), \
159 1.1 ryo .oen = { \
160 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
161 1.1 ryo .reg = CBUS_REG((_off) * 3 + 0), \
162 1.1 ryo .mask = __BIT(_bit) \
163 1.1 ryo }, \
164 1.1 ryo .out = { \
165 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
166 1.1 ryo .reg = CBUS_REG((_off) * 3 + 1), \
167 1.1 ryo .mask = __BIT(_bit) \
168 1.1 ryo }, \
169 1.1 ryo .in = { \
170 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
171 1.1 ryo .reg = CBUS_REG((_off) * 3 + 2), \
172 1.1 ryo .mask = __BIT(_bit) \
173 1.1 ryo }, \
174 1.1 ryo .pupden = { \
175 1.1 ryo .type = MESON_PINCTRL_REGTYPE_PULL_ENABLE, \
176 1.1 ryo .reg = CBUS_REG(_off), \
177 1.1 ryo .mask = __BIT(_bit) \
178 1.1 ryo }, \
179 1.1 ryo .pupd = { \
180 1.1 ryo .type = MESON_PINCTRL_REGTYPE_PULL, \
181 1.1 ryo .reg = CBUS_REG(_off), \
182 1.1 ryo .mask = __BIT(_bit) \
183 1.1 ryo }, \
184 1.1 ryo }
185 1.1 ryo
186 1.1 ryo static const struct meson_pinctrl_gpio mesong12a_periphs_gpios[] = {
187 1.1 ryo /* BOOT */
188 1.1 ryo CBUS_GPIO(BOOT_0, 0, 0),
189 1.1 ryo CBUS_GPIO(BOOT_1, 0, 1),
190 1.1 ryo CBUS_GPIO(BOOT_2, 0, 2),
191 1.1 ryo CBUS_GPIO(BOOT_3, 0, 3),
192 1.1 ryo CBUS_GPIO(BOOT_4, 0, 4),
193 1.1 ryo CBUS_GPIO(BOOT_5, 0, 5),
194 1.1 ryo CBUS_GPIO(BOOT_6, 0, 6),
195 1.1 ryo CBUS_GPIO(BOOT_7, 0, 7),
196 1.1 ryo CBUS_GPIO(BOOT_8, 0, 8),
197 1.1 ryo CBUS_GPIO(BOOT_9, 0, 9),
198 1.1 ryo CBUS_GPIO(BOOT_10, 0, 10),
199 1.1 ryo CBUS_GPIO(BOOT_11, 0, 11),
200 1.1 ryo CBUS_GPIO(BOOT_12, 0, 12),
201 1.1 ryo CBUS_GPIO(BOOT_13, 0, 13),
202 1.1 ryo CBUS_GPIO(BOOT_14, 0, 14),
203 1.1 ryo CBUS_GPIO(BOOT_15, 0, 15),
204 1.1 ryo
205 1.1 ryo /* GPIOC */
206 1.1 ryo CBUS_GPIO(GPIOC_0, 1, 0),
207 1.1 ryo CBUS_GPIO(GPIOC_1, 1, 1),
208 1.1 ryo CBUS_GPIO(GPIOC_2, 1, 2),
209 1.1 ryo CBUS_GPIO(GPIOC_3, 1, 3),
210 1.1 ryo CBUS_GPIO(GPIOC_4, 1, 4),
211 1.1 ryo CBUS_GPIO(GPIOC_5, 1, 5),
212 1.1 ryo CBUS_GPIO(GPIOC_6, 1, 6),
213 1.1 ryo CBUS_GPIO(GPIOC_7, 1, 7),
214 1.1 ryo
215 1.1 ryo /* GPIOX */
216 1.1 ryo CBUS_GPIO(GPIOX_0, 2, 0),
217 1.1 ryo CBUS_GPIO(GPIOX_1, 2, 1),
218 1.1 ryo CBUS_GPIO(GPIOX_2, 2, 2),
219 1.1 ryo CBUS_GPIO(GPIOX_3, 2, 3),
220 1.1 ryo CBUS_GPIO(GPIOX_4, 2, 4),
221 1.1 ryo CBUS_GPIO(GPIOX_5, 2, 5),
222 1.1 ryo CBUS_GPIO(GPIOX_6, 2, 6),
223 1.1 ryo CBUS_GPIO(GPIOX_7, 2, 7),
224 1.1 ryo CBUS_GPIO(GPIOX_8, 2, 8),
225 1.1 ryo CBUS_GPIO(GPIOX_9, 2, 9),
226 1.1 ryo CBUS_GPIO(GPIOX_10, 2, 10),
227 1.1 ryo CBUS_GPIO(GPIOX_11, 2, 11),
228 1.1 ryo CBUS_GPIO(GPIOX_12, 2, 12),
229 1.1 ryo CBUS_GPIO(GPIOX_13, 2, 13),
230 1.1 ryo CBUS_GPIO(GPIOX_14, 2, 14),
231 1.1 ryo CBUS_GPIO(GPIOX_15, 2, 15),
232 1.1 ryo CBUS_GPIO(GPIOX_16, 2, 16),
233 1.1 ryo CBUS_GPIO(GPIOX_17, 2, 17),
234 1.1 ryo CBUS_GPIO(GPIOX_18, 2, 18),
235 1.1 ryo CBUS_GPIO(GPIOX_19, 2, 19),
236 1.1 ryo
237 1.1 ryo /* GPIOH */
238 1.1 ryo CBUS_GPIO(GPIOH_0, 3, 0),
239 1.1 ryo CBUS_GPIO(GPIOH_1, 3, 1),
240 1.1 ryo CBUS_GPIO(GPIOH_2, 3, 2),
241 1.1 ryo CBUS_GPIO(GPIOH_3, 3, 3),
242 1.1 ryo CBUS_GPIO(GPIOH_4, 3, 4),
243 1.1 ryo CBUS_GPIO(GPIOH_5, 3, 5),
244 1.1 ryo CBUS_GPIO(GPIOH_6, 3, 6),
245 1.1 ryo CBUS_GPIO(GPIOH_7, 3, 7),
246 1.1 ryo CBUS_GPIO(GPIOH_8, 3, 8),
247 1.1 ryo
248 1.1 ryo /* GPIOZ */
249 1.1 ryo CBUS_GPIO(GPIOZ_0, 4, 0),
250 1.1 ryo CBUS_GPIO(GPIOZ_1, 4, 1),
251 1.1 ryo CBUS_GPIO(GPIOZ_2, 4, 2),
252 1.1 ryo CBUS_GPIO(GPIOZ_3, 4, 3),
253 1.1 ryo CBUS_GPIO(GPIOZ_4, 4, 4),
254 1.1 ryo CBUS_GPIO(GPIOZ_5, 4, 5),
255 1.1 ryo CBUS_GPIO(GPIOZ_6, 4, 6),
256 1.1 ryo CBUS_GPIO(GPIOZ_7, 4, 7),
257 1.1 ryo CBUS_GPIO(GPIOZ_8, 4, 8),
258 1.1 ryo CBUS_GPIO(GPIOZ_9, 4, 9),
259 1.1 ryo CBUS_GPIO(GPIOZ_10, 4, 10),
260 1.1 ryo CBUS_GPIO(GPIOZ_11, 4, 11),
261 1.1 ryo CBUS_GPIO(GPIOZ_12, 4, 12),
262 1.1 ryo CBUS_GPIO(GPIOZ_13, 4, 13),
263 1.1 ryo CBUS_GPIO(GPIOZ_14, 4, 14),
264 1.1 ryo CBUS_GPIO(GPIOZ_15, 4, 15),
265 1.1 ryo
266 1.1 ryo /* GPIOA */
267 1.1 ryo CBUS_GPIO(GPIOA_0, 5, 0),
268 1.1 ryo CBUS_GPIO(GPIOA_1, 5, 1),
269 1.1 ryo CBUS_GPIO(GPIOA_2, 5, 2),
270 1.1 ryo CBUS_GPIO(GPIOA_3, 5, 3),
271 1.1 ryo CBUS_GPIO(GPIOA_4, 5, 4),
272 1.1 ryo CBUS_GPIO(GPIOA_5, 5, 5),
273 1.1 ryo CBUS_GPIO(GPIOA_6, 5, 6),
274 1.1 ryo CBUS_GPIO(GPIOA_7, 5, 7),
275 1.1 ryo CBUS_GPIO(GPIOA_8, 5, 8),
276 1.1 ryo CBUS_GPIO(GPIOA_9, 5, 9),
277 1.1 ryo CBUS_GPIO(GPIOA_10, 5, 10),
278 1.1 ryo CBUS_GPIO(GPIOA_11, 5, 11),
279 1.1 ryo CBUS_GPIO(GPIOA_12, 5, 12),
280 1.1 ryo CBUS_GPIO(GPIOA_13, 5, 13),
281 1.1 ryo CBUS_GPIO(GPIOA_14, 5, 14),
282 1.1 ryo CBUS_GPIO(GPIOA_15, 5, 15),
283 1.1 ryo };
284 1.1 ryo
285 1.1 ryo #define AO_GPIO(_id, _off, _bit) \
286 1.1 ryo [_id] = { \
287 1.1 ryo .id = (_id), \
288 1.1 ryo .name = __STRING(_id), \
289 1.1 ryo .oen = { \
290 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
291 1.1 ryo .reg = CBUS_REG(_off), \
292 1.1 ryo .mask = __BIT(_bit) \
293 1.1 ryo }, \
294 1.1 ryo .out = { \
295 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
296 1.1 ryo .reg = CBUS_REG((_off) + 4), \
297 1.1 ryo .mask = __BIT(_bit) \
298 1.1 ryo }, \
299 1.1 ryo .in = { \
300 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
301 1.1 ryo .reg = CBUS_REG((_off) + 1), \
302 1.1 ryo .mask = __BIT(_bit) \
303 1.1 ryo }, \
304 1.1 ryo .pupden = { \
305 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
306 1.1 ryo .reg = CBUS_REG((_off) + 3), \
307 1.1 ryo .mask = __BIT(_bit) \
308 1.1 ryo }, \
309 1.1 ryo .pupd = { \
310 1.1 ryo .type = MESON_PINCTRL_REGTYPE_GPIO, \
311 1.1 ryo .reg = CBUS_REG((_off) + 2), \
312 1.1 ryo .mask = __BIT(_bit) \
313 1.1 ryo }, \
314 1.1 ryo }
315 1.1 ryo
316 1.1 ryo static const struct meson_pinctrl_gpio mesong12a_aobus_gpios[] = {
317 1.1 ryo /* GPIOAO */
318 1.1 ryo AO_GPIO(GPIOAO_0, 0, 0),
319 1.1 ryo AO_GPIO(GPIOAO_1, 0, 1),
320 1.1 ryo AO_GPIO(GPIOAO_2, 0, 2),
321 1.1 ryo AO_GPIO(GPIOAO_3, 0, 3),
322 1.1 ryo AO_GPIO(GPIOAO_4, 0, 4),
323 1.1 ryo AO_GPIO(GPIOAO_5, 0, 5),
324 1.1 ryo AO_GPIO(GPIOAO_6, 0, 6),
325 1.1 ryo AO_GPIO(GPIOAO_7, 0, 7),
326 1.1 ryo AO_GPIO(GPIOAO_8, 0, 8),
327 1.1 ryo AO_GPIO(GPIOAO_9, 0, 9),
328 1.1 ryo AO_GPIO(GPIOAO_10, 0, 10),
329 1.1 ryo AO_GPIO(GPIOAO_11, 0, 11),
330 1.1 ryo
331 1.1 ryo /* GPIOE */
332 1.1 ryo AO_GPIO(GPIOE_0, 0, 16),
333 1.1 ryo AO_GPIO(GPIOE_1, 0, 17),
334 1.1 ryo AO_GPIO(GPIOE_2, 0, 18),
335 1.1 ryo };
336 1.1 ryo
337 1.1 ryo #define GPIO_MUX_PINCTRL_GROUP(_name, _reg, _off, _group, _func) \
338 1.1 ryo { .name = _name, .reg = CBUS_REG(_reg), .bit = (_func), \
339 1.1 ryo .bank = { _group }, .nbank = 1, \
340 1.1 ryo .func = (_func), .mask = (0xf << (4 * ((_off) & 7))) }
341 1.1 ryo
342 1.1 ryo static const struct meson_pinctrl_group mesong12a_periphs_groups[] = {
343 1.1 ryo /* BOOT (PERIPHS_PIN_MUX_0..1) */
344 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d0", 0x0, 0, BOOT_0, 1),
345 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d1", 0x0, 1, BOOT_1, 1),
346 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d2", 0x0, 2, BOOT_2, 1),
347 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d3", 0x0, 3, BOOT_3, 1),
348 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d4", 0x0, 4, BOOT_4, 1),
349 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d5", 0x0, 5, BOOT_5, 1),
350 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d6", 0x0, 6, BOOT_6, 1),
351 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_d7", 0x0, 7, BOOT_7, 1),
352 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_clk", 0x1, 0, BOOT_8, 1),
353 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_cmd", 0x1, 2, BOOT_10, 1),
354 1.1 ryo GPIO_MUX_PINCTRL_GROUP("emmc_nand_ds", 0x1, 5, BOOT_13, 1),
355 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nand_ce0", 0x1, 3, BOOT_11, 2),
356 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nand_ale", 0x1, 1, BOOT_9, 2),
357 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nand_cle", 0x1, 2, BOOT_10, 2),
358 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nand_wen_clk", 0x1, 0, BOOT_8, 2),
359 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nand_ren_wr", 0x1, 4, BOOT_12, 2),
360 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nand_rb0", 0x1, 6, BOOT_14, 2),
361 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nand_ce1", 0x1, 7, BOOT_15, 2),
362 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nor_hold", 0x0, 3, BOOT_3, 3),
363 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nor_d", 0x0, 4, BOOT_4, 3),
364 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nor_q", 0x0, 5, BOOT_5, 3),
365 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nor_c", 0x0, 6, BOOT_6, 3),
366 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nor_wp", 0x0, 7, BOOT_7, 3),
367 1.1 ryo GPIO_MUX_PINCTRL_GROUP("nor_cs", 0x1, 6, BOOT_14, 3),
368 1.1 ryo
369 1.1 ryo /* GPIOZ (PERIPHS_PIN_MUX_6..7) */
370 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d0_z", 0x6, 2, GPIOZ_2, 5),
371 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d1_z", 0x6, 3, GPIOZ_3, 5),
372 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d2_z", 0x6, 4, GPIOZ_4, 5),
373 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d3_z", 0x6, 5, GPIOZ_5, 5),
374 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_clk_z", 0x6, 6, GPIOZ_6, 5),
375 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_cmd_z", 0x6, 7, GPIOZ_7, 5),
376 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c0_sda_z0", 0x6, 0, GPIOZ_0, 4),
377 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c0_sck_z1", 0x6, 1, GPIOZ_1, 4),
378 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c0_sda_z7", 0x6, 7, GPIOZ_7, 7),
379 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c0_sck_z8", 0x7, 0, GPIOZ_8, 7),
380 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c2_sda_z", 0x7, 6, GPIOZ_14, 3),
381 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c2_sck_z", 0x7, 7, GPIOZ_15, 3),
382 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_clk_z", 0x6, 0, GPIOZ_0, 3),
383 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_data_z", 0x6, 1, GPIOZ_1, 3),
384 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_mdio", 0x6, 0, GPIOZ_0, 1),
385 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_mdc", 0x6, 1, GPIOZ_1, 1),
386 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_rgmii_rx_clk", 0x6, 2, GPIOZ_2, 1),
387 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_rx_dv", 0x6, 3, GPIOZ_3, 1),
388 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_rxd0", 0x6, 4, GPIOZ_4, 1),
389 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_rxd1", 0x6, 5, GPIOZ_5, 1),
390 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_rxd2_rgmii", 0x6, 6, GPIOZ_6, 1),
391 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_rxd3_rgmii", 0x6, 7, GPIOZ_7, 1),
392 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_rgmii_tx_clk", 0x7, 0, GPIOZ_8, 1),
393 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_txen", 0x7, 1, GPIOZ_9, 1),
394 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_txd0", 0x7, 2, GPIOZ_10, 1),
395 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_txd1", 0x7, 3, GPIOZ_11, 1),
396 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_txd2_rgmii", 0x7, 4, GPIOZ_12, 1),
397 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_txd3_rgmii", 0x7, 5, GPIOZ_13, 1),
398 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_link_led", 0x7, 6, GPIOZ_14, 1),
399 1.1 ryo GPIO_MUX_PINCTRL_GROUP("eth_act_led", 0x7, 7, GPIOZ_15, 1),
400 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_vs", 0x6, 0, GPIOZ_0, 2),
401 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_hs", 0x6, 1, GPIOZ_1, 2),
402 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_clk", 0x6, 3, GPIOZ_3, 2),
403 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din0", 0x6, 4, GPIOZ_4, 2),
404 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din1", 0x6, 5, GPIOZ_5, 2),
405 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din2", 0x6, 6, GPIOZ_6, 2),
406 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din3", 0x6, 7, GPIOZ_7, 2),
407 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din4", 0x7, 0, GPIOZ_8, 2),
408 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din5", 0x7, 1, GPIOZ_9, 2),
409 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din6", 0x7, 2, GPIOZ_10, 2),
410 1.1 ryo GPIO_MUX_PINCTRL_GROUP("bt565_a_din7", 0x7, 3, GPIOZ_11, 2),
411 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_valid_z", 0x6, 2, GPIOZ_2, 3),
412 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_sop_z", 0x6, 3, GPIOZ_3, 3),
413 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din0_z", 0x6, 4, GPIOZ_4, 3),
414 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_clk_z", 0x6, 5, GPIOZ_5, 3),
415 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_fail", 0x6, 6, GPIOZ_6, 3),
416 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din1", 0x6, 7, GPIOZ_7, 3),
417 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din2", 0x7, 0, GPIOZ_8, 3),
418 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din3", 0x7, 1, GPIOZ_9, 3),
419 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din4", 0x7, 2, GPIOZ_10, 3),
420 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din5", 0x7, 3, GPIOZ_11, 3),
421 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din6", 0x7, 4, GPIOZ_12, 3),
422 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din7", 0x7, 5, GPIOZ_13, 3),
423 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din0_z", 0x6, 2, GPIOZ_2, 7),
424 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din1_z", 0x6, 3, GPIOZ_3, 7),
425 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din2_z", 0x6, 4, GPIOZ_4, 7),
426 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din3_z", 0x6, 5, GPIOZ_5, 7),
427 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_dclk_z", 0x6, 6, GPIOZ_6, 7),
428 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_sclk_z", 0x6, 7, GPIOZ_7, 6),
429 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_fs_z", 0x6, 6, GPIOZ_6, 6),
430 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din0_z", 0x6, 2, GPIOZ_2, 6),
431 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din1_z", 0x6, 3, GPIOZ_3, 6),
432 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din2_z", 0x6, 4, GPIOZ_4, 6),
433 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din3_z", 0x6, 5, GPIOZ_5, 6),
434 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_sclk_z", 0x6, 7, GPIOZ_7, 4),
435 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_fs_z", 0x6, 6, GPIOZ_6, 4),
436 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout0_z", 0x6, 2, GPIOZ_2, 4),
437 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout1_z", 0x6, 3, GPIOZ_3, 4),
438 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout2_z", 0x6, 4, GPIOZ_4, 4),
439 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout3_z", 0x6, 5, GPIOZ_5, 4),
440 1.1 ryo GPIO_MUX_PINCTRL_GROUP("mclk1_z", 0x7, 0, GPIOZ_8, 4),
441 1.1 ryo
442 1.1 ryo /* GPIOX (PERIPHS_PIN_MUX_3..5) */
443 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdio_d0", 0x3, 0, GPIOX_0, 1),
444 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdio_d1", 0x3, 1, GPIOX_1, 1),
445 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdio_d2", 0x3, 2, GPIOX_2, 1),
446 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdio_d3", 0x3, 3, GPIOX_3, 1),
447 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdio_clk", 0x3, 4, GPIOX_4, 1),
448 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdio_cmd", 0x3, 5, GPIOX_5, 1),
449 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_mosi_x", 0x4, 0, GPIOX_8, 4),
450 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_miso_x", 0x4, 1, GPIOX_9, 4),
451 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_ss0_x", 0x4, 2, GPIOX_10, 4),
452 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_clk_x", 0x4, 3, GPIOX_11, 4),
453 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c1_sda_x", 0x4, 2, GPIOX_10, 5),
454 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c1_sck_x", 0x4, 3, GPIOX_11, 5),
455 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c2_sda_x", 0x5, 1, GPIOX_17, 1),
456 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c2_sck_x", 0x5, 2, GPIOX_18, 1),
457 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_a_tx", 0x4, 4, GPIOX_12, 1),
458 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_a_rx", 0x4, 5, GPIOX_13, 1),
459 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_a_cts", 0x4, 6, GPIOX_14, 1),
460 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_a_rts", 0x4, 7, GPIOX_15, 1),
461 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_b_tx", 0x3, 6, GPIOX_6, 2),
462 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_b_rx", 0x3, 7, GPIOX_7, 2),
463 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_clk_x", 0x4, 0, GPIOX_8, 6),
464 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_data_x", 0x4, 1, GPIOX_9, 6),
465 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_a", 0x3, 6, GPIOX_6, 1),
466 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_b_x7", 0x3, 7, GPIOX_7, 4),
467 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_b_x19", 0x5, 3, GPIOX_19, 1),
468 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_c_x5", 0x3, 5, GPIOX_5, 4),
469 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_c_x8", 0x4, 0, GPIOX_8, 5),
470 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_d_x3", 0x3, 3, GPIOX_3, 4),
471 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_d_x6", 0x3, 6, GPIOX_6, 4),
472 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_e", 0x5, 0, GPIOX_16, 1),
473 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_f_x", 0x3, 7, GPIOX_7, 1),
474 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_a_valid", 0x3, 2, GPIOX_2, 3),
475 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_a_sop", 0x3, 1, GPIOX_1, 3),
476 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_a_din0", 0x3, 0, GPIOX_0, 3),
477 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_a_clk", 0x3, 3, GPIOX_3, 3),
478 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_valid_x", 0x4, 1, GPIOX_9, 3),
479 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_sop_x", 0x4, 0, GPIOX_8, 3),
480 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_din0_x", 0x4, 2, GPIOX_10, 3),
481 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tsin_b_clk_x", 0x4, 3, GPIOX_11, 3),
482 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din0_x", 0x3, 0, GPIOX_0, 2),
483 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din1_x", 0x3, 1, GPIOX_1, 2),
484 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din2_x", 0x3, 2, GPIOX_2, 2),
485 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din3_x", 0x3, 3, GPIOX_3, 2),
486 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_dclk_x", 0x3, 4, GPIOX_4, 2),
487 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_slv_sclk", 0x4, 3, GPIOX_11, 2),
488 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_slv_fs", 0x4, 2, GPIOX_10, 2),
489 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_din0", 0x4, 1, GPIOX_9, 2),
490 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_din1", 0x4, 0, GPIOX_8, 2),
491 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_sclk", 0x4, 3, GPIOX_11, 1),
492 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_fs", 0x4, 2, GPIOX_10, 1),
493 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_dout0", 0x4, 1, GPIOX_9, 1),
494 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_a_dout1", 0x4, 0, GPIOX_8, 1),
495 1.1 ryo GPIO_MUX_PINCTRL_GROUP("mclk1_x", 0x3, 5, GPIOX_5, 2),
496 1.1 ryo
497 1.1 ryo /* GPIOC (PERIPHS_PIN_MUX_9) */
498 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d0_c", 0x9, 0, GPIOC_0, 1),
499 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d1_c", 0x9, 1, GPIOC_1, 1),
500 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d2_c", 0x9, 2, GPIOC_2, 1),
501 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_d3_c", 0x9, 3, GPIOC_3, 1),
502 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_clk_c", 0x9, 4, GPIOC_4, 1),
503 1.1 ryo GPIO_MUX_PINCTRL_GROUP("sdcard_cmd_c", 0x9, 5, GPIOC_5, 1),
504 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_mosi_c", 0x9, 0, GPIOC_0, 5),
505 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_miso_c", 0x9, 1, GPIOC_1, 5),
506 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_ss0_c", 0x9, 2, GPIOC_2, 5),
507 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi0_clk_c", 0x9, 3, GPIOC_3, 5),
508 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c0_sda_c", 0x9, 5, GPIOC_5, 3),
509 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c0_sck_c", 0x9, 6, GPIOC_6, 3),
510 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_ao_a_rx_c", 0x9, 2, GPIOC_2, 2),
511 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_ao_a_tx_c", 0x9, 3, GPIOC_3, 2),
512 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_clk_c", 0x9, 5, GPIOC_5, 5),
513 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_data_c", 0x9, 6, GPIOC_6, 5),
514 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_c_c", 0x9, 4, GPIOC_4, 5),
515 1.1 ryo GPIO_MUX_PINCTRL_GROUP("jtag_b_tdo", 0x9, 0, GPIOC_0, 2),
516 1.1 ryo GPIO_MUX_PINCTRL_GROUP("jtag_b_tdi", 0x9, 1, GPIOC_1, 2),
517 1.1 ryo GPIO_MUX_PINCTRL_GROUP("jtag_b_clk", 0x9, 4, GPIOC_4, 2),
518 1.1 ryo GPIO_MUX_PINCTRL_GROUP("jtag_b_tms", 0x9, 5, GPIOC_5, 2),
519 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din0_c", 0x9, 0, GPIOC_0, 4),
520 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din1_c", 0x9, 1, GPIOC_1, 4),
521 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din2_c", 0x9, 2, GPIOC_2, 4),
522 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din3_c", 0x9, 3, GPIOC_3, 4),
523 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_dclk_c", 0x9, 4, GPIOC_4, 4),
524 1.1 ryo
525 1.1 ryo /* GPIOH (PERIPHS_PIN_MUX_B..C) */
526 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi1_mosi", 0xb, 4, GPIOH_4, 3),
527 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi1_miso", 0xb, 5, GPIOH_5, 3),
528 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi1_ss0", 0xb, 6, GPIOH_6, 3),
529 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spi1_clk", 0xb, 7, GPIOH_7, 3),
530 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c1_sda_h2", 0xb, 2, GPIOH_2, 2),
531 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c1_sck_h3", 0xb, 3, GPIOH_3, 2),
532 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c1_sda_h6", 0xb, 6, GPIOH_6, 4),
533 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c1_sck_h7", 0xb, 7, GPIOH_7, 4),
534 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c3_sda_h", 0xb, 0, GPIOH_0, 2),
535 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c3_sck_h", 0xb, 1, GPIOH_1, 2),
536 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_c_tx", 0xb, 7, GPIOH_7, 2),
537 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_c_rx", 0xb, 6, GPIOH_6, 2),
538 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_c_cts", 0xb, 5, GPIOH_5, 2),
539 1.1 ryo GPIO_MUX_PINCTRL_GROUP("uart_c_rts", 0xb, 4, GPIOH_4, 2),
540 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_clk_h", 0xb, 6, GPIOH_6, 1),
541 1.1 ryo GPIO_MUX_PINCTRL_GROUP("iso7816_data_h", 0xb, 7, GPIOH_7, 1),
542 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pwm_f_h", 0xb, 5, GPIOH_5, 4),
543 1.1 ryo GPIO_MUX_PINCTRL_GROUP("cec_ao_a_h", 0xb, 3, GPIOH_3, 4),
544 1.1 ryo GPIO_MUX_PINCTRL_GROUP("cec_ao_b_h", 0xb, 3, GPIOH_3, 5),
545 1.1 ryo GPIO_MUX_PINCTRL_GROUP("hdmitx_sda", 0xb, 0, GPIOH_0, 1),
546 1.1 ryo GPIO_MUX_PINCTRL_GROUP("hdmitx_sck", 0xb, 1, GPIOH_1, 1),
547 1.1 ryo GPIO_MUX_PINCTRL_GROUP("hdmitx_hpd_in", 0xb, 2, GPIOH_2, 1),
548 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spdif_out_h", 0xb, 4, GPIOH_4, 1),
549 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spdif_in_h", 0xb, 5, GPIOH_5, 1),
550 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_din3_h", 0xb, 5, GPIOH_5, 6),
551 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_dout3_h", 0xb, 5, GPIOH_5, 5),
552 1.1 ryo
553 1.1 ryo /* GPIOA (PERIPHS_PIN_MUX_D..E) */
554 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c3_sda_a", 0xe, 6, GPIOA_14, 2),
555 1.1 ryo GPIO_MUX_PINCTRL_GROUP("i2c3_sck_a", 0xe, 7, GPIOA_15, 2),
556 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din0_a", 0xe, 0, GPIOA_8, 1),
557 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din1_a", 0xe, 1, GPIOA_9, 1),
558 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din2_a", 0xd, 6, GPIOA_6, 1),
559 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_din3_a", 0xd, 5, GPIOA_5, 1),
560 1.1 ryo GPIO_MUX_PINCTRL_GROUP("pdm_dclk_a", 0xd, 7, GPIOA_7, 1),
561 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spdif_in_a10", 0xe, 2, GPIOA_10, 1),
562 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spdif_in_a12", 0xe, 4, GPIOA_12, 1),
563 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spdif_out_a11", 0xe, 3, GPIOA_11, 1),
564 1.1 ryo GPIO_MUX_PINCTRL_GROUP("spdif_out_a13", 0xe, 5, GPIOA_13, 1),
565 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_slv_sclk", 0xd, 1, GPIOA_1, 2),
566 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_slv_fs", 0xd, 2, GPIOA_2, 2),
567 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_din0", 0xd, 3, GPIOA_3, 2),
568 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_din1", 0xd, 4, GPIOA_4, 2),
569 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_din2", 0xd, 5, GPIOA_5, 2),
570 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_din3_a", 0xd, 6, GPIOA_6, 2),
571 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_sclk", 0xd, 1, GPIOA_1, 1),
572 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_fs", 0xd, 2, GPIOA_2, 1),
573 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_dout0", 0xd, 3, GPIOA_3, 1),
574 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_dout1", 0xd, 4, GPIOA_4, 1),
575 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_dout2", 0xd, 5, GPIOA_5, 3),
576 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_b_dout3_a", 0xd, 6, GPIOA_6, 3),
577 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_sclk_a", 0xe, 4, GPIOA_12, 3),
578 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_slv_fs_a", 0xe, 5, GPIOA_13, 3),
579 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din0_a", 0xe, 2, GPIOA_10, 3),
580 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din1_a", 0xe, 1, GPIOA_9, 3),
581 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din2_a", 0xe, 0, GPIOA_8, 3),
582 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_din3_a", 0xd, 7, GPIOA_7, 3),
583 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_sclk_a", 0xe, 4, GPIOA_12, 2),
584 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_fs_a", 0xe, 5, GPIOA_13, 2),
585 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout0_a", 0xe, 2, GPIOA_10, 2),
586 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout1_a", 0xe, 1, GPIOA_9, 2),
587 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout2_a", 0xe, 0, GPIOA_8, 2),
588 1.1 ryo GPIO_MUX_PINCTRL_GROUP("tdm_c_dout3_a", 0xd, 7, GPIOA_7, 2),
589 1.1 ryo GPIO_MUX_PINCTRL_GROUP("mclk0_a", 0xd, 0, GPIOA_0, 1),
590 1.1 ryo GPIO_MUX_PINCTRL_GROUP("mclk1_a", 0xe, 3, GPIOA_11, 2),
591 1.1 ryo };
592 1.1 ryo
593 1.1 ryo #define AOBUS_MUX_PINCTRL_GROUP(_name, _bit, _group, _func) \
594 1.1 ryo { .name = _name, .reg = CBUS_REG((_bit) / 8), .bit = (_func), \
595 1.1 ryo .bank = { _group }, .nbank = 1, \
596 1.1 ryo .func = (_func), .mask = (0xf << (4 * ((_bit) & 7))) }
597 1.1 ryo
598 1.1 ryo static const struct meson_pinctrl_group mesong12a_aobus_groups[] = {
599 1.1 ryo /* GPIOAO and GPIOE (AO_RTI_PINMUX_REG0..1) */
600 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_rx", 1, GPIOAO_1, 1),
601 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_tx", 0, GPIOAO_0, 1),
602 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_cts", 16, GPIOE_0, 1),
603 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_a_rts", 17, GPIOE_1, 1),
604 1.1 ryo
605 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_tx_2", 2, GPIOAO_2, 2),
606 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_rx_3", 3, GPIOAO_3, 2),
607 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_tx_8", 8, GPIOAO_8, 3),
608 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_rx_9", 9, GPIOAO_9, 3),
609 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_cts", 12, GPIOE_0, 2),
610 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("uart_ao_b_rts", 13, GPIOE_1, 2),
611 1.1 ryo
612 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sck", 2, GPIOAO_2, 1),
613 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sda", 3, GPIOAO_3, 1),
614 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sck_e", 12, GPIOE_0, 4),
615 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("i2c_ao_sda_e", 13, GPIOE_1, 4),
616 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("i2c_ao_slave_sck", 2, GPIOAO_2, 3),
617 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("i2c_ao_slave_sda", 3, GPIOAO_3, 3),
618 1.1 ryo
619 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("remote_ao_input", 5, GPIOAO_5, 1),
620 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("remote_ao_out", 4, GPIOAO_4, 1),
621 1.1 ryo
622 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_a_e", 14, GPIOE_2, 3),
623 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_a", 11, GPIOAO_11, 3),
624 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_a_hiz", 11, GPIOAO_11, 2),
625 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_b", 12, GPIOE_0, 3),
626 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_c_4", 4, GPIOAO_4, 3),
627 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_c_hiz", 4, GPIOAO_4, 4),
628 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_c_6", 6, GPIOAO_6, 3),
629 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_d_5", 5, GPIOAO_5, 3),
630 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_d_10", 10, GPIOAO_10, 3),
631 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("pwm_ao_d_e", 13, GPIOE_1, 3),
632 1.1 ryo
633 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("jtag_a_tdi", 8, GPIOAO_8, 1),
634 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("jtag_a_tdo", 9, GPIOAO_9, 1),
635 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("jtag_a_clk", 6, GPIOAO_6, 1),
636 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("jtag_a_tms", 7, GPIOAO_7, 1),
637 1.1 ryo
638 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("cec_ao_a", 10, GPIOAO_10, 1),
639 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("cec_ao_b", 10, GPIOAO_10, 2),
640 1.1 ryo
641 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tsin_ao_asop", 6, GPIOAO_6, 4),
642 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tsin_ao_adin0", 7, GPIOAO_7, 4),
643 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tsin_ao_aclk", 8, GPIOAO_8, 4),
644 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tsin_ao_a_valid", 9, GPIOAO_9, 4),
645 1.1 ryo
646 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("spdif_ao_out", 10, GPIOAO_10, 4),
647 1.1 ryo
648 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_dout0", 4, GPIOAO_4, 5),
649 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_dout1", 10, GPIOAO_10, 5),
650 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_dout2", 6, GPIOAO_6, 5),
651 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_fs", 7, GPIOAO_7, 5),
652 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_sclk", 8, GPIOAO_8, 5),
653 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_din0", 4, GPIOAO_4, 6),
654 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_din1", 10, GPIOAO_10, 6),
655 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_din2", 6, GPIOAO_6, 6),
656 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_slv_fs", 7, GPIOAO_7, 6),
657 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("tdm_ao_b_slv_sclk", 8, GPIOAO_8, 6),
658 1.1 ryo
659 1.1 ryo AOBUS_MUX_PINCTRL_GROUP("mclk0_ao", 9, GPIOAO_9, 5),
660 1.1 ryo };
661 1.1 ryo
662 1.1 ryo const struct meson_pinctrl_config mesong12a_periphs_pinctrl_config = {
663 1.1 ryo .name = "Meson G12A periphs GPIO",
664 1.1 ryo .groups = mesong12a_periphs_groups,
665 1.1 ryo .ngroups = __arraycount(mesong12a_periphs_groups),
666 1.1 ryo .gpios = mesong12a_periphs_gpios,
667 1.1 ryo .ngpios = __arraycount(mesong12a_periphs_gpios),
668 1.1 ryo };
669 1.1 ryo
670 1.1 ryo const struct meson_pinctrl_config mesong12a_aobus_pinctrl_config = {
671 1.1 ryo .name = "Meson G12A AO GPIO",
672 1.1 ryo .groups = mesong12a_aobus_groups,
673 1.1 ryo .ngroups = __arraycount(mesong12a_aobus_groups),
674 1.1 ryo .gpios = mesong12a_aobus_gpios,
675 1.1 ryo .ngpios = __arraycount(mesong12a_aobus_gpios),
676 1.1 ryo };
677