xref: /NextBSD/sys/arm/amlogic/aml8726/aml8726_pinctrl.h (revision 287e3b14e9552995def1802ec9c5034f4adf28ec)
1 /*-
2  * Copyright 2015 John Wehle <john@feith.com>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  *
26  * $FreeBSD$
27  */
28 
29 /*
30  * In addition to supplying entries for pins which need to be configured
31  * by the operating system it's also necessary to supply entries for pins
32  * which may have been configured by the firmware for a different purpose.
33  */
34 
35 #ifndef	_ARM_AMLOGIC_AML8726_PINCTRL_H
36 #define	_ARM_AMLOGIC_AML8726_PINCTRL_H
37 
38 enum aml8726_pinctrl_pull_mode {
39 	aml8726_unknown_pm,
40 	aml8726_disable_pm,
41 	aml8726_enable_pm,
42 	aml8726_enable_down_pm,
43 	aml8726_enable_up_pm
44 };
45 
46 struct aml8726_pinctrl_pkg_pin {
47 	const char *pkg_name;
48 	boolean_t aobus;
49 	uint32_t pull_addr;
50 	uint32_t pull_bits;
51 };
52 
53 struct aml8726_pinctrl_pin {
54 	const char *name;
55 	const char *pkg_name;
56 	uint32_t mux_addr;
57 	uint32_t mux_bits;
58 };
59 
60 struct aml8726_pinctrl_function {
61 	const char *name;
62 	struct aml8726_pinctrl_pin *pins;
63 };
64 
65 /*
66  * aml8726-m3
67  *
68  *                 start     size
69  * cbus mux        0x202c    36
70  * cbus pu_pd      0x203a    24
71  * cbus pull_en    0x203a    24
72  * aobus mux       0x0005    4
73  * aobus pu_pd     0x000b    4
74  * aobus pull_en   0x000b    4
75  */
76 
77 static struct aml8726_pinctrl_pkg_pin aml8726_m3_pkg_pin[] = {
78 	{ "card_0", false, 0, 0x00000000 },
79 	{ "card_1", false, 0, 0x00000000 },
80 	{ "card_2", false, 0, 0x00000000 },
81 	{ "card_3", false, 0, 0x00000000 },
82 	{ "card_4", false, 0, 0x00000000 },
83 	{ "card_5", false, 0, 0x00000000 },
84 	{ "card_6", false, 0, 0x00000000 },
85 
86 	{ "gpioc_10", false, 0, 0x00000000 },
87 	{ "gpioc_11", false, 0, 0x00000000 },
88 	{ "gpioc_12", false, 0, 0x00000000 },
89 	{ "gpioc_13", false, 0, 0x00000000 },
90 
91 	{ "gpiox_13", false, 0, 0x00000000 },
92 	{ "gpiox_14", false, 0, 0x00000000 },
93 	{ "gpiox_15", false, 0, 0x00000000 },
94 	{ "gpiox_16", false, 0, 0x00000000 },
95 	{ "gpiox_17", false, 0, 0x00000000 },
96 	{ "gpiox_18", false, 0, 0x00000000 },
97 	{ "gpiox_19", false, 0, 0x00000000 },
98 	{ "gpiox_20", false, 0, 0x00000000 },
99 	{ "gpiox_21", false, 0, 0x00000000 },
100 	{ "gpiox_22", false, 0, 0x00000000 },
101 	{ "gpiox_23", false, 0, 0x00000000 },
102 	{ "gpiox_24", false, 0, 0x00000000 },
103 	{ "gpiox_25", false, 0, 0x00000000 },
104 	{ "gpiox_26", false, 0, 0x00000000 },
105 	{ "gpiox_27", false, 0, 0x00000000 },
106 	{ "gpiox_28", false, 0, 0x00000000 },
107 
108 	{ "gpioy_0", false, 0, 0x00000000 },
109 	{ "gpioy_1", false, 0, 0x00000000 },
110 	{ "gpioy_2", false, 0, 0x00000000 },
111 	{ "gpioy_3", false, 0, 0x00000000 },
112 	{ "gpioy_4", false, 0, 0x00000000 },
113 	{ "gpioy_5", false, 0, 0x00000000 },
114 	{ "gpioy_6", false, 0, 0x00000000 },
115 	{ "gpioy_7", false, 0, 0x00000000 },
116 	{ "gpioy_8", false, 0, 0x00000000 },
117 	{ "gpioy_9", false, 0, 0x00000000 },
118 
119 	{ "gpioao_0", true, 0, 0x00000000 },
120 	{ "gpioao_1", true, 0, 0x00000000 },
121 	{ "gpioao_2", true, 0, 0x00000000 },
122 	{ "gpioao_3", true, 0, 0x00000000 },
123 	{ "gpioao_4", true, 0, 0x00000000 },
124 	{ "gpioao_5", true, 0, 0x00000000 },
125 	{ NULL }
126 };
127 
128 static struct aml8726_pinctrl_pin aml8726_m3_gpio[] = {
129 	{ "card_0", "card_0", 0, 0x00000000 },
130 	{ "card_1", "card_1", 0, 0x00000000 },
131 	{ "card_2", "card_2", 0, 0x00000000 },
132 	{ "card_3", "card_3", 0, 0x00000000 },
133 	{ "card_4", "card_4", 0, 0x00000000 },
134 	{ "card_5", "card_5", 0, 0x00000000 },
135 	{ "card_6", "card_6", 0, 0x00000000 },
136 
137 	{ "gpioc_10", "gpioc_10", 0, 0x00000000 },
138 	{ "gpioc_11", "gpioc_11", 0, 0x00000000 },
139 	{ "gpioc_12", "gpioc_12", 0, 0x00000000 },
140 	{ "gpioc_13", "gpioc_13", 0, 0x00000000 },
141 
142 	{ "gpiox_13", "gpiox_13", 0, 0x00000000 },
143 	{ "gpiox_14", "gpiox_14", 0, 0x00000000 },
144 	{ "gpiox_15", "gpiox_15", 0, 0x00000000 },
145 	{ "gpiox_16", "gpiox_16", 0, 0x00000000 },
146 	{ "gpiox_17", "gpiox_17", 0, 0x00000000 },
147 	{ "gpiox_18", "gpiox_18", 0, 0x00000000 },
148 	{ "gpiox_19", "gpiox_19", 0, 0x00000000 },
149 	{ "gpiox_20", "gpiox_20", 0, 0x00000000 },
150 	{ "gpiox_21", "gpiox_21", 0, 0x00000000 },
151 	{ "gpiox_22", "gpiox_22", 0, 0x00000000 },
152 	{ "gpiox_23", "gpiox_23", 0, 0x00000000 },
153 	{ "gpiox_24", "gpiox_24", 0, 0x00000000 },
154 	{ "gpiox_25", "gpiox_25", 0, 0x00000000 },
155 	{ "gpiox_26", "gpiox_26", 0, 0x00000000 },
156 	{ "gpiox_27", "gpiox_27", 0, 0x00000000 },
157 	{ "gpiox_28", "gpiox_28", 0, 0x00000000 },
158 
159 	{ "gpioy_0", "gpioy_0", 0, 0x00000000 },
160 	{ "gpioy_1", "gpioy_1", 0, 0x00000000 },
161 	{ "gpioy_2", "gpioy_2", 0, 0x00000000 },
162 	{ "gpioy_3", "gpioy_3", 0, 0x00000000 },
163 	{ "gpioy_4", "gpioy_4", 0, 0x00000000 },
164 	{ "gpioy_5", "gpioy_5", 0, 0x00000000 },
165 	{ "gpioy_6", "gpioy_6", 0, 0x00000000 },
166 	{ "gpioy_7", "gpioy_7", 0, 0x00000000 },
167 	{ "gpioy_8", "gpioy_8", 0, 0x00000000 },
168 	{ "gpioy_9", "gpioy_9", 0, 0x00000000 },
169 
170 	{ "gpioao_0", "gpioao_0", 0, 0x00000000 },
171 	{ "gpioao_1", "gpioao_1", 0, 0x00000000 },
172 	{ "gpioao_2", "gpioao_2", 0, 0x00000000 },
173 	{ "gpioao_3", "gpioao_3", 0, 0x00000000 },
174 	{ "gpioao_4", "gpioao_4", 0, 0x00000000 },
175 	{ "gpioao_5", "gpioao_5", 0, 0x00000000 },
176 	{ NULL }
177 };
178 
179 static struct aml8726_pinctrl_pin aml8726_m3_ethernet[] = {
180 	{ "clk50_in",  "gpioy_0", 24, 0x00040000 },
181 	{ "clk_out",   "gpioy_0", 24, 0x00020000 },
182 	{ "tx_en",     "gpioy_5", 24, 0x00001000 },
183 	{ "tx_d0",     "gpioy_7", 24, 0x00000400 },
184 	{ "tx_d1",     "gpioy_6", 24, 0x00000800 },
185 	{ "crs_dv",    "gpioy_2", 24, 0x00008000 },
186 	{ "rx_err",    "gpioy_1", 24, 0x00010000 },
187 	{ "rx_d0",     "gpioy_4", 24, 0x00002000 },
188 	{ "rx_d1",     "gpioy_3", 24, 0x00004000 },
189 	{ "mdc",       "gpioy_8", 24, 0x00000200 },
190 	{ "mdio",      "gpioy_9", 24, 0x00000100 },
191 	{ NULL }
192 };
193 
194 static struct aml8726_pinctrl_pin aml8726_m3_hdmi[] = {
195 	{ "cec",     "gpioc_13", 4, 0x02000000 },
196 	{ "hpd",     "gpioc_10", 4, 0x00400000 },
197 	{ "scl",     "gpioc_12", 4, 0x01000000 },
198 	{ "sda",     "gpioc_11", 4, 0x00800000 },
199 	{ NULL }
200 };
201 
202 static struct aml8726_pinctrl_pin aml8726_m3_i2c_a[] = {
203 	{ "scl",     "gpiox_26", 20, 0x04000000 },
204 	{ "sda",     "gpiox_25", 20, 0x08000000 },
205 	{ NULL }
206 };
207 
208 static struct aml8726_pinctrl_pin aml8726_m3_i2c_b[] = {
209 	{ "scl",     "gpiox_28", 20, 0x40000000 },
210 	{ "sda",     "gpiox_27", 20, 0x80000000 },
211 	{ NULL }
212 };
213 
214 static struct aml8726_pinctrl_pin aml8726_m3_sdio_b[] = {
215 	{ "clk",     "card_4", 8, 0x00000800 },
216 	{ "cmd",     "card_5", 8, 0x00000400 },
217 	{ "d0",      "card_0", 8, 0x00008000 },
218 	{ "d1",      "card_1", 8, 0x00004000 },
219 	{ "d2",      "card_2", 8, 0x00002000 },
220 	{ "d3",      "card_3", 8, 0x00001000 },
221 	{ NULL }
222 };
223 
224 static struct aml8726_pinctrl_pin aml8726_m3_sdxc_b[] = {
225 	{ "clk",     "card_4", 8, 0x00000020 },
226 	{ "cmd",     "card_5", 8, 0x00000010 },
227 	{ "d0",      "card_0", 8, 0x00000080 },
228 	{ "d1",      "card_1", 8, 0x00000040 },
229 	{ "d2",      "card_2", 8, 0x00000040 },
230 	{ "d3",      "card_3", 8, 0x00000040 },
231 	{ NULL }
232 };
233 
234 static struct aml8726_pinctrl_pin aml8726_m3_uart_a[] = {
235 	{ "tx",      "gpiox_13", 16, 0x00002000 },
236 	{ "rx",      "gpiox_14", 16, 0x00001000 },
237 	{ "cts",     "gpiox_15", 16, 0x00000800 },
238 	{ "rts",     "gpiox_16", 16, 0x00000400 },
239 	{ NULL }
240 };
241 
242 static struct aml8726_pinctrl_pin aml8726_m3_uart_b[] = {
243 	{ "tx",      "gpiox_17", 16, 0x00000200 },
244 	{ "rx",      "gpiox_18", 16, 0x00000100 },
245 	{ "cts",     "gpiox_19", 16, 0x00000080 },
246 	{ "rts",     "gpiox_20", 16, 0x00000040 },
247 	{ NULL }
248 };
249 
250 static struct aml8726_pinctrl_pin aml8726_m3_uart_c[] = {
251 	{ "tx",      "gpiox_21", 16, 0x00000008 },
252 	{ "rx",      "gpiox_22", 16, 0x00000004 },
253 	{ "cts",     "gpiox_23", 16, 0x00000002 },
254 	{ "rts",     "gpiox_24", 16, 0x00000001 },
255 	{ NULL }
256 };
257 
258 static struct aml8726_pinctrl_pin aml8726_m3_i2c_ao[] = {
259 	{ "scl",     "gpioao_4", 0, 0x00000400 },
260 	{ "sda",     "gpioao_5", 0, 0x00000200 },
261 	{ NULL }
262 };
263 
264 static struct aml8726_pinctrl_pin aml8726_m3_uart_ao[] = {
265 	{ "tx",      "gpioao_0", 0, 0x00001000 },
266 	{ "rx",      "gpioao_1", 0, 0x00000800 },
267 	{ "cts",     "gpioao_2", 0, 0x00000400 },
268 	{ "rts",     "gpioao_3", 0, 0x00000200 },
269 	{ NULL }
270 };
271 
272 struct aml8726_pinctrl_function aml8726_m3_pinctrl[] = {
273 	{ "gpio", aml8726_m3_gpio },
274 	{ "ethernet", aml8726_m3_ethernet },
275 	{ "hdmi", aml8726_m3_hdmi },
276 	{ "i2c-a", aml8726_m3_i2c_a },
277 	{ "i2c-b", aml8726_m3_i2c_b },
278 	{ "sdio-b", aml8726_m3_sdio_b },
279 	{ "sdxc-b", aml8726_m3_sdxc_b },
280 	{ "uart-a", aml8726_m3_uart_a },
281 	{ "uart-b", aml8726_m3_uart_b },
282 	{ "uart-c", aml8726_m3_uart_c },
283 	{ "i2c-ao", aml8726_m3_i2c_ao },
284 	{ "uart-ao", aml8726_m3_uart_ao },
285 	{ NULL }
286 };
287 
288 /*
289  * aml8726-m6
290  *
291  *                 start     size
292  * cbus mux        0x202c    40
293  * cbus pu_pd      0x203a    24
294  * cbus pull_en    0x203a    24
295  * aobus mux       0x0005    4
296  * aobus pu_pd     0x000b    4
297  * aobus pull_en   0x000b    4
298  *
299  * For simplicity we don't support setting pull for gpioe and gpioz.
300  */
301 
302 static struct aml8726_pinctrl_pkg_pin aml8726_m6_pkg_pin[] = {
303 	{ "card_0", false, 12, 0x00100000 },
304 	{ "card_1", false, 12, 0x00200000 },
305 	{ "card_2", false, 12, 0x00400000 },
306 	{ "card_3", false, 12, 0x00800000 },
307 	{ "card_4", false, 12, 0x01000000 },
308 	{ "card_5", false, 12, 0x02000000 },
309 	{ "card_6", false, 12, 0x04000000 },
310 
311 	{ "gpioc_10", false, 8, 0x00000400 },
312 	{ "gpioc_11", false, 8, 0x00000800 },
313 	{ "gpioc_12", false, 8, 0x00001000 },
314 	{ "gpioc_13", false, 8, 0x00002000 },
315 
316 	{ "gpiox_13", false, 16, 0x00002000 },
317 	{ "gpiox_14", false, 16, 0x00004000 },
318 	{ "gpiox_15", false, 16, 0x00008000 },
319 	{ "gpiox_16", false, 16, 0x00010000 },
320 	{ "gpiox_17", false, 16, 0x00020000 },
321 	{ "gpiox_18", false, 16, 0x00040000 },
322 	{ "gpiox_19", false, 16, 0x00080000 },
323 	{ "gpiox_20", false, 16, 0x00100000 },
324 	{ "gpiox_21", false, 16, 0x00200000 },
325 	{ "gpiox_22", false, 16, 0x00400000 },
326 	{ "gpiox_23", false, 16, 0x00800000 },
327 	{ "gpiox_24", false, 16, 0x01000000 },
328 	{ "gpiox_25", false, 16, 0x02000000 },
329 	{ "gpiox_26", false, 16, 0x04000000 },
330 	{ "gpiox_27", false, 16, 0x08000000 },
331 	{ "gpiox_28", false, 16, 0x10000000 },
332 
333 	{ "gpioy_0",  false, 20, 0x00000010 },
334 	{ "gpioy_1",  false, 20, 0x00000020 },
335 	{ "gpioy_2",  false, 20, 0x00000040 },
336 	{ "gpioy_3",  false, 20, 0x00000080 },
337 	{ "gpioy_4",  false, 20, 0x00000100 },
338 	{ "gpioy_5",  false, 20, 0x00000200 },
339 	{ "gpioy_6",  false, 20, 0x00000400 },
340 	{ "gpioy_7",  false, 20, 0x00000800 },
341 	{ "gpioy_8",  false, 20, 0x00001000 },
342 	{ "gpioy_9",  false, 20, 0x00002000 },
343 	{ "gpioy_10", false, 20, 0x00004000 },
344 	{ "gpioy_11", false, 20, 0x00008000 },
345 	{ "gpioy_12", false, 20, 0x00010000 },
346 	{ "gpioy_13", false, 20, 0x00020000 },
347 	{ "gpioy_14", false, 20, 0x00040000 },
348 
349 	{ "gpioao_0", true, 0, 0x00000001 },
350 	{ "gpioao_1", true, 0, 0x00000002 },
351 	{ "gpioao_2", true, 0, 0x00000004 },
352 	{ "gpioao_3", true, 0, 0x00000008 },
353 	{ "gpioao_4", true, 0, 0x00000010 },
354 	{ "gpioao_5", true, 0, 0x00000020 },
355 	{ NULL }
356 };
357 
358 static struct aml8726_pinctrl_pin aml8726_m6_gpio[] = {
359 	{ "card_0", "card_0", 0, 0x00000000 },
360 	{ "card_1", "card_1", 0, 0x00000000 },
361 	{ "card_2", "card_2", 0, 0x00000000 },
362 	{ "card_3", "card_3", 0, 0x00000000 },
363 	{ "card_4", "card_4", 0, 0x00000000 },
364 	{ "card_5", "card_5", 0, 0x00000000 },
365 	{ "card_6", "card_6", 0, 0x00000000 },
366 
367 	{ "gpioc_10", "gpioc_10", 0, 0x00000000 },
368 	{ "gpioc_11", "gpioc_11", 0, 0x00000000 },
369 	{ "gpioc_12", "gpioc_12", 0, 0x00000000 },
370 	{ "gpioc_13", "gpioc_13", 0, 0x00000000 },
371 
372 	{ "gpiox_13", "gpiox_13", 0, 0x00000000 },
373 	{ "gpiox_14", "gpiox_14", 0, 0x00000000 },
374 	{ "gpiox_15", "gpiox_15", 0, 0x00000000 },
375 	{ "gpiox_16", "gpiox_16", 0, 0x00000000 },
376 	{ "gpiox_17", "gpiox_17", 0, 0x00000000 },
377 	{ "gpiox_18", "gpiox_18", 0, 0x00000000 },
378 	{ "gpiox_19", "gpiox_19", 0, 0x00000000 },
379 	{ "gpiox_20", "gpiox_20", 0, 0x00000000 },
380 	{ "gpiox_21", "gpiox_21", 0, 0x00000000 },
381 	{ "gpiox_22", "gpiox_22", 0, 0x00000000 },
382 	{ "gpiox_23", "gpiox_23", 0, 0x00000000 },
383 	{ "gpiox_24", "gpiox_24", 0, 0x00000000 },
384 	{ "gpiox_25", "gpiox_25", 0, 0x00000000 },
385 	{ "gpiox_26", "gpiox_26", 0, 0x00000000 },
386 	{ "gpiox_27", "gpiox_27", 0, 0x00000000 },
387 	{ "gpiox_28", "gpiox_28", 0, 0x00000000 },
388 
389 	{ "gpioy_0", "gpioy_0", 0, 0x00000000 },
390 	{ "gpioy_1", "gpioy_1", 0, 0x00000000 },
391 	{ "gpioy_2", "gpioy_2", 0, 0x00000000 },
392 	{ "gpioy_3", "gpioy_3", 0, 0x00000000 },
393 	{ "gpioy_4", "gpioy_4", 0, 0x00000000 },
394 	{ "gpioy_5", "gpioy_5", 0, 0x00000000 },
395 	{ "gpioy_6", "gpioy_6", 0, 0x00000000 },
396 	{ "gpioy_7", "gpioy_7", 0, 0x00000000 },
397 	{ "gpioy_8", "gpioy_8", 0, 0x00000000 },
398 	{ "gpioy_9", "gpioy_9", 0, 0x00000000 },
399 	{ "gpioy_10", "gpioy_10", 0, 0x00000000 },
400 	{ "gpioy_11", "gpioy_11", 0, 0x00000000 },
401 	{ "gpioy_12", "gpioy_12", 0, 0x00000000 },
402 	{ "gpioy_13", "gpioy_13", 0, 0x00000000 },
403 	{ "gpioy_14", "gpioy_14", 0, 0x00000000 },
404 
405 	{ "gpioao_0", "gpioao_0", 0, 0x00000000 },
406 	{ "gpioao_1", "gpioao_1", 0, 0x00000000 },
407 	{ "gpioao_2", "gpioao_2", 0, 0x00000000 },
408 	{ "gpioao_3", "gpioao_3", 0, 0x00000000 },
409 	{ "gpioao_4", "gpioao_4", 0, 0x00000000 },
410 	{ "gpioao_5", "gpioao_5", 0, 0x00000000 },
411 	{ NULL }
412 };
413 
414 static struct aml8726_pinctrl_pin aml8726_m6_ethernet[] = {
415 	{ "ref_clk_in",  "gpioy_0",  24, 0x80000000 },
416 	{ "ref_clk_out", "gpioy_0",  24, 0x40000000 },
417 	{ "tx_clk",      "gpioy_1",  24, 0x00040000 },
418 	{ "tx_en",       "gpioy_2",  24, 0x00020000 },
419 	{ "tx_d0",       "gpioy_6",  24, 0x00002000 },
420 	{ "tx_d1",       "gpioy_5",  24, 0x00004000 },
421 	{ "tx_d2",       "gpioy_4",  24, 0x00008000 },
422 	{ "tx_d3",       "gpioy_3",  24, 0x00010000 },
423 	{ "rx_clk",      "gpioy_7",  24, 0x00001000 },
424 	{ "rx_dv",       "gpioy_8",  24, 0x00000800 },
425 	{ "rx_d0",       "gpioy_12", 24, 0x00000080 },
426 	{ "rx_d1",       "gpioy_11", 24, 0x00000100 },
427 	{ "rx_d2",       "gpioy_10", 24, 0x00000200 },
428 	{ "rx_d3",       "gpioy_9",  24, 0x00000400 },
429 	{ "mdc",         "gpioy_14", 24, 0x00000020 },
430 	{ "mdio",        "gpioy_13", 24, 0x00000040 },
431 	{ NULL }
432 };
433 
434 static struct aml8726_pinctrl_pin aml8726_m6_hdmi[] = {
435 	{ "cec",     "gpioc_13", 4, 0x02000000 },
436 	{ "hpd",     "gpioc_10", 4, 0x00400000 },
437 	{ "scl",     "gpioc_12", 4, 0x01000000 },
438 	{ "sda",     "gpioc_11", 4, 0x00800000 },
439 	{ NULL }
440 };
441 
442 static struct aml8726_pinctrl_pin aml8726_m6_i2c_a[] = {
443 	{ "scl",     "gpiox_26", 20, 0x04000000 },
444 	{ "sda",     "gpiox_25", 20, 0x08000000 },
445 	{ NULL }
446 };
447 
448 static struct aml8726_pinctrl_pin aml8726_m6_i2c_b[] = {
449 	{ "scl",     "gpiox_28", 20, 0x40000000 },
450 	{ "sda",     "gpiox_27", 20, 0x80000000 },
451 	{ NULL }
452 };
453 
454 static struct aml8726_pinctrl_pin aml8726_m6_sdio_b[] = {
455 	{ "clk",     "card_4", 8, 0x00000800 },
456 	{ "cmd",     "card_5", 8, 0x00000400 },
457 	{ "d0",      "card_0", 8, 0x00008000 },
458 	{ "d1",      "card_1", 8, 0x00004000 },
459 	{ "d2",      "card_2", 8, 0x00002000 },
460 	{ "d3",      "card_3", 8, 0x00001000 },
461 	{ NULL }
462 };
463 
464 static struct aml8726_pinctrl_pin aml8726_m6_sdxc_b[] = {
465 	{ "clk",     "card_4", 8, 0x00000020 },
466 	{ "cmd",     "card_5", 8, 0x00000010 },
467 	{ "d0",      "card_0", 8, 0x00000080 },
468 	{ "d1",      "card_1", 8, 0x00000040 },
469 	{ "d2",      "card_2", 8, 0x00000040 },
470 	{ "d3",      "card_3", 8, 0x00000040 },
471 	{ NULL }
472 };
473 
474 static struct aml8726_pinctrl_pin aml8726_m6_uart_a[] = {
475 	{ "tx",      "gpiox_13", 16, 0x00002000 },
476 	{ "rx",      "gpiox_14", 16, 0x00001000 },
477 	{ "cts",     "gpiox_15", 16, 0x00000800 },
478 	{ "rts",     "gpiox_16", 16, 0x00000400 },
479 	{ NULL }
480 };
481 
482 static struct aml8726_pinctrl_pin aml8726_m6_uart_b[] = {
483 	{ "tx",      "gpiox_17", 16, 0x00000200 },
484 	{ "rx",      "gpiox_18", 16, 0x00000100 },
485 	{ "cts",     "gpiox_19", 16, 0x00000080 },
486 	{ "rts",     "gpiox_20", 16, 0x00000040 },
487 	{ NULL }
488 };
489 
490 static struct aml8726_pinctrl_pin aml8726_m6_uart_c[] = {
491 	{ "tx",      "gpiox_21", 16, 0x00000008 },
492 	{ "rx",      "gpiox_22", 16, 0x00000004 },
493 	{ "cts",     "gpiox_23", 16, 0x00000002 },
494 	{ "rts",     "gpiox_24", 16, 0x00000001 },
495 	{ NULL }
496 };
497 
498 static struct aml8726_pinctrl_pin aml8726_m6_i2c_ao[] = {
499 	{ "scl",     "gpioao_4", 0, 0x00000400 },
500 	{ "sda",     "gpioao_5", 0, 0x00000200 },
501 	{ NULL }
502 };
503 
504 static struct aml8726_pinctrl_pin aml8726_m6_uart_ao[] = {
505 	{ "tx",      "gpioao_0", 0, 0x00001000 },
506 	{ "rx",      "gpioao_1", 0, 0x00000800 },
507 	{ "cts",     "gpioao_2", 0, 0x00000400 },
508 	{ "rts",     "gpioao_3", 0, 0x00000200 },
509 	{ NULL }
510 };
511 
512 struct aml8726_pinctrl_function aml8726_m6_pinctrl[] = {
513 	{ "gpio", aml8726_m6_gpio },
514 	{ "ethernet", aml8726_m6_ethernet },
515 	{ "hdmi", aml8726_m6_hdmi },
516 	{ "i2c-a", aml8726_m6_i2c_a },
517 	{ "i2c-b", aml8726_m6_i2c_b },
518 	{ "sdio-b", aml8726_m6_sdio_b },
519 	{ "sdxc-b", aml8726_m6_sdxc_b },
520 	{ "uart-a", aml8726_m6_uart_a },
521 	{ "uart-b", aml8726_m6_uart_b },
522 	{ "uart-c", aml8726_m6_uart_c },
523 	{ "i2c-ao", aml8726_m6_i2c_ao },
524 	{ "uart-ao", aml8726_m6_uart_ao },
525 	{ NULL }
526 };
527 
528 
529 /*
530  * aml8726-m8
531  *
532  *                 start     size
533  * cbus mux        0x202c    40
534  * cbus pu_pd      0x203a    20
535  * cbus pull_en    0x2048    20
536  * aobus mux       0x0005    4
537  * aobus pu_pd     0x000b    4
538  * aobus pull_en   0x000b    4
539  */
540 
541 static struct aml8726_pinctrl_pkg_pin aml8726_m8_pkg_pin[] = {
542 	{ "boot_0",  false, 8, 0x00000001 },
543 	{ "boot_1",  false, 8, 0x00000002 },
544 	{ "boot_2",  false, 8, 0x00000004 },
545 	{ "boot_3",  false, 8, 0x00000008 },
546 	{ "boot_4",  false, 8, 0x00000010 },
547 	{ "boot_5",  false, 8, 0x00000020 },
548 	{ "boot_6",  false, 8, 0x00000040 },
549 	{ "boot_7",  false, 8, 0x00000080 },
550 
551 	{ "boot_16", false, 8, 0x00010000 },
552 	{ "boot_17", false, 8, 0x00020000 },
553 
554 	{ "card_0", false, 8, 0x00100000 },
555 	{ "card_1", false, 8, 0x00200000 },
556 	{ "card_2", false, 8, 0x00400000 },
557 	{ "card_3", false, 8, 0x00800000 },
558 	{ "card_4", false, 8, 0x01000000 },
559 	{ "card_5", false, 8, 0x02000000 },
560 	{ "card_6", false, 8, 0x04000000 },
561 
562 	{ "gpioh_0", false, 4, 0x00001000 },
563 	{ "gpioh_1", false, 4, 0x00002000 },
564 	{ "gpioh_2", false, 4, 0x00004000 },
565 	{ "gpioh_3", false, 4, 0x00008000 },
566 
567 	{ "gpiox_12", false, 16, 0x00001000 },
568 	{ "gpiox_13", false, 16, 0x00002000 },
569 	{ "gpiox_14", false, 16, 0x00004000 },
570 	{ "gpiox_15", false, 16, 0x00008000 },
571 	{ "gpiox_16", false, 16, 0x00010000 },
572 	{ "gpiox_17", false, 16, 0x00020000 },
573 	{ "gpiox_18", false, 16, 0x00040000 },
574 	{ "gpiox_19", false, 16, 0x00080000 },
575 
576 	{ "gpioy_0", false, 12, 0x00000001 },
577 	{ "gpioy_1", false, 12, 0x00000002 },
578 	{ "gpioy_2", false, 12, 0x00000004 },
579 	{ "gpioy_3", false, 12, 0x00000008 },
580 
581 	{ "gpioz_2", false, 4,  0x00000004 },
582 	{ "gpioz_3", false, 4,  0x00000008 },
583 	{ "gpioz_4", false, 4,  0x00000010 },
584 	{ "gpioz_5", false, 4,  0x00000020 },
585 	{ "gpioz_6", false, 4,  0x00000040 },
586 	{ "gpioz_7", false, 4,  0x00000080 },
587 	{ "gpioz_8", false, 4,  0x00000100 },
588 	{ "gpioz_9", false, 4,  0x00000200 },
589 	{ "gpioz_10", false, 4, 0x00000400 },
590 	{ "gpioz_11", false, 4, 0x00000800 },
591 	{ "gpioz_12", false, 4, 0x00001000 },
592 	{ "gpioz_13", false, 4, 0x00002000 },
593 
594 	{ "gpioao_0", true, 0, 0x00000001 },
595 	{ "gpioao_1", true, 0, 0x00000002 },
596 	{ "gpioao_2", true, 0, 0x00000004 },
597 	{ "gpioao_3", true, 0, 0x00000008 },
598 	{ "gpioao_4", true, 0, 0x00000010 },
599 	{ "gpioao_5", true, 0, 0x00000020 },
600 	{ NULL }
601 };
602 
603 static struct aml8726_pinctrl_pin aml8726_m8_gpio[] = {
604 	{ "boot_0",  "boot_0", 0, 0x00000000 },
605 	{ "boot_1",  "boot_1", 0, 0x00000000 },
606 	{ "boot_2",  "boot_2", 0, 0x00000000 },
607 	{ "boot_3",  "boot_3", 0, 0x00000000 },
608 	{ "boot_4",  "boot_4", 0, 0x00000000 },
609 	{ "boot_5",  "boot_5", 0, 0x00000000 },
610 	{ "boot_6",  "boot_6", 0, 0x00000000 },
611 	{ "boot_7",  "boot_7", 0, 0x00000000 },
612 
613 	{ "boot_16", "boot_16", 0, 0x00000000 },
614 	{ "boot_17", "boot_17", 0, 0x00000000 },
615 
616 	{ "card_0", "card_0", 0, 0x00000000 },
617 	{ "card_1", "card_1", 0, 0x00000000 },
618 	{ "card_2", "card_2", 0, 0x00000000 },
619 	{ "card_3", "card_3", 0, 0x00000000 },
620 	{ "card_4", "card_4", 0, 0x00000000 },
621 	{ "card_5", "card_5", 0, 0x00000000 },
622 	{ "card_6", "card_6", 0, 0x00000000 },
623 
624 	{ "gpioh_0", "gpioh_0", 0, 0x00000000 },
625 	{ "gpioh_1", "gpioh_1", 0, 0x00000000 },
626 	{ "gpioh_2", "gpioh_2", 0, 0x00000000 },
627 	{ "gpioh_3", "gpioh_3", 0, 0x00000000 },
628 
629 	{ "gpiox_12", "gpiox_12", 0, 0x00000000 },
630 	{ "gpiox_13", "gpiox_13", 0, 0x00000000 },
631 	{ "gpiox_14", "gpiox_14", 0, 0x00000000 },
632 	{ "gpiox_15", "gpiox_15", 0, 0x00000000 },
633 	{ "gpiox_16", "gpiox_16", 0, 0x00000000 },
634 	{ "gpiox_17", "gpiox_17", 0, 0x00000000 },
635 	{ "gpiox_18", "gpiox_18", 0, 0x00000000 },
636 	{ "gpiox_19", "gpiox_19", 0, 0x00000000 },
637 
638 	{ "gpioy_0", "gpioy_0", 0, 0x00000000 },
639 	{ "gpioy_1", "gpioy_1", 0, 0x00000000 },
640 	{ "gpioy_2", "gpioy_2", 0, 0x00000000 },
641 	{ "gpioy_3", "gpioy_3", 0, 0x00000000 },
642 
643 	{ "gpioz_2", "gpioz_2", 0, 0x00000000 },
644 	{ "gpioz_3", "gpioz_3", 0, 0x00000000 },
645 	{ "gpioz_4", "gpioz_4", 0, 0x00000000 },
646 	{ "gpioz_5", "gpioz_5", 0, 0x00000000 },
647 	{ "gpioz_6", "gpioz_6", 0, 0x00000000 },
648 	{ "gpioz_7", "gpioz_7", 0, 0x00000000 },
649 	{ "gpioz_8", "gpioz_8", 0, 0x00000000 },
650 	{ "gpioz_9", "gpioz_9", 0, 0x00000000 },
651 	{ "gpioz_10", "gpioz_10", 0, 0x00000000 },
652 	{ "gpioz_11", "gpioz_11", 0, 0x00000000 },
653 	{ "gpioz_12", "gpioz_12", 0, 0x00000000 },
654 	{ "gpioz_13", "gpioz_13", 0, 0x00000000 },
655 
656 	{ "gpioao_0", "gpioao_0", 0, 0x00000000 },
657 	{ "gpioao_1", "gpioao_1", 0, 0x00000000 },
658 	{ "gpioao_2", "gpioao_2", 0, 0x00000000 },
659 	{ "gpioao_3", "gpioao_3", 0, 0x00000000 },
660 	{ "gpioao_4", "gpioao_4", 0, 0x00000000 },
661 	{ "gpioao_5", "gpioao_5", 0, 0x00000000 },
662 	{ NULL }
663 };
664 
665 static struct aml8726_pinctrl_pin aml8726_m8_ethernet[] = {
666 	{ "tx_clk",     "gpioz_4",  24, 0x00008000 },
667 	{ "tx_en",      "gpioz_5",  24, 0x00004000 },
668 	{ "tx_d0",      "gpioz_7",  24, 0x00001000 },
669 	{ "tx_d1",      "gpioz_6",  24, 0x00002000 },
670 	{ "rx_clk_in",  "gpioz_8",  24, 0x00000400 },
671 	{ "rx_clk_out", "gpioz_8",  24, 0x00000200 },
672 	{ "rx_dv",      "gpioz_9",  24, 0x00000800 },
673 	{ "rx_d0",      "gpioz_11", 24, 0x00000080 },
674 	{ "rx_d1",      "gpioz_10", 24, 0x00000100 },
675 	{ "mdc",        "gpioz_13", 24, 0x00000020 },
676 	{ "mdio",       "gpioz_12", 24, 0x00000040 },
677 	{ NULL }
678 };
679 
680 static struct aml8726_pinctrl_pin aml8726_m8_hdmi[] = {
681 	{ "cec",     "gpioh_3", 4, 0x00800000 },
682 	{ "hpd",     "gpioh_0", 4, 0x04000000 },
683 	{ "scl",     "gpioh_2", 4, 0x01000000 },
684 	{ "sda",     "gpioh_1", 4, 0x02000000 },
685 	{ NULL }
686 };
687 
688 static struct aml8726_pinctrl_pin aml8726_m8_i2c_a[] = {
689 	{ "scl",     "gpioz_12", 20, 0x00000040 },
690 	{ "sda",     "gpioz_11", 20, 0x00000080 },
691 	{ NULL }
692 };
693 
694 static struct aml8726_pinctrl_pin aml8726_m8_i2c_b[] = {
695 	{ "scl",     "gpioz_3", 20, 0x04000000 },
696 	{ "sda",     "gpioz_2", 20, 0x08000000 },
697 	{ NULL }
698 };
699 
700 static struct aml8726_pinctrl_pin aml8726_m8_sdio_b[] = {
701 	{ "clk",     "card_2", 8, 0x00000800 },
702 	{ "cmd",     "card_3", 8, 0x00000400 },
703 	{ "d0",      "card_1", 8, 0x00008000 },
704 	{ "d1",      "card_0", 8, 0x00004000 },
705 	{ "d2",      "card_5", 8, 0x00002000 },
706 	{ "d3",      "card_4", 8, 0x00001000 },
707 	{ NULL }
708 };
709 
710 static struct aml8726_pinctrl_pin aml8726_m8_sdxc_b[] = {
711 	{ "clk",     "card_2", 8, 0x00000020 },
712 	{ "cmd",     "card_3", 8, 0x00000010 },
713 	{ "d0",      "card_1", 8, 0x00000080 },
714 	{ "d1",      "card_0", 8, 0x00000040 },
715 	{ "d2",      "card_5", 8, 0x00000040 },
716 	{ "d3",      "card_4", 8, 0x00000040 },
717 	{ NULL }
718 };
719 
720 static struct aml8726_pinctrl_pin aml8726_m8_sdio_c[] = {
721 	{ "clk",     "boot_17", 24, 0x01000000 },
722 	{ "cmd",     "boot_16", 24, 0x02000000 },
723 	{ "d0",      "boot_0",  24, 0x20000000 },
724 	{ "d1",      "boot_1",  24, 0x10000000 },
725 	{ "d2",      "boot_2",  24, 0x08000000 },
726 	{ "d3",      "boot_3",  24, 0x04000000 },
727 	{ NULL }
728 };
729 
730 static struct aml8726_pinctrl_pin aml8726_m8_sdxc_c[] = {
731 	{ "clk",     "boot_17", 16, 0x04000000 },
732 	{ "cmd",     "boot_16", 16, 0x08000000 },
733 	{ "d0",      "boot_0",  16, 0x40000000 },
734 	{ "d1",      "boot_1",  16, 0x20000000 },
735 	{ "d2",      "boot_2",  16, 0x20000000 },
736 	{ "d3",      "boot_3",  16, 0x20000000 },
737 	{ "d4",      "boot_4",  16, 0x10000000 },
738 	{ "d5",      "boot_5",  16, 0x10000000 },
739 	{ "d6",      "boot_6",  16, 0x10000000 },
740 	{ "d7",      "boot_7",  16, 0x10000000 },
741 	{ NULL }
742 };
743 
744 static struct aml8726_pinctrl_pin aml8726_m8_uart_a[] = {
745 	{ "tx",      "gpiox_4", 16, 0x00020000 },
746 	{ "rx",      "gpiox_5", 16, 0x00010000 },
747 	{ "cts",     "gpiox_6", 16, 0x00008000 },
748 	{ "rts",     "gpiox_7", 16, 0x00004000 },
749 	{ NULL }
750 };
751 
752 static struct aml8726_pinctrl_pin aml8726_m8_uart_b[] = {
753 	{ "tx",      "gpiox_16", 16, 0x00000200 },
754 	{ "rx",      "gpiox_17", 16, 0x00000100 },
755 	{ "cts",     "gpiox_18", 16, 0x00000080 },
756 	{ "rts",     "gpiox_19", 16, 0x00000040 },
757 	{ NULL }
758 };
759 
760 static struct aml8726_pinctrl_pin aml8726_m8_uart_c[] = {
761 	{ "tx",      "gpioy_0", 4, 0x00080000 },
762 	{ "rx",      "gpioy_1", 4, 0x00040000 },
763 	{ "cts",     "gpioy_2", 4, 0x00020000 },
764 	{ "rts",     "gpioy_3", 4, 0x00010000 },
765 	{ NULL }
766 };
767 
768 static struct aml8726_pinctrl_pin aml8726_m8_i2c_ao[] = {
769 	{ "scl",     "gpioao_4", 0, 0x00000400 },
770 	{ "sda",     "gpioao_5", 0, 0x00000200 },
771 	{ NULL }
772 };
773 
774 static struct aml8726_pinctrl_pin aml8726_m8_uart_ao[] = {
775 	{ "tx",      "gpioao_0", 0, 0x00001000 },
776 	{ "rx",      "gpioao_1", 0, 0x00000800 },
777 	{ "cts",     "gpioao_2", 0, 0x00000400 },
778 	{ "rts",     "gpioao_3", 0, 0x00000200 },
779 	{ NULL }
780 };
781 
782 struct aml8726_pinctrl_function aml8726_m8_pinctrl[] = {
783 	{ "gpio", aml8726_m8_gpio },
784 	{ "ethernet", aml8726_m8_ethernet },
785 	{ "hdmi", aml8726_m8_hdmi },
786 	{ "i2c-a", aml8726_m8_i2c_a },
787 	{ "i2c-b", aml8726_m8_i2c_b },
788 	{ "sdio-b", aml8726_m8_sdio_b },
789 	{ "sdxc-b", aml8726_m8_sdxc_b },
790 	{ "sdio-c", aml8726_m8_sdio_c },
791 	{ "sdxc-c", aml8726_m8_sdxc_c },
792 	{ "uart-a", aml8726_m8_uart_a },
793 	{ "uart-b", aml8726_m8_uart_b },
794 	{ "uart-c", aml8726_m8_uart_c },
795 	{ "i2c-ao", aml8726_m8_i2c_ao },
796 	{ "uart-ao", aml8726_m8_uart_ao },
797 	{ NULL }
798 };
799 
800 
801 /*
802  * aml8726-m8b
803  *
804  *                 start     size
805  * cbus mux        0x202c    40
806  * cbus pu_pd      0x203a    24
807  * cbus pull_en    0x2048    24
808  * aobus mux       0x0005    4
809  * aobus pu_pd     0x000b    4
810  * aobus pull_en   0x000b    4
811  */
812 
813 static struct aml8726_pinctrl_pkg_pin aml8726_m8b_pkg_pin[] = {
814 	{ "boot_0",  false, 8, 0x00000001 },
815 	{ "boot_1",  false, 8, 0x00000002 },
816 	{ "boot_2",  false, 8, 0x00000004 },
817 	{ "boot_3",  false, 8, 0x00000008 },
818 	{ "boot_4",  false, 8, 0x00000010 },
819 	{ "boot_5",  false, 8, 0x00000020 },
820 	{ "boot_6",  false, 8, 0x00000040 },
821 	{ "boot_7",  false, 8, 0x00000080 },
822 	{ "boot_8",  false, 8, 0x00000100 },
823 	{ "boot_9",  false, 8, 0x00000200 },
824 	{ "boot_10", false, 8, 0x00000400 },
825 
826 	{ "card_0", false, 8, 0x00100000 },
827 	{ "card_1", false, 8, 0x00200000 },
828 	{ "card_2", false, 8, 0x00400000 },
829 	{ "card_3", false, 8, 0x00800000 },
830 	{ "card_4", false, 8, 0x01000000 },
831 	{ "card_5", false, 8, 0x02000000 },
832 	{ "card_6", false, 8, 0x04000000 },
833 
834 	{ "dif_0p", false, 20, 0x00000100 },
835 	{ "dif_0n", false, 20, 0x00000200 },
836 	{ "dif_1p", false, 20, 0x00000400 },
837 	{ "dif_1n", false, 20, 0x00000800 },
838 	{ "dif_2p", false, 20, 0x00001000 },
839 	{ "dif_2n", false, 20, 0x00002000 },
840 	{ "dif_3p", false, 20, 0x00004000 },
841 	{ "dif_3n", false, 20, 0x00008000 },
842 	{ "dif_4p", false, 20, 0x00010000 },
843 	{ "dif_4n", false, 20, 0x00020000 },
844 
845 	{ "gpiodv_24", false, 0, 0x01000000 },
846 	{ "gpiodv_25", false, 0, 0x02000000 },
847 	{ "gpiodv_26", false, 0, 0x04000000 },
848 	{ "gpiodv_27", false, 0, 0x08000000 },
849 
850 	{ "gpioh_0", false, 4, 0x00010000 },
851 	{ "gpioh_1", false, 4, 0x00020000 },
852 	{ "gpioh_2", false, 4, 0x00040000 },
853 	{ "gpioh_3", false, 4, 0x00080000 },
854 	{ "gpioh_4", false, 4, 0x00100000 },
855 	{ "gpioh_5", false, 4, 0x00200000 },
856 	{ "gpioh_6", false, 4, 0x00400000 },
857 	{ "gpioh_7", false, 4, 0x00800000 },
858 	{ "gpioh_8", false, 4, 0x01000000 },
859 	{ "gpioh_9", false, 4, 0x02000000 },
860 
861 	{ "gpiox_4", false, 16,  0x00000010 },
862 	{ "gpiox_5", false, 16,  0x00000020 },
863 	{ "gpiox_6", false, 16,  0x00000040 },
864 	{ "gpiox_7", false, 16,  0x00000080 },
865 	{ "gpiox_16", false, 16, 0x00010000 },
866 	{ "gpiox_17", false, 16, 0x00020000 },
867 	{ "gpiox_18", false, 16, 0x00040000 },
868 	{ "gpiox_19", false, 16, 0x00080000 },
869 
870 	{ "gpioao_0", true, 0, 0x00000001 },
871 	{ "gpioao_1", true, 0, 0x00000002 },
872 	{ "gpioao_2", true, 0, 0x00000004 },
873 	{ "gpioao_3", true, 0, 0x00000008 },
874 	{ "gpioao_4", true, 0, 0x00000010 },
875 	{ "gpioao_5", true, 0, 0x00000020 },
876 	{ NULL }
877 };
878 
879 static struct aml8726_pinctrl_pin aml8726_m8b_gpio[] = {
880 	{ "boot_0",  "boot_0",  0, 0x00000000 },
881 	{ "boot_1",  "boot_1",  0, 0x00000000 },
882 	{ "boot_2",  "boot_2",  0, 0x00000000 },
883 	{ "boot_3",  "boot_3",  0, 0x00000000 },
884 	{ "boot_4",  "boot_4",  0, 0x00000000 },
885 	{ "boot_5",  "boot_5",  0, 0x00000000 },
886 	{ "boot_6",  "boot_6",  0, 0x00000000 },
887 	{ "boot_7",  "boot_7",  0, 0x00000000 },
888 	{ "boot_8",  "boot_8",  0, 0x00000000 },
889 	{ "boot_9",  "boot_9",  0, 0x00000000 },
890 	{ "boot_10", "boot_10", 0, 0x00000000 },
891 
892 	{ "card_0", "card_0", 0, 0x00000000 },
893 	{ "card_1", "card_1", 0, 0x00000000 },
894 	{ "card_2", "card_2", 0, 0x00000000 },
895 	{ "card_3", "card_3", 0, 0x00000000 },
896 	{ "card_4", "card_4", 0, 0x00000000 },
897 	{ "card_5", "card_5", 0, 0x00000000 },
898 	{ "card_6", "card_6", 0, 0x00000000 },
899 
900 	{ "dif_0p", "dif_0p", 0, 0x00000000 },
901 	{ "dif_0n", "dif_0n", 0, 0x00000000 },
902 	{ "dif_1p", "dif_1p", 0, 0x00000000 },
903 	{ "dif_1n", "dif_1n", 0, 0x00000000 },
904 	{ "dif_2p", "dif_2p", 0, 0x00000000 },
905 	{ "dif_2n", "dif_2n", 0, 0x00000000 },
906 	{ "dif_3p", "dif_3p", 0, 0x00000000 },
907 	{ "dif_3n", "dif_3n", 0, 0x00000000 },
908 	{ "dif_4p", "dif_4p", 0, 0x00000000 },
909 	{ "dif_4n", "dif_4n", 0, 0x00000000 },
910 
911 	{ "gpiodv_24", "gpiodv_24", 0, 0x00000000 },
912 	{ "gpiodv_25", "gpiodv_25", 0, 0x00000000 },
913 	{ "gpiodv_26", "gpiodv_26", 0, 0x00000000 },
914 	{ "gpiodv_27", "gpiodv_27", 0, 0x00000000 },
915 
916 	{ "gpioh_0", "gpioh_0", 0, 0x00000000 },
917 	{ "gpioh_1", "gpioh_1", 0, 0x00000000 },
918 	{ "gpioh_2", "gpioh_2", 0, 0x00000000 },
919 	{ "gpioh_3", "gpioh_3", 0, 0x00000000 },
920 	{ "gpioh_4", "gpioh_4", 0, 0x00000000 },
921 	{ "gpioh_5", "gpioh_5", 0, 0x00000000 },
922 	{ "gpioh_6", "gpioh_6", 0, 0x00000000 },
923 	{ "gpioh_7", "gpioh_7", 0, 0x00000000 },
924 	{ "gpioh_8", "gpioh_8", 0, 0x00000000 },
925 	{ "gpioh_9", "gpioh_9", 0, 0x00000000 },
926 
927 	{ "gpiox_4", "gpiox_4", 0, 0x00000000 },
928 	{ "gpiox_5", "gpiox_5", 0, 0x00000000 },
929 	{ "gpiox_6", "gpiox_6", 0, 0x00000000 },
930 	{ "gpiox_7", "gpiox_7", 0, 0x00000000 },
931 	{ "gpiox_16", "gpiox_16", 0, 0x00000000 },
932 	{ "gpiox_17", "gpiox_17", 0, 0x00000000 },
933 	{ "gpiox_18", "gpiox_18", 0, 0x00000000 },
934 	{ "gpiox_19", "gpiox_19", 0, 0x00000000 },
935 
936 	{ "gpioao_0", "gpioao_0", 0, 0x00000000 },
937 	{ "gpioao_1", "gpioao_1", 0, 0x00000000 },
938 	{ "gpioao_2", "gpioao_2", 0, 0x00000000 },
939 	{ "gpioao_3", "gpioao_3", 0, 0x00000000 },
940 	{ "gpioao_4", "gpioao_4", 0, 0x00000000 },
941 	{ "gpioao_5", "gpioao_5", 0, 0x00000000 },
942 	{ NULL }
943 };
944 
945 static struct aml8726_pinctrl_pin aml8726_m8b_ethernet[] = {
946 	{ "ref_clk", "dif_3n",   24, 0x00000100 },
947 	{ "tx_clk",  "gpioh_9",  24, 0x00000800 },
948 	{ "tx_en",   "dif_3p",   24, 0x00000040 },
949 	{ "tx_d0",   "gpioh_6",  28, 0x00100000 },
950 	{ "tx_d1",   "gpioh_5",  28, 0x00200000 },
951 	{ "tx_d2",   "gpioh_8",  24, 0x00001000 },
952 	{ "tx_d3",   "gpioh_7",  24, 0x00002000 },
953 	{ "rx_clk",  "dif_1n",   24, 0x00000008 },
954 	{ "rx_dv",   "dif_1p",   24, 0x00000004 },
955 	{ "rx_d0",   "dif_0n",   24, 0x00000002 },
956 	{ "rx_d1",   "dif_0p",   24, 0x00000001 },
957 	{ "rx_d2",   "dif_2n",   28, 0x00800000 },
958 	{ "rx_d3",   "dif_2p",   28, 0x00400000 },
959 	{ "mdc",     "dif_4p",   24, 0x00000200 },
960 	{ "mdio",    "dif_4n",   24, 0x00000400 },
961 	{ NULL }
962 };
963 
964 static struct aml8726_pinctrl_pin aml8726_m8b_hdmi[] = {
965 	{ "cec",     "gpioh_3", 4, 0x00800000 },
966 	{ "hpd",     "gpioh_0", 4, 0x04000000 },
967 	{ "scl",     "gpioh_2", 4, 0x01000000 },
968 	{ "sda",     "gpioh_1", 4, 0x02000000 },
969 	{ NULL }
970 };
971 
972 static struct aml8726_pinctrl_pin aml8726_m8b_i2c_a[] = {
973 	{ "scl",     "gpiodv_25", 36, 0x40000000 },
974 	{ "sda",     "gpiodv_24", 36, 0x80000000 },
975 	{ NULL }
976 };
977 
978 static struct aml8726_pinctrl_pin aml8726_m8b_i2c_b[] = {
979 	{ "scl",     "gpiodv_27", 36, 0x10000000 },
980 	{ "sda",     "gpiodv_26", 36, 0x20000000 },
981 	{ NULL }
982 };
983 
984 static struct aml8726_pinctrl_pin aml8726_m8b_sdio_b[] = {
985 	{ "clk",     "card_2", 8, 0x00000800 },
986 	{ "cmd",     "card_3", 8, 0x00000400 },
987 	{ "d0",      "card_1", 8, 0x00008000 },
988 	{ "d1",      "card_0", 8, 0x00004000 },
989 	{ "d2",      "card_5", 8, 0x00002000 },
990 	{ "d3",      "card_4", 8, 0x00001000 },
991 	{ NULL }
992 };
993 
994 static struct aml8726_pinctrl_pin aml8726_m8b_sdxc_b[] = {
995 	{ "clk",     "card_2", 8, 0x00000020 },
996 	{ "cmd",     "card_3", 8, 0x00000010 },
997 	{ "d0",      "card_1", 8, 0x00000080 },
998 	{ "d1",      "card_0", 8, 0x00000040 },
999 	{ "d2",      "card_5", 8, 0x00000040 },
1000 	{ "d3",      "card_4", 8, 0x00000040 },
1001 	{ NULL }
1002 };
1003 
1004 static struct aml8726_pinctrl_pin aml8726_m8b_sdio_c[] = {
1005 	{ "clk",     "boot_8",  24, 0x80000000 },
1006 	{ "cmd",     "boot_10", 24, 0x40000000 },
1007 	{ "d0",      "boot_0",  24, 0x20000000 },
1008 	{ "d1",      "boot_1",  24, 0x10000000 },
1009 	{ "d2",      "boot_2",  24, 0x08000000 },
1010 	{ "d3",      "boot_3",  24, 0x04000000 },
1011 	{ NULL }
1012 };
1013 
1014 static struct aml8726_pinctrl_pin aml8726_m8b_sdxc_c[] = {
1015 	{ "clk",     "boot_8",  28, 0x00080000 },
1016 	{ "cmd",     "boot_10", 28, 0x00040000 },
1017 	{ "d0",      "boot_0",  16, 0x40000000 },
1018 	{ "d1",      "boot_1",  16, 0x20000000 },
1019 	{ "d2",      "boot_2",  16, 0x20000000 },
1020 	{ "d3",      "boot_3",  16, 0x20000000 },
1021 	{ "d4",      "boot_4",  16, 0x10000000 },
1022 	{ "d5",      "boot_5",  16, 0x10000000 },
1023 	{ "d6",      "boot_6",  16, 0x10000000 },
1024 	{ "d7",      "boot_7",  16, 0x10000000 },
1025 	{ NULL }
1026 };
1027 
1028 static struct aml8726_pinctrl_pin aml8726_m8b_uart_a[] = {
1029 	{ "tx",      "gpiox_4", 16, 0x00020000 },
1030 	{ "rx",      "gpiox_5", 16, 0x00010000 },
1031 	{ "cts",     "gpiox_6", 16, 0x00008000 },
1032 	{ "rts",     "gpiox_7", 16, 0x00004000 },
1033 	{ NULL }
1034 };
1035 
1036 static struct aml8726_pinctrl_pin aml8726_m8b_uart_b[] = {
1037 	{ "tx",      "gpiox_16", 16, 0x00000200 },
1038 	{ "rx",      "gpiox_17", 16, 0x00000100 },
1039 	{ "cts",     "gpiox_18", 16, 0x00000080 },
1040 	{ "rts",     "gpiox_19", 16, 0x00000040 },
1041 	{ NULL }
1042 };
1043 
1044 static struct aml8726_pinctrl_pin aml8726_m8b_uart_c[] = {
1045 	{ "tx",      "gpiodv_24", 24, 0x00800000 },
1046 	{ "rx",      "gpiodv_25", 24, 0x00400000 },
1047 	{ "cts",     "gpiodv_26", 24, 0x00200000 },
1048 	{ "rts",     "gpiodv_27", 24, 0x00100000 },
1049 	{ NULL }
1050 };
1051 
1052 static struct aml8726_pinctrl_pin aml8726_m8b_i2c_ao[] = {
1053 	{ "scl",     "gpioao_4", 0, 0x00000400 },
1054 	{ "sda",     "gpioao_5", 0, 0x00000200 },
1055 	{ NULL }
1056 };
1057 
1058 static struct aml8726_pinctrl_pin aml8726_m8b_uart_ao[] = {
1059 	{ "tx",      "gpioao_0", 0, 0x00001000 },
1060 	{ "rx",      "gpioao_1", 0, 0x00000800 },
1061 	{ "cts",     "gpioao_2", 0, 0x00000400 },
1062 	{ "rts",     "gpioao_3", 0, 0x00000200 },
1063 	{ NULL }
1064 };
1065 
1066 struct aml8726_pinctrl_function aml8726_m8b_pinctrl[] = {
1067 	{ "gpio", aml8726_m8b_gpio },
1068 	{ "ethernet", aml8726_m8b_ethernet },
1069 	{ "hdmi", aml8726_m8b_hdmi },
1070 	{ "i2c-a", aml8726_m8b_i2c_a },
1071 	{ "i2c-b", aml8726_m8b_i2c_b },
1072 	{ "sdio-b", aml8726_m8b_sdio_b },
1073 	{ "sdxc-b", aml8726_m8b_sdxc_b },
1074 	{ "sdio-c", aml8726_m8b_sdio_c },
1075 	{ "sdxc-c", aml8726_m8b_sdxc_c },
1076 	{ "uart-a", aml8726_m8b_uart_a },
1077 	{ "uart-b", aml8726_m8b_uart_b },
1078 	{ "uart-c", aml8726_m8b_uart_c },
1079 	{ "i2c-ao", aml8726_m8b_i2c_ao },
1080 	{ "uart-ao", aml8726_m8b_uart_ao },
1081 	{ NULL }
1082 };
1083 
1084 #endif /* _ARM_AMLOGIC_AML8726_PINCTRL_H */
1085