]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/arm/amlogic/aml8726/aml8726_pinctrl.h
MFV r333789: libpcap 1.9.0 (pre-release)
[FreeBSD/FreeBSD.git] / sys / arm / amlogic / aml8726 / aml8726_pinctrl.h
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 */