mesongxbb_pinctrl.c revision 1.1 1 1.1 jmcneill /* $NetBSD: mesongxbb_pinctrl.c,v 1.1 2019/02/25 19:30:17 jmcneill Exp $ */
2 1.1 jmcneill
3 1.1 jmcneill /*-
4 1.1 jmcneill * Copyright (c) 2019 Jared McNeill <jmcneill (at) invisible.ca>
5 1.1 jmcneill * All rights reserved.
6 1.1 jmcneill *
7 1.1 jmcneill * Redistribution and use in source and binary forms, with or without
8 1.1 jmcneill * modification, are permitted provided that the following conditions
9 1.1 jmcneill * are met:
10 1.1 jmcneill * 1. Redistributions of source code must retain the above copyright
11 1.1 jmcneill * notice, this list of conditions and the following disclaimer.
12 1.1 jmcneill * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 jmcneill * notice, this list of conditions and the following disclaimer in the
14 1.1 jmcneill * documentation and/or other materials provided with the distribution.
15 1.1 jmcneill *
16 1.1 jmcneill * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 1.1 jmcneill * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 1.1 jmcneill * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 1.1 jmcneill * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 1.1 jmcneill * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 1.1 jmcneill * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 1.1 jmcneill * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 1.1 jmcneill * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 1.1 jmcneill * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 1.1 jmcneill * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 1.1 jmcneill * SUCH DAMAGE.
27 1.1 jmcneill */
28 1.1 jmcneill
29 1.1 jmcneill #include <sys/cdefs.h>
30 1.1 jmcneill __KERNEL_RCSID(0, "$NetBSD: mesongxbb_pinctrl.c,v 1.1 2019/02/25 19:30:17 jmcneill Exp $");
31 1.1 jmcneill
32 1.1 jmcneill #include <sys/param.h>
33 1.1 jmcneill
34 1.1 jmcneill #include <arm/amlogic/meson_pinctrl.h>
35 1.1 jmcneill
36 1.1 jmcneill /* CBUS pinmux registers */
37 1.1 jmcneill #define CBUS_REG(n) ((n) << 2)
38 1.1 jmcneill #define REG0 CBUS_REG(0)
39 1.1 jmcneill #define REG1 CBUS_REG(1)
40 1.1 jmcneill #define REG2 CBUS_REG(2)
41 1.1 jmcneill #define REG3 CBUS_REG(3)
42 1.1 jmcneill #define REG4 CBUS_REG(4)
43 1.1 jmcneill #define REG5 CBUS_REG(5)
44 1.1 jmcneill #define REG6 CBUS_REG(6)
45 1.1 jmcneill #define REG7 CBUS_REG(7)
46 1.1 jmcneill #define REG8 CBUS_REG(8)
47 1.1 jmcneill #define REG9 CBUS_REG(9)
48 1.1 jmcneill
49 1.1 jmcneill /* AO pinmux registers */
50 1.1 jmcneill #define AOREG0 0x00
51 1.1 jmcneill #define AOREG1 0x04
52 1.1 jmcneill
53 1.1 jmcneill /*
54 1.1 jmcneill * GPIO banks. The values must match those in dt-bindings/gpio/meson-gxbb-gpio.h
55 1.1 jmcneill */
56 1.1 jmcneill enum {
57 1.1 jmcneill GPIOZ_0 = 0,
58 1.1 jmcneill GPIOZ_1,
59 1.1 jmcneill GPIOZ_2,
60 1.1 jmcneill GPIOZ_3,
61 1.1 jmcneill GPIOZ_4,
62 1.1 jmcneill GPIOZ_5,
63 1.1 jmcneill GPIOZ_6,
64 1.1 jmcneill GPIOZ_7,
65 1.1 jmcneill GPIOZ_8,
66 1.1 jmcneill GPIOZ_9,
67 1.1 jmcneill GPIOZ_10,
68 1.1 jmcneill GPIOZ_11,
69 1.1 jmcneill GPIOZ_12,
70 1.1 jmcneill GPIOZ_13,
71 1.1 jmcneill GPIOZ_14,
72 1.1 jmcneill GPIOZ_15,
73 1.1 jmcneill
74 1.1 jmcneill GPIOH_0 = 16,
75 1.1 jmcneill GPIOH_1,
76 1.1 jmcneill GPIOH_2,
77 1.1 jmcneill GPIOH_3,
78 1.1 jmcneill
79 1.1 jmcneill BOOT_0 = 20,
80 1.1 jmcneill BOOT_1,
81 1.1 jmcneill BOOT_2,
82 1.1 jmcneill BOOT_3,
83 1.1 jmcneill BOOT_4,
84 1.1 jmcneill BOOT_5,
85 1.1 jmcneill BOOT_6,
86 1.1 jmcneill BOOT_7,
87 1.1 jmcneill BOOT_8,
88 1.1 jmcneill BOOT_9,
89 1.1 jmcneill BOOT_10,
90 1.1 jmcneill BOOT_11,
91 1.1 jmcneill BOOT_12,
92 1.1 jmcneill BOOT_13,
93 1.1 jmcneill BOOT_14,
94 1.1 jmcneill BOOT_15,
95 1.1 jmcneill BOOT_16,
96 1.1 jmcneill BOOT_17,
97 1.1 jmcneill
98 1.1 jmcneill CARD_0 = 38,
99 1.1 jmcneill CARD_1,
100 1.1 jmcneill CARD_2,
101 1.1 jmcneill CARD_3,
102 1.1 jmcneill CARD_4,
103 1.1 jmcneill CARD_5,
104 1.1 jmcneill CARD_6,
105 1.1 jmcneill
106 1.1 jmcneill GPIODV_0 = 45,
107 1.1 jmcneill GPIODV_1,
108 1.1 jmcneill GPIODV_2,
109 1.1 jmcneill GPIODV_3,
110 1.1 jmcneill GPIODV_4,
111 1.1 jmcneill GPIODV_5,
112 1.1 jmcneill GPIODV_6,
113 1.1 jmcneill GPIODV_7,
114 1.1 jmcneill GPIODV_8,
115 1.1 jmcneill GPIODV_9,
116 1.1 jmcneill GPIODV_10,
117 1.1 jmcneill GPIODV_11,
118 1.1 jmcneill GPIODV_12,
119 1.1 jmcneill GPIODV_13,
120 1.1 jmcneill GPIODV_14,
121 1.1 jmcneill GPIODV_15,
122 1.1 jmcneill GPIODV_16,
123 1.1 jmcneill GPIODV_17,
124 1.1 jmcneill GPIODV_18,
125 1.1 jmcneill GPIODV_19,
126 1.1 jmcneill GPIODV_20,
127 1.1 jmcneill GPIODV_21,
128 1.1 jmcneill GPIODV_22,
129 1.1 jmcneill GPIODV_23,
130 1.1 jmcneill GPIODV_24,
131 1.1 jmcneill GPIODV_25,
132 1.1 jmcneill GPIODV_26,
133 1.1 jmcneill GPIODV_27,
134 1.1 jmcneill GPIODV_28,
135 1.1 jmcneill GPIODV_29,
136 1.1 jmcneill
137 1.1 jmcneill GPIOY_0 = 75,
138 1.1 jmcneill GPIOY_1,
139 1.1 jmcneill GPIOY_2,
140 1.1 jmcneill GPIOY_3,
141 1.1 jmcneill GPIOY_4,
142 1.1 jmcneill GPIOY_5,
143 1.1 jmcneill GPIOY_6,
144 1.1 jmcneill GPIOY_7,
145 1.1 jmcneill GPIOY_8,
146 1.1 jmcneill GPIOY_9,
147 1.1 jmcneill GPIOY_10,
148 1.1 jmcneill GPIOY_11,
149 1.1 jmcneill GPIOY_12,
150 1.1 jmcneill GPIOY_13,
151 1.1 jmcneill GPIOY_14,
152 1.1 jmcneill GPIOY_15,
153 1.1 jmcneill GPIOY_16,
154 1.1 jmcneill
155 1.1 jmcneill GPIOX_0 = 92,
156 1.1 jmcneill GPIOX_1,
157 1.1 jmcneill GPIOX_2,
158 1.1 jmcneill GPIOX_3,
159 1.1 jmcneill GPIOX_4,
160 1.1 jmcneill GPIOX_5,
161 1.1 jmcneill GPIOX_6,
162 1.1 jmcneill GPIOX_7,
163 1.1 jmcneill GPIOX_8,
164 1.1 jmcneill GPIOX_9,
165 1.1 jmcneill GPIOX_10,
166 1.1 jmcneill GPIOX_11,
167 1.1 jmcneill GPIOX_12,
168 1.1 jmcneill GPIOX_13,
169 1.1 jmcneill GPIOX_14,
170 1.1 jmcneill GPIOX_15,
171 1.1 jmcneill GPIOX_16,
172 1.1 jmcneill GPIOX_17,
173 1.1 jmcneill GPIOX_18,
174 1.1 jmcneill GPIOX_19,
175 1.1 jmcneill GPIOX_20,
176 1.1 jmcneill GPIOX_21,
177 1.1 jmcneill GPIOX_22,
178 1.1 jmcneill
179 1.1 jmcneill GPIOCLK_0 = 115,
180 1.1 jmcneill GPIOCLK_1,
181 1.1 jmcneill GPIOCLK_2,
182 1.1 jmcneill GPIOCLK_3,
183 1.1 jmcneill
184 1.1 jmcneill GPIOAO_0 = 0,
185 1.1 jmcneill GPIOAO_1,
186 1.1 jmcneill GPIOAO_2,
187 1.1 jmcneill GPIOAO_3,
188 1.1 jmcneill GPIOAO_4,
189 1.1 jmcneill GPIOAO_5,
190 1.1 jmcneill GPIOAO_6,
191 1.1 jmcneill GPIOAO_7,
192 1.1 jmcneill GPIOAO_8,
193 1.1 jmcneill GPIOAO_9,
194 1.1 jmcneill GPIOAO_10,
195 1.1 jmcneill GPIOAO_11,
196 1.1 jmcneill GPIOAO_12,
197 1.1 jmcneill GPIOAO_13,
198 1.1 jmcneill GPIO_TEST_N,
199 1.1 jmcneill };
200 1.1 jmcneill
201 1.1 jmcneill #define CBUS_GPIO(_id, _off, _bit) \
202 1.1 jmcneill [_id] = { \
203 1.1 jmcneill .id = (_id), \
204 1.1 jmcneill .name = __STRING(_id), \
205 1.1 jmcneill .oen = { \
206 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_GPIO, \
207 1.1 jmcneill .reg = CBUS_REG((_off) * 3 + 0), \
208 1.1 jmcneill .mask = __BIT(_bit) \
209 1.1 jmcneill }, \
210 1.1 jmcneill .out = { \
211 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_GPIO, \
212 1.1 jmcneill .reg = CBUS_REG((_off) * 3 + 1), \
213 1.1 jmcneill .mask = __BIT(_bit) \
214 1.1 jmcneill }, \
215 1.1 jmcneill .in = { \
216 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_GPIO, \
217 1.1 jmcneill .reg = CBUS_REG((_off) * 3 + 2), \
218 1.1 jmcneill .mask = __BIT(_bit) \
219 1.1 jmcneill }, \
220 1.1 jmcneill .pupden = { \
221 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_PULL_ENABLE, \
222 1.1 jmcneill .reg = CBUS_REG(_off), \
223 1.1 jmcneill .mask = __BIT(_bit) \
224 1.1 jmcneill }, \
225 1.1 jmcneill .pupd = { \
226 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_PULL, \
227 1.1 jmcneill .reg = CBUS_REG(_off), \
228 1.1 jmcneill .mask = __BIT(_bit) \
229 1.1 jmcneill }, \
230 1.1 jmcneill }
231 1.1 jmcneill
232 1.1 jmcneill static const struct meson_pinctrl_gpio mesongxbb_periphs_gpios[] = {
233 1.1 jmcneill /* GPIODV */
234 1.1 jmcneill CBUS_GPIO(GPIODV_0, 0, 0),
235 1.1 jmcneill CBUS_GPIO(GPIODV_1, 0, 1),
236 1.1 jmcneill CBUS_GPIO(GPIODV_2, 0, 2),
237 1.1 jmcneill CBUS_GPIO(GPIODV_3, 0, 3),
238 1.1 jmcneill CBUS_GPIO(GPIODV_4, 0, 4),
239 1.1 jmcneill CBUS_GPIO(GPIODV_5, 0, 5),
240 1.1 jmcneill CBUS_GPIO(GPIODV_6, 0, 6),
241 1.1 jmcneill CBUS_GPIO(GPIODV_7, 0, 7),
242 1.1 jmcneill CBUS_GPIO(GPIODV_8, 0, 8),
243 1.1 jmcneill CBUS_GPIO(GPIODV_9, 0, 9),
244 1.1 jmcneill CBUS_GPIO(GPIODV_10, 0, 10),
245 1.1 jmcneill CBUS_GPIO(GPIODV_11, 0, 11),
246 1.1 jmcneill CBUS_GPIO(GPIODV_12, 0, 12),
247 1.1 jmcneill CBUS_GPIO(GPIODV_13, 0, 13),
248 1.1 jmcneill CBUS_GPIO(GPIODV_14, 0, 14),
249 1.1 jmcneill CBUS_GPIO(GPIODV_15, 0, 15),
250 1.1 jmcneill CBUS_GPIO(GPIODV_16, 0, 16),
251 1.1 jmcneill CBUS_GPIO(GPIODV_17, 0, 17),
252 1.1 jmcneill CBUS_GPIO(GPIODV_18, 0, 18),
253 1.1 jmcneill CBUS_GPIO(GPIODV_19, 0, 19),
254 1.1 jmcneill CBUS_GPIO(GPIODV_20, 0, 20),
255 1.1 jmcneill CBUS_GPIO(GPIODV_21, 0, 21),
256 1.1 jmcneill CBUS_GPIO(GPIODV_22, 0, 22),
257 1.1 jmcneill
258 1.1 jmcneill /* GPIOH */
259 1.1 jmcneill CBUS_GPIO(GPIOH_0, 1, 0),
260 1.1 jmcneill CBUS_GPIO(GPIOH_1, 1, 1),
261 1.1 jmcneill CBUS_GPIO(GPIOH_2, 1, 2),
262 1.1 jmcneill CBUS_GPIO(GPIOH_3, 1, 3),
263 1.1 jmcneill
264 1.1 jmcneill /* BOOT */
265 1.1 jmcneill CBUS_GPIO(BOOT_0, 2, 0),
266 1.1 jmcneill CBUS_GPIO(BOOT_1, 2, 1),
267 1.1 jmcneill CBUS_GPIO(BOOT_2, 2, 2),
268 1.1 jmcneill CBUS_GPIO(BOOT_3, 2, 3),
269 1.1 jmcneill CBUS_GPIO(BOOT_4, 2, 4),
270 1.1 jmcneill CBUS_GPIO(BOOT_5, 2, 5),
271 1.1 jmcneill CBUS_GPIO(BOOT_6, 2, 6),
272 1.1 jmcneill CBUS_GPIO(BOOT_7, 2, 7),
273 1.1 jmcneill CBUS_GPIO(BOOT_8, 2, 8),
274 1.1 jmcneill CBUS_GPIO(BOOT_9, 2, 9),
275 1.1 jmcneill CBUS_GPIO(BOOT_10, 2, 10),
276 1.1 jmcneill CBUS_GPIO(BOOT_11, 2, 11),
277 1.1 jmcneill CBUS_GPIO(BOOT_12, 2, 12),
278 1.1 jmcneill CBUS_GPIO(BOOT_13, 2, 13),
279 1.1 jmcneill CBUS_GPIO(BOOT_14, 2, 14),
280 1.1 jmcneill CBUS_GPIO(BOOT_15, 2, 15),
281 1.1 jmcneill CBUS_GPIO(BOOT_16, 2, 16),
282 1.1 jmcneill CBUS_GPIO(BOOT_17, 2, 17),
283 1.1 jmcneill
284 1.1 jmcneill /* CARD */
285 1.1 jmcneill CBUS_GPIO(CARD_0, 2, 20),
286 1.1 jmcneill CBUS_GPIO(CARD_1, 2, 21),
287 1.1 jmcneill CBUS_GPIO(CARD_2, 2, 22),
288 1.1 jmcneill CBUS_GPIO(CARD_3, 2, 23),
289 1.1 jmcneill CBUS_GPIO(CARD_4, 2, 24),
290 1.1 jmcneill CBUS_GPIO(CARD_5, 2, 25),
291 1.1 jmcneill CBUS_GPIO(CARD_6, 2, 26),
292 1.1 jmcneill
293 1.1 jmcneill /* CARD */
294 1.1 jmcneill CBUS_GPIO(GPIOCLK_0, 3, 28),
295 1.1 jmcneill CBUS_GPIO(GPIOCLK_1, 3, 29),
296 1.1 jmcneill CBUS_GPIO(GPIOCLK_2, 3, 30),
297 1.1 jmcneill CBUS_GPIO(GPIOCLK_3, 3, 31),
298 1.1 jmcneill
299 1.1 jmcneill /* GPIOX */
300 1.1 jmcneill CBUS_GPIO(GPIOX_0, 4, 0),
301 1.1 jmcneill CBUS_GPIO(GPIOX_1, 4, 1),
302 1.1 jmcneill CBUS_GPIO(GPIOX_2, 4, 2),
303 1.1 jmcneill CBUS_GPIO(GPIOX_3, 4, 3),
304 1.1 jmcneill CBUS_GPIO(GPIOX_4, 4, 4),
305 1.1 jmcneill CBUS_GPIO(GPIOX_5, 4, 5),
306 1.1 jmcneill CBUS_GPIO(GPIOX_6, 4, 6),
307 1.1 jmcneill CBUS_GPIO(GPIOX_7, 4, 7),
308 1.1 jmcneill CBUS_GPIO(GPIOX_8, 4, 8),
309 1.1 jmcneill CBUS_GPIO(GPIOX_9, 4, 9),
310 1.1 jmcneill CBUS_GPIO(GPIOX_10, 4, 10),
311 1.1 jmcneill CBUS_GPIO(GPIOX_11, 4, 11),
312 1.1 jmcneill CBUS_GPIO(GPIOX_12, 4, 12),
313 1.1 jmcneill CBUS_GPIO(GPIOX_13, 4, 13),
314 1.1 jmcneill CBUS_GPIO(GPIOX_14, 4, 14),
315 1.1 jmcneill CBUS_GPIO(GPIOX_15, 4, 15),
316 1.1 jmcneill CBUS_GPIO(GPIOX_16, 4, 16),
317 1.1 jmcneill CBUS_GPIO(GPIOX_17, 4, 17),
318 1.1 jmcneill CBUS_GPIO(GPIOX_18, 4, 18),
319 1.1 jmcneill CBUS_GPIO(GPIOX_19, 4, 19),
320 1.1 jmcneill CBUS_GPIO(GPIOX_20, 4, 20),
321 1.1 jmcneill CBUS_GPIO(GPIOX_21, 4, 21),
322 1.1 jmcneill CBUS_GPIO(GPIOX_22, 4, 22),
323 1.1 jmcneill };
324 1.1 jmcneill
325 1.1 jmcneill #define AO_GPIO(_id, _bit) \
326 1.1 jmcneill [_id] = { \
327 1.1 jmcneill .id = (_id), \
328 1.1 jmcneill .name = __STRING(_id), \
329 1.1 jmcneill .oen = { \
330 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_GPIO, \
331 1.1 jmcneill .reg = 0, \
332 1.1 jmcneill .mask = __BIT(_bit) \
333 1.1 jmcneill }, \
334 1.1 jmcneill .out = { \
335 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_GPIO, \
336 1.1 jmcneill .reg = 0, \
337 1.1 jmcneill .mask = __BIT(_bit + 16) \
338 1.1 jmcneill }, \
339 1.1 jmcneill .in = { \
340 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_GPIO, \
341 1.1 jmcneill .reg = 4, \
342 1.1 jmcneill .mask = __BIT(_bit) \
343 1.1 jmcneill }, \
344 1.1 jmcneill .pupden = { \
345 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_PULL, \
346 1.1 jmcneill .reg = 0, \
347 1.1 jmcneill .mask = __BIT(_bit) \
348 1.1 jmcneill }, \
349 1.1 jmcneill .pupd = { \
350 1.1 jmcneill .type = MESON_PINCTRL_REGTYPE_PULL, \
351 1.1 jmcneill .reg = 0, \
352 1.1 jmcneill .mask = __BIT(_bit + 16) \
353 1.1 jmcneill }, \
354 1.1 jmcneill }
355 1.1 jmcneill
356 1.1 jmcneill static const struct meson_pinctrl_gpio mesongxbb_aobus_gpios[] = {
357 1.1 jmcneill /* GPIOAO */
358 1.1 jmcneill AO_GPIO(GPIOAO_0, 0),
359 1.1 jmcneill AO_GPIO(GPIOAO_1, 1),
360 1.1 jmcneill AO_GPIO(GPIOAO_2, 2),
361 1.1 jmcneill AO_GPIO(GPIOAO_3, 3),
362 1.1 jmcneill AO_GPIO(GPIOAO_4, 4),
363 1.1 jmcneill AO_GPIO(GPIOAO_5, 5),
364 1.1 jmcneill AO_GPIO(GPIOAO_6, 6),
365 1.1 jmcneill AO_GPIO(GPIOAO_7, 7),
366 1.1 jmcneill AO_GPIO(GPIOAO_8, 8),
367 1.1 jmcneill AO_GPIO(GPIOAO_9, 9),
368 1.1 jmcneill AO_GPIO(GPIOAO_10, 10),
369 1.1 jmcneill AO_GPIO(GPIOAO_11, 11),
370 1.1 jmcneill AO_GPIO(GPIOAO_12, 12),
371 1.1 jmcneill AO_GPIO(GPIOAO_13, 13),
372 1.1 jmcneill };
373 1.1 jmcneill
374 1.1 jmcneill static const struct meson_pinctrl_group mesongxbb_periphs_groups[] = {
375 1.1 jmcneill /* GPIOX */
376 1.1 jmcneill { "sdio_d0", REG8, 5, { GPIOX_0 }, 1 },
377 1.1 jmcneill { "sdio_d1", REG8, 4, { GPIOX_1 }, 1 },
378 1.1 jmcneill { "sdio_d2", REG8, 3, { GPIOX_2 }, 1 },
379 1.1 jmcneill { "sdio_d3", REG8, 2, { GPIOX_3 }, 1 },
380 1.1 jmcneill { "sdio_cmd", REG8, 1, { GPIOX_4 }, 1 },
381 1.1 jmcneill { "sdio_clk", REG8, 0, { GPIOX_5 }, 1 },
382 1.1 jmcneill { "sdio_irq", REG8, 11, { GPIOX_7 }, 1 },
383 1.1 jmcneill { "uart_tx_a", REG4, 13, { GPIOX_12 }, 1 },
384 1.1 jmcneill { "uart_rx_a", REG4, 12, { GPIOX_13 }, 1 },
385 1.1 jmcneill { "uart_cts_a", REG4, 11, { GPIOX_14 }, 1 },
386 1.1 jmcneill { "uart_rts_a", REG4, 10, { GPIOX_15 }, 1 },
387 1.1 jmcneill { "pwm_a_x", REG3, 17, { GPIOX_6 }, 1 },
388 1.1 jmcneill { "pwm_e", REG2, 30, { GPIOX_19 }, 1 },
389 1.1 jmcneill { "pwm_f_x", REG3, 18, { GPIOX_7 }, 1 },
390 1.1 jmcneill
391 1.1 jmcneill /* GPIOY */
392 1.1 jmcneill { "uart_cts_c", REG1, 19, { GPIOY_11 }, 1 },
393 1.1 jmcneill { "uart_rts_c", REG1, 18, { GPIOY_12 }, 1 },
394 1.1 jmcneill { "uart_tx_c", REG1, 17, { GPIOY_13 }, 1 },
395 1.1 jmcneill { "uart_rx_c", REG1, 16, { GPIOY_14 }, 1 },
396 1.1 jmcneill { "pwm_a_y", REG1, 21, { GPIOY_16 }, 1 },
397 1.1 jmcneill { "pwm_f_y", REG1, 20, { GPIOY_15 }, 1 },
398 1.1 jmcneill { "i2s_out_ch23_y", REG1, 5, { GPIOY_8 }, 1 },
399 1.1 jmcneill { "i2s_out_ch45_y", REG1, 6, { GPIOY_9 }, 1 },
400 1.1 jmcneill { "i2s_out_ch67_y", REG1, 7, { GPIOY_10 }, 1 },
401 1.1 jmcneill { "spdif_out_y", REG1, 9, { GPIOY_12 }, 1 },
402 1.1 jmcneill { "gen_clk_out", REG6, 15, { GPIOY_15 }, 1 },
403 1.1 jmcneill
404 1.1 jmcneill /* GPIOZ */
405 1.1 jmcneill { "eth_mdio", REG6, 1, { GPIOZ_0 }, 1 },
406 1.1 jmcneill { "eth_mdc", REG6, 0, { GPIOZ_1 }, 1 },
407 1.1 jmcneill { "eth_clk_rx_clk", REG6, 13, { GPIOZ_2 }, 1 },
408 1.1 jmcneill { "eth_rx_dv", REG6, 12, { GPIOZ_3 }, 1 },
409 1.1 jmcneill { "eth_rxd0", REG6, 11, { GPIOZ_4 }, 1 },
410 1.1 jmcneill { "eth_rxd1", REG6, 10, { GPIOZ_5 }, 1 },
411 1.1 jmcneill { "eth_rxd2", REG6, 9, { GPIOZ_6 }, 1 },
412 1.1 jmcneill { "eth_rxd3", REG6, 8, { GPIOZ_7 }, 1 },
413 1.1 jmcneill { "eth_rgmii_tx_clk", REG6, 7, { GPIOZ_8 }, 1 },
414 1.1 jmcneill { "eth_tx_en", REG6, 6, { GPIOZ_9 }, 1 },
415 1.1 jmcneill { "eth_txd0", REG6, 5, { GPIOZ_10 }, 1 },
416 1.1 jmcneill { "eth_txd1", REG6, 4, { GPIOZ_11 }, 1 },
417 1.1 jmcneill { "eth_txd2", REG6, 3, { GPIOZ_12 }, 1 },
418 1.1 jmcneill { "eth_txd3", REG6, 2, { GPIOZ_13 }, 1 },
419 1.1 jmcneill { "spi_ss0", REG5, 26, { GPIOZ_7 }, 1 },
420 1.1 jmcneill { "spi_sclk", REG5, 27, { GPIOZ_6 }, 1 },
421 1.1 jmcneill { "spi_miso", REG5, 28, { GPIOZ_12 }, 1 },
422 1.1 jmcneill { "spi_mosi", REG5, 29, { GPIOZ_13 }, 1 },
423 1.1 jmcneill
424 1.1 jmcneill /* GPIOH */
425 1.1 jmcneill { "hdmi_hpd", REG1, 26, { GPIOH_0 }, 1 },
426 1.1 jmcneill { "hdmi_sda", REG1, 25, { GPIOH_1 }, 1 },
427 1.1 jmcneill { "hdmi_scl", REG1, 24, { GPIOH_2 }, 1 },
428 1.1 jmcneill
429 1.1 jmcneill /* GPIODV */
430 1.1 jmcneill { "uart_tx_b", REG2, 29, { GPIODV_24 }, 1 },
431 1.1 jmcneill { "uart_rx_b", REG2, 28, { GPIODV_25 }, 1 },
432 1.1 jmcneill { "uart_cts_b", REG2, 27, { GPIODV_26 }, 1 },
433 1.1 jmcneill { "uart_rts_b", REG2, 26, { GPIODV_27 }, 1 },
434 1.1 jmcneill { "pwm_b", REG3, 21, { GPIODV_29 }, 1 },
435 1.1 jmcneill { "pwm_d", REG3, 20, { GPIODV_28 }, 1 },
436 1.1 jmcneill { "i2c_sck_a", REG7, 27, { GPIODV_25 }, 1 },
437 1.1 jmcneill { "i2c_sda_a", REG7, 26, { GPIODV_24 }, 1 },
438 1.1 jmcneill { "i2c_sck_b", REG7, 25, { GPIODV_27 }, 1 },
439 1.1 jmcneill { "i2c_sda_b", REG7, 24, { GPIODV_26 }, 1 },
440 1.1 jmcneill { "i2c_sck_c", REG7, 23, { GPIODV_29 }, 1 },
441 1.1 jmcneill { "i2c_sda_c", REG7, 22, { GPIODV_28 }, 1 },
442 1.1 jmcneill
443 1.1 jmcneill /* BOOT */
444 1.1 jmcneill { "emmc_nand_d07", REG4, 30, { BOOT_0, BOOT_1, BOOT_2, BOOT_3, BOOT_4, BOOT_5, BOOT_6, BOOT_7 }, 8 },
445 1.1 jmcneill { "emmc_clk", REG4, 18, { BOOT_8 }, 1 },
446 1.1 jmcneill { "emmc_cmd", REG4, 19, { BOOT_10 }, 1 },
447 1.1 jmcneill { "emmc_ds", REG4, 31, { BOOT_15 }, 1 },
448 1.1 jmcneill { "nor_d", REG5, 1, { BOOT_11 }, 1 },
449 1.1 jmcneill { "nor_q", REG5, 3, { BOOT_12 }, 1 },
450 1.1 jmcneill { "nor_c", REG5, 2, { BOOT_13 }, 1 },
451 1.1 jmcneill { "nor_cs", REG5, 0, { BOOT_15 }, 1 },
452 1.1 jmcneill { "nand_ce0", REG4, 26, { BOOT_8 }, 1 },
453 1.1 jmcneill { "nand_ce1", REG4, 27, { BOOT_9 }, 1 },
454 1.1 jmcneill { "nand_rb0", REG4, 25, { BOOT_10 }, 1 },
455 1.1 jmcneill { "nand_ale", REG4, 24, { BOOT_11 }, 1 },
456 1.1 jmcneill { "nand_cle", REG4, 23, { BOOT_12 }, 1 },
457 1.1 jmcneill { "nand_wen_clk", REG4, 22, { BOOT_13 }, 1 },
458 1.1 jmcneill { "nand_ren_wr", REG4, 21, { BOOT_14 }, 1 },
459 1.1 jmcneill { "nand_dqs", REG4, 20, { BOOT_15 }, 1 },
460 1.1 jmcneill
461 1.1 jmcneill /* CARD */
462 1.1 jmcneill { "sdcard_d1", REG2, 14, { CARD_0 }, 1 },
463 1.1 jmcneill { "sdcard_d0", REG2, 15, { CARD_1 }, 1 },
464 1.1 jmcneill { "sdcard_d3", REG2, 12, { CARD_4 }, 1 },
465 1.1 jmcneill { "sdcard_d2", REG2, 13, { CARD_5 }, 1 },
466 1.1 jmcneill { "sdcard_cmd", REG2, 10, { CARD_3 }, 1 },
467 1.1 jmcneill { "sdcard_clk", REG2, 11, { CARD_2 }, 1 },
468 1.1 jmcneill };
469 1.1 jmcneill
470 1.1 jmcneill static const struct meson_pinctrl_group mesongxbb_aobus_groups[] = {
471 1.1 jmcneill /* GPIOAO */
472 1.1 jmcneill { "uart_tx_ao_b", AOREG0, 24, { GPIOAO_4 }, 1 },
473 1.1 jmcneill { "uart_rx_ao_b", AOREG0, 25, { GPIOAO_5 }, 1 },
474 1.1 jmcneill { "uart_tx_ao_a", AOREG0, 12, { GPIOAO_0 }, 1 },
475 1.1 jmcneill { "uart_rx_ao_a", AOREG0, 11, { GPIOAO_1 }, 1 },
476 1.1 jmcneill { "uart_cts_ao_a", AOREG0, 10, { GPIOAO_2 }, 1 },
477 1.1 jmcneill { "uart_rts_ao_a", AOREG0, 9, { GPIOAO_3 }, 1 },
478 1.1 jmcneill { "uart_cts_ao_b", AOREG0, 8, { GPIOAO_2 }, 1 },
479 1.1 jmcneill { "uart_rts_ao_b", AOREG0, 7, { GPIOAO_3 }, 1 },
480 1.1 jmcneill { "i2c_sck_ao", AOREG0, 6, { GPIOAO_4 }, 1 },
481 1.1 jmcneill { "i2c_sda_ao", AOREG0, 5, { GPIOAO_5 }, 1 },
482 1.1 jmcneill { "i2c_slave_sck_ao", AOREG0, 2, { GPIOAO_4 }, 1 },
483 1.1 jmcneill { "i2c_slave_sda_ao", AOREG0, 1, { GPIOAO_5 }, 1 },
484 1.1 jmcneill { "remote_input_ao", AOREG0, 0, { GPIOAO_7 }, 1 },
485 1.1 jmcneill { "pwm_ao_a_3", AOREG0, 22, { GPIOAO_3 }, 1 },
486 1.1 jmcneill { "pwm_ao_a_6", AOREG0, 18, { GPIOAO_6 }, 1 },
487 1.1 jmcneill { "pwm_ao_a_12", AOREG0, 17, { GPIOAO_12 }, 1 },
488 1.1 jmcneill { "pwm_ao_b", AOREG0, 3, { GPIOAO_13 }, 1 },
489 1.1 jmcneill { "i2s_am_clk", AOREG0, 30, { GPIOAO_8 }, 1 },
490 1.1 jmcneill { "i2s_out_ao_clk", AOREG0, 29, { GPIOAO_9 }, 1 },
491 1.1 jmcneill { "i2s_out_lr_clk", AOREG0, 28, { GPIOAO_10 }, 1 },
492 1.1 jmcneill { "i2s_out_ch01_ao", AOREG0, 27, { GPIOAO_11 }, 1 },
493 1.1 jmcneill { "i2s_out_ch23_ao", AOREG1, 0, { GPIOAO_12 }, 1 },
494 1.1 jmcneill { "i2s_out_ch45_ao", AOREG1, 1, { GPIOAO_13 }, 1 },
495 1.1 jmcneill { "spdif_out_ao_6", AOREG0, 16, { GPIOAO_6 }, 1 },
496 1.1 jmcneill { "spdif_out_ao_13", AOREG0, 4, { GPIOAO_13 }, 1 },
497 1.1 jmcneill { "ao_cec", AOREG0, 15, { GPIOAO_12 }, 1 },
498 1.1 jmcneill { "ee_cec", AOREG0, 14, { GPIOAO_12 }, 1 },
499 1.1 jmcneill
500 1.1 jmcneill /* TEST_N */
501 1.1 jmcneill { "i2s_out_ch67_ao", AOREG1, 2, { GPIO_TEST_N }, 1 },
502 1.1 jmcneill
503 1.1 jmcneill };
504 1.1 jmcneill
505 1.1 jmcneill const struct meson_pinctrl_config mesongxbb_periphs_pinctrl_config = {
506 1.1 jmcneill .name = "Meson GXBB periphs GPIO",
507 1.1 jmcneill .groups = mesongxbb_periphs_groups,
508 1.1 jmcneill .ngroups = __arraycount(mesongxbb_periphs_groups),
509 1.1 jmcneill .gpios = mesongxbb_periphs_gpios,
510 1.1 jmcneill .ngpios = __arraycount(mesongxbb_periphs_gpios),
511 1.1 jmcneill };
512 1.1 jmcneill
513 1.1 jmcneill const struct meson_pinctrl_config mesongxbb_aobus_pinctrl_config = {
514 1.1 jmcneill .name = "Meson GXBB AO GPIO",
515 1.1 jmcneill .groups = mesongxbb_aobus_groups,
516 1.1 jmcneill .ngroups = __arraycount(mesongxbb_aobus_groups),
517 1.1 jmcneill .gpios = mesongxbb_aobus_gpios,
518 1.1 jmcneill .ngpios = __arraycount(mesongxbb_aobus_gpios),
519 1.1 jmcneill };
520