xref: /OK3568_Linux_fs/kernel/drivers/pinctrl/meson/pinctrl-meson-axg.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Pin controller and GPIO driver for Amlogic Meson AXG SoC.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
5*4882a593Smuzhiyun  * Author: Xingyu Chen <xingyu.chen@amlogic.com>
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * SPDX-License-Identifier: (GPL-2.0+ or MIT)
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include <dt-bindings/gpio/meson-axg-gpio.h>
11*4882a593Smuzhiyun #include "pinctrl-meson.h"
12*4882a593Smuzhiyun #include "pinctrl-meson-axg-pmx.h"
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun static const struct pinctrl_pin_desc meson_axg_periphs_pins[] = {
15*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_0),
16*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_1),
17*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_2),
18*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_3),
19*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_4),
20*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_5),
21*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_6),
22*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_7),
23*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_8),
24*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_9),
25*4882a593Smuzhiyun 	MESON_PIN(GPIOZ_10),
26*4882a593Smuzhiyun 	MESON_PIN(BOOT_0),
27*4882a593Smuzhiyun 	MESON_PIN(BOOT_1),
28*4882a593Smuzhiyun 	MESON_PIN(BOOT_2),
29*4882a593Smuzhiyun 	MESON_PIN(BOOT_3),
30*4882a593Smuzhiyun 	MESON_PIN(BOOT_4),
31*4882a593Smuzhiyun 	MESON_PIN(BOOT_5),
32*4882a593Smuzhiyun 	MESON_PIN(BOOT_6),
33*4882a593Smuzhiyun 	MESON_PIN(BOOT_7),
34*4882a593Smuzhiyun 	MESON_PIN(BOOT_8),
35*4882a593Smuzhiyun 	MESON_PIN(BOOT_9),
36*4882a593Smuzhiyun 	MESON_PIN(BOOT_10),
37*4882a593Smuzhiyun 	MESON_PIN(BOOT_11),
38*4882a593Smuzhiyun 	MESON_PIN(BOOT_12),
39*4882a593Smuzhiyun 	MESON_PIN(BOOT_13),
40*4882a593Smuzhiyun 	MESON_PIN(BOOT_14),
41*4882a593Smuzhiyun 	MESON_PIN(GPIOA_0),
42*4882a593Smuzhiyun 	MESON_PIN(GPIOA_1),
43*4882a593Smuzhiyun 	MESON_PIN(GPIOA_2),
44*4882a593Smuzhiyun 	MESON_PIN(GPIOA_3),
45*4882a593Smuzhiyun 	MESON_PIN(GPIOA_4),
46*4882a593Smuzhiyun 	MESON_PIN(GPIOA_5),
47*4882a593Smuzhiyun 	MESON_PIN(GPIOA_6),
48*4882a593Smuzhiyun 	MESON_PIN(GPIOA_7),
49*4882a593Smuzhiyun 	MESON_PIN(GPIOA_8),
50*4882a593Smuzhiyun 	MESON_PIN(GPIOA_9),
51*4882a593Smuzhiyun 	MESON_PIN(GPIOA_10),
52*4882a593Smuzhiyun 	MESON_PIN(GPIOA_11),
53*4882a593Smuzhiyun 	MESON_PIN(GPIOA_12),
54*4882a593Smuzhiyun 	MESON_PIN(GPIOA_13),
55*4882a593Smuzhiyun 	MESON_PIN(GPIOA_14),
56*4882a593Smuzhiyun 	MESON_PIN(GPIOA_15),
57*4882a593Smuzhiyun 	MESON_PIN(GPIOA_16),
58*4882a593Smuzhiyun 	MESON_PIN(GPIOA_17),
59*4882a593Smuzhiyun 	MESON_PIN(GPIOA_18),
60*4882a593Smuzhiyun 	MESON_PIN(GPIOA_19),
61*4882a593Smuzhiyun 	MESON_PIN(GPIOA_20),
62*4882a593Smuzhiyun 	MESON_PIN(GPIOX_0),
63*4882a593Smuzhiyun 	MESON_PIN(GPIOX_1),
64*4882a593Smuzhiyun 	MESON_PIN(GPIOX_2),
65*4882a593Smuzhiyun 	MESON_PIN(GPIOX_3),
66*4882a593Smuzhiyun 	MESON_PIN(GPIOX_4),
67*4882a593Smuzhiyun 	MESON_PIN(GPIOX_5),
68*4882a593Smuzhiyun 	MESON_PIN(GPIOX_6),
69*4882a593Smuzhiyun 	MESON_PIN(GPIOX_7),
70*4882a593Smuzhiyun 	MESON_PIN(GPIOX_8),
71*4882a593Smuzhiyun 	MESON_PIN(GPIOX_9),
72*4882a593Smuzhiyun 	MESON_PIN(GPIOX_10),
73*4882a593Smuzhiyun 	MESON_PIN(GPIOX_11),
74*4882a593Smuzhiyun 	MESON_PIN(GPIOX_12),
75*4882a593Smuzhiyun 	MESON_PIN(GPIOX_13),
76*4882a593Smuzhiyun 	MESON_PIN(GPIOX_14),
77*4882a593Smuzhiyun 	MESON_PIN(GPIOX_15),
78*4882a593Smuzhiyun 	MESON_PIN(GPIOX_16),
79*4882a593Smuzhiyun 	MESON_PIN(GPIOX_17),
80*4882a593Smuzhiyun 	MESON_PIN(GPIOX_18),
81*4882a593Smuzhiyun 	MESON_PIN(GPIOX_19),
82*4882a593Smuzhiyun 	MESON_PIN(GPIOX_20),
83*4882a593Smuzhiyun 	MESON_PIN(GPIOX_21),
84*4882a593Smuzhiyun 	MESON_PIN(GPIOX_22),
85*4882a593Smuzhiyun 	MESON_PIN(GPIOY_0),
86*4882a593Smuzhiyun 	MESON_PIN(GPIOY_1),
87*4882a593Smuzhiyun 	MESON_PIN(GPIOY_2),
88*4882a593Smuzhiyun 	MESON_PIN(GPIOY_3),
89*4882a593Smuzhiyun 	MESON_PIN(GPIOY_4),
90*4882a593Smuzhiyun 	MESON_PIN(GPIOY_5),
91*4882a593Smuzhiyun 	MESON_PIN(GPIOY_6),
92*4882a593Smuzhiyun 	MESON_PIN(GPIOY_7),
93*4882a593Smuzhiyun 	MESON_PIN(GPIOY_8),
94*4882a593Smuzhiyun 	MESON_PIN(GPIOY_9),
95*4882a593Smuzhiyun 	MESON_PIN(GPIOY_10),
96*4882a593Smuzhiyun 	MESON_PIN(GPIOY_11),
97*4882a593Smuzhiyun 	MESON_PIN(GPIOY_12),
98*4882a593Smuzhiyun 	MESON_PIN(GPIOY_13),
99*4882a593Smuzhiyun 	MESON_PIN(GPIOY_14),
100*4882a593Smuzhiyun 	MESON_PIN(GPIOY_15),
101*4882a593Smuzhiyun };
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun static const struct pinctrl_pin_desc meson_axg_aobus_pins[] = {
104*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_0),
105*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_1),
106*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_2),
107*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_3),
108*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_4),
109*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_5),
110*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_6),
111*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_7),
112*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_8),
113*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_9),
114*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_10),
115*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_11),
116*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_12),
117*4882a593Smuzhiyun 	MESON_PIN(GPIOAO_13),
118*4882a593Smuzhiyun 	MESON_PIN(GPIO_TEST_N),
119*4882a593Smuzhiyun };
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun /* emmc */
122*4882a593Smuzhiyun static const unsigned int emmc_nand_d0_pins[] = {BOOT_0};
123*4882a593Smuzhiyun static const unsigned int emmc_nand_d1_pins[] = {BOOT_1};
124*4882a593Smuzhiyun static const unsigned int emmc_nand_d2_pins[] = {BOOT_2};
125*4882a593Smuzhiyun static const unsigned int emmc_nand_d3_pins[] = {BOOT_3};
126*4882a593Smuzhiyun static const unsigned int emmc_nand_d4_pins[] = {BOOT_4};
127*4882a593Smuzhiyun static const unsigned int emmc_nand_d5_pins[] = {BOOT_5};
128*4882a593Smuzhiyun static const unsigned int emmc_nand_d6_pins[] = {BOOT_6};
129*4882a593Smuzhiyun static const unsigned int emmc_nand_d7_pins[] = {BOOT_7};
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun static const unsigned int emmc_clk_pins[] = {BOOT_8};
132*4882a593Smuzhiyun static const unsigned int emmc_cmd_pins[] = {BOOT_10};
133*4882a593Smuzhiyun static const unsigned int emmc_ds_pins[]  = {BOOT_13};
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun /* nand */
136*4882a593Smuzhiyun static const unsigned int nand_ce0_pins[] = {BOOT_8};
137*4882a593Smuzhiyun static const unsigned int nand_ale_pins[] = {BOOT_9};
138*4882a593Smuzhiyun static const unsigned int nand_cle_pins[] = {BOOT_10};
139*4882a593Smuzhiyun static const unsigned int nand_wen_clk_pins[] = {BOOT_11};
140*4882a593Smuzhiyun static const unsigned int nand_ren_wr_pins[] = {BOOT_12};
141*4882a593Smuzhiyun static const unsigned int nand_rb0_pins[] = {BOOT_13};
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun /* nor */
144*4882a593Smuzhiyun static const unsigned int nor_hold_pins[] = {BOOT_3};
145*4882a593Smuzhiyun static const unsigned int nor_d_pins[] = {BOOT_4};
146*4882a593Smuzhiyun static const unsigned int nor_q_pins[] = {BOOT_5};
147*4882a593Smuzhiyun static const unsigned int nor_c_pins[] = {BOOT_6};
148*4882a593Smuzhiyun static const unsigned int nor_wp_pins[] = {BOOT_9};
149*4882a593Smuzhiyun static const unsigned int nor_cs_pins[] = {BOOT_14};
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun /* sdio */
152*4882a593Smuzhiyun static const unsigned int sdio_d0_pins[] = {GPIOX_0};
153*4882a593Smuzhiyun static const unsigned int sdio_d1_pins[] = {GPIOX_1};
154*4882a593Smuzhiyun static const unsigned int sdio_d2_pins[] = {GPIOX_2};
155*4882a593Smuzhiyun static const unsigned int sdio_d3_pins[] = {GPIOX_3};
156*4882a593Smuzhiyun static const unsigned int sdio_clk_pins[] = {GPIOX_4};
157*4882a593Smuzhiyun static const unsigned int sdio_cmd_pins[] = {GPIOX_5};
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun /* spi0 */
160*4882a593Smuzhiyun static const unsigned int spi0_clk_pins[] = {GPIOZ_0};
161*4882a593Smuzhiyun static const unsigned int spi0_mosi_pins[] = {GPIOZ_1};
162*4882a593Smuzhiyun static const unsigned int spi0_miso_pins[] = {GPIOZ_2};
163*4882a593Smuzhiyun static const unsigned int spi0_ss0_pins[] = {GPIOZ_3};
164*4882a593Smuzhiyun static const unsigned int spi0_ss1_pins[] = {GPIOZ_4};
165*4882a593Smuzhiyun static const unsigned int spi0_ss2_pins[] = {GPIOZ_5};
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun /* spi1 */
168*4882a593Smuzhiyun static const unsigned int spi1_clk_x_pins[] = {GPIOX_19};
169*4882a593Smuzhiyun static const unsigned int spi1_mosi_x_pins[] = {GPIOX_17};
170*4882a593Smuzhiyun static const unsigned int spi1_miso_x_pins[] = {GPIOX_18};
171*4882a593Smuzhiyun static const unsigned int spi1_ss0_x_pins[] = {GPIOX_16};
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun static const unsigned int spi1_clk_a_pins[] = {GPIOA_4};
174*4882a593Smuzhiyun static const unsigned int spi1_mosi_a_pins[] = {GPIOA_2};
175*4882a593Smuzhiyun static const unsigned int spi1_miso_a_pins[] = {GPIOA_3};
176*4882a593Smuzhiyun static const unsigned int spi1_ss0_a_pins[] = {GPIOA_5};
177*4882a593Smuzhiyun static const unsigned int spi1_ss1_pins[] = {GPIOA_6};
178*4882a593Smuzhiyun 
179*4882a593Smuzhiyun /* i2c0 */
180*4882a593Smuzhiyun static const unsigned int i2c0_sck_pins[] = {GPIOZ_6};
181*4882a593Smuzhiyun static const unsigned int i2c0_sda_pins[] = {GPIOZ_7};
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun /* i2c1 */
184*4882a593Smuzhiyun static const unsigned int i2c1_sck_z_pins[] = {GPIOZ_8};
185*4882a593Smuzhiyun static const unsigned int i2c1_sda_z_pins[] = {GPIOZ_9};
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun static const unsigned int i2c1_sck_x_pins[] = {GPIOX_16};
188*4882a593Smuzhiyun static const unsigned int i2c1_sda_x_pins[] = {GPIOX_17};
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun /* i2c2 */
191*4882a593Smuzhiyun static const unsigned int i2c2_sck_x_pins[] = {GPIOX_18};
192*4882a593Smuzhiyun static const unsigned int i2c2_sda_x_pins[] = {GPIOX_19};
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun static const unsigned int i2c2_sda_a_pins[] = {GPIOA_17};
195*4882a593Smuzhiyun static const unsigned int i2c2_sck_a_pins[] = {GPIOA_18};
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun /* i2c3 */
198*4882a593Smuzhiyun static const unsigned int i2c3_sda_a6_pins[] = {GPIOA_6};
199*4882a593Smuzhiyun static const unsigned int i2c3_sck_a7_pins[] = {GPIOA_7};
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun static const unsigned int i2c3_sda_a12_pins[] = {GPIOA_12};
202*4882a593Smuzhiyun static const unsigned int i2c3_sck_a13_pins[] = {GPIOA_13};
203*4882a593Smuzhiyun 
204*4882a593Smuzhiyun static const unsigned int i2c3_sda_a19_pins[] = {GPIOA_19};
205*4882a593Smuzhiyun static const unsigned int i2c3_sck_a20_pins[] = {GPIOA_20};
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun /* uart_a */
208*4882a593Smuzhiyun static const unsigned int uart_rts_a_pins[] = {GPIOX_11};
209*4882a593Smuzhiyun static const unsigned int uart_cts_a_pins[] = {GPIOX_10};
210*4882a593Smuzhiyun static const unsigned int uart_tx_a_pins[] = {GPIOX_8};
211*4882a593Smuzhiyun static const unsigned int uart_rx_a_pins[] = {GPIOX_9};
212*4882a593Smuzhiyun 
213*4882a593Smuzhiyun /* uart_b */
214*4882a593Smuzhiyun static const unsigned int uart_rts_b_z_pins[] = {GPIOZ_0};
215*4882a593Smuzhiyun static const unsigned int uart_cts_b_z_pins[] = {GPIOZ_1};
216*4882a593Smuzhiyun static const unsigned int uart_tx_b_z_pins[] = {GPIOZ_2};
217*4882a593Smuzhiyun static const unsigned int uart_rx_b_z_pins[] = {GPIOZ_3};
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun static const unsigned int uart_rts_b_x_pins[] = {GPIOX_18};
220*4882a593Smuzhiyun static const unsigned int uart_cts_b_x_pins[] = {GPIOX_19};
221*4882a593Smuzhiyun static const unsigned int uart_tx_b_x_pins[] = {GPIOX_16};
222*4882a593Smuzhiyun static const unsigned int uart_rx_b_x_pins[] = {GPIOX_17};
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun /* uart_ao_b */
225*4882a593Smuzhiyun static const unsigned int uart_ao_tx_b_z_pins[] = {GPIOZ_8};
226*4882a593Smuzhiyun static const unsigned int uart_ao_rx_b_z_pins[] = {GPIOZ_9};
227*4882a593Smuzhiyun static const unsigned int uart_ao_cts_b_z_pins[] = {GPIOZ_6};
228*4882a593Smuzhiyun static const unsigned int uart_ao_rts_b_z_pins[] = {GPIOZ_7};
229*4882a593Smuzhiyun 
230*4882a593Smuzhiyun /* pwm_a */
231*4882a593Smuzhiyun static const unsigned int pwm_a_z_pins[] = {GPIOZ_5};
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun static const unsigned int pwm_a_x18_pins[] = {GPIOX_18};
234*4882a593Smuzhiyun static const unsigned int pwm_a_x20_pins[] = {GPIOX_20};
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun static const unsigned int pwm_a_a_pins[] = {GPIOA_14};
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun /* pwm_b */
239*4882a593Smuzhiyun static const unsigned int pwm_b_z_pins[] = {GPIOZ_4};
240*4882a593Smuzhiyun 
241*4882a593Smuzhiyun static const unsigned int pwm_b_x_pins[] = {GPIOX_19};
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun static const unsigned int pwm_b_a_pins[] = {GPIOA_15};
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun /* pwm_c */
246*4882a593Smuzhiyun static const unsigned int pwm_c_x10_pins[] = {GPIOX_10};
247*4882a593Smuzhiyun static const unsigned int pwm_c_x17_pins[] = {GPIOX_17};
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun static const unsigned int pwm_c_a_pins[] = {GPIOA_16};
250*4882a593Smuzhiyun 
251*4882a593Smuzhiyun /* pwm_d */
252*4882a593Smuzhiyun static const unsigned int pwm_d_x11_pins[] = {GPIOX_11};
253*4882a593Smuzhiyun static const unsigned int pwm_d_x16_pins[] = {GPIOX_16};
254*4882a593Smuzhiyun 
255*4882a593Smuzhiyun /* pwm_vs */
256*4882a593Smuzhiyun static const unsigned int pwm_vs_pins[] = {GPIOA_0};
257*4882a593Smuzhiyun 
258*4882a593Smuzhiyun /* spdif_in */
259*4882a593Smuzhiyun static const unsigned int spdif_in_z_pins[] = {GPIOZ_4};
260*4882a593Smuzhiyun 
261*4882a593Smuzhiyun static const unsigned int spdif_in_a1_pins[] = {GPIOA_1};
262*4882a593Smuzhiyun static const unsigned int spdif_in_a7_pins[] = {GPIOA_7};
263*4882a593Smuzhiyun static const unsigned int spdif_in_a19_pins[] = {GPIOA_19};
264*4882a593Smuzhiyun static const unsigned int spdif_in_a20_pins[] = {GPIOA_20};
265*4882a593Smuzhiyun 
266*4882a593Smuzhiyun /* spdif_out */
267*4882a593Smuzhiyun static const unsigned int spdif_out_z_pins[] = {GPIOZ_5};
268*4882a593Smuzhiyun 
269*4882a593Smuzhiyun static const unsigned int spdif_out_a1_pins[] = {GPIOA_1};
270*4882a593Smuzhiyun static const unsigned int spdif_out_a11_pins[] = {GPIOA_11};
271*4882a593Smuzhiyun static const unsigned int spdif_out_a19_pins[] = {GPIOA_19};
272*4882a593Smuzhiyun static const unsigned int spdif_out_a20_pins[] = {GPIOA_20};
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun /* jtag_ee */
275*4882a593Smuzhiyun static const unsigned int jtag_tdo_x_pins[] = {GPIOX_0};
276*4882a593Smuzhiyun static const unsigned int jtag_tdi_x_pins[] = {GPIOX_1};
277*4882a593Smuzhiyun static const unsigned int jtag_clk_x_pins[] = {GPIOX_4};
278*4882a593Smuzhiyun static const unsigned int jtag_tms_x_pins[] = {GPIOX_5};
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun /* eth */
281*4882a593Smuzhiyun static const unsigned int eth_txd0_x_pins[] = {GPIOX_8};
282*4882a593Smuzhiyun static const unsigned int eth_txd1_x_pins[] = {GPIOX_9};
283*4882a593Smuzhiyun static const unsigned int eth_txen_x_pins[] = {GPIOX_10};
284*4882a593Smuzhiyun static const unsigned int eth_rgmii_rx_clk_x_pins[] = {GPIOX_12};
285*4882a593Smuzhiyun static const unsigned int eth_rxd0_x_pins[] = {GPIOX_13};
286*4882a593Smuzhiyun static const unsigned int eth_rxd1_x_pins[] = {GPIOX_14};
287*4882a593Smuzhiyun static const unsigned int eth_rx_dv_x_pins[] = {GPIOX_15};
288*4882a593Smuzhiyun static const unsigned int eth_mdio_x_pins[] = {GPIOX_21};
289*4882a593Smuzhiyun static const unsigned int eth_mdc_x_pins[] = {GPIOX_22};
290*4882a593Smuzhiyun 
291*4882a593Smuzhiyun static const unsigned int eth_txd0_y_pins[] = {GPIOY_10};
292*4882a593Smuzhiyun static const unsigned int eth_txd1_y_pins[] = {GPIOY_11};
293*4882a593Smuzhiyun static const unsigned int eth_txen_y_pins[] = {GPIOY_9};
294*4882a593Smuzhiyun static const unsigned int eth_rgmii_rx_clk_y_pins[] = {GPIOY_2};
295*4882a593Smuzhiyun static const unsigned int eth_rxd0_y_pins[] = {GPIOY_4};
296*4882a593Smuzhiyun static const unsigned int eth_rxd1_y_pins[] = {GPIOY_5};
297*4882a593Smuzhiyun static const unsigned int eth_rx_dv_y_pins[] = {GPIOY_3};
298*4882a593Smuzhiyun static const unsigned int eth_mdio_y_pins[] = {GPIOY_0};
299*4882a593Smuzhiyun static const unsigned int eth_mdc_y_pins[] = {GPIOY_1};
300*4882a593Smuzhiyun 
301*4882a593Smuzhiyun static const unsigned int eth_rxd2_rgmii_pins[] = {GPIOY_6};
302*4882a593Smuzhiyun static const unsigned int eth_rxd3_rgmii_pins[] = {GPIOY_7};
303*4882a593Smuzhiyun static const unsigned int eth_rgmii_tx_clk_pins[] = {GPIOY_8};
304*4882a593Smuzhiyun static const unsigned int eth_txd2_rgmii_pins[] = {GPIOY_12};
305*4882a593Smuzhiyun static const unsigned int eth_txd3_rgmii_pins[] = {GPIOY_13};
306*4882a593Smuzhiyun 
307*4882a593Smuzhiyun /* pdm */
308*4882a593Smuzhiyun static const unsigned int pdm_dclk_a14_pins[] = {GPIOA_14};
309*4882a593Smuzhiyun static const unsigned int pdm_dclk_a19_pins[] = {GPIOA_19};
310*4882a593Smuzhiyun static const unsigned int pdm_din0_pins[] = {GPIOA_15};
311*4882a593Smuzhiyun static const unsigned int pdm_din1_pins[] = {GPIOA_16};
312*4882a593Smuzhiyun static const unsigned int pdm_din2_pins[] = {GPIOA_17};
313*4882a593Smuzhiyun static const unsigned int pdm_din3_pins[] = {GPIOA_18};
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun /* mclk */
316*4882a593Smuzhiyun static const unsigned int mclk_c_pins[] = {GPIOA_0};
317*4882a593Smuzhiyun static const unsigned int mclk_b_pins[] = {GPIOA_1};
318*4882a593Smuzhiyun 
319*4882a593Smuzhiyun /* tdm */
320*4882a593Smuzhiyun static const unsigned int tdma_sclk_pins[] = {GPIOX_12};
321*4882a593Smuzhiyun static const unsigned int tdma_sclk_slv_pins[] = {GPIOX_12};
322*4882a593Smuzhiyun static const unsigned int tdma_fs_pins[] = {GPIOX_13};
323*4882a593Smuzhiyun static const unsigned int tdma_fs_slv_pins[] = {GPIOX_13};
324*4882a593Smuzhiyun static const unsigned int tdma_din0_pins[] = {GPIOX_14};
325*4882a593Smuzhiyun static const unsigned int tdma_dout0_x14_pins[] = {GPIOX_14};
326*4882a593Smuzhiyun static const unsigned int tdma_dout0_x15_pins[] = {GPIOX_15};
327*4882a593Smuzhiyun static const unsigned int tdma_dout1_pins[] = {GPIOX_15};
328*4882a593Smuzhiyun static const unsigned int tdma_din1_pins[] = {GPIOX_15};
329*4882a593Smuzhiyun 
330*4882a593Smuzhiyun static const unsigned int tdmc_sclk_pins[] = {GPIOA_2};
331*4882a593Smuzhiyun static const unsigned int tdmc_sclk_slv_pins[] = {GPIOA_2};
332*4882a593Smuzhiyun static const unsigned int tdmc_fs_pins[] = {GPIOA_3};
333*4882a593Smuzhiyun static const unsigned int tdmc_fs_slv_pins[] = {GPIOA_3};
334*4882a593Smuzhiyun static const unsigned int tdmc_din0_pins[] = {GPIOA_4};
335*4882a593Smuzhiyun static const unsigned int tdmc_dout0_pins[] = {GPIOA_4};
336*4882a593Smuzhiyun static const unsigned int tdmc_din1_pins[] = {GPIOA_5};
337*4882a593Smuzhiyun static const unsigned int tdmc_dout1_pins[] = {GPIOA_5};
338*4882a593Smuzhiyun static const unsigned int tdmc_din2_pins[] = {GPIOA_6};
339*4882a593Smuzhiyun static const unsigned int tdmc_dout2_pins[] = {GPIOA_6};
340*4882a593Smuzhiyun static const unsigned int tdmc_din3_pins[] = {GPIOA_7};
341*4882a593Smuzhiyun static const unsigned int tdmc_dout3_pins[] = {GPIOA_7};
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun static const unsigned int tdmb_sclk_pins[] = {GPIOA_8};
344*4882a593Smuzhiyun static const unsigned int tdmb_sclk_slv_pins[] = {GPIOA_8};
345*4882a593Smuzhiyun static const unsigned int tdmb_fs_pins[] = {GPIOA_9};
346*4882a593Smuzhiyun static const unsigned int tdmb_fs_slv_pins[] = {GPIOA_9};
347*4882a593Smuzhiyun static const unsigned int tdmb_din0_pins[] = {GPIOA_10};
348*4882a593Smuzhiyun static const unsigned int tdmb_dout0_pins[] = {GPIOA_10};
349*4882a593Smuzhiyun static const unsigned int tdmb_din1_pins[] = {GPIOA_11};
350*4882a593Smuzhiyun static const unsigned int tdmb_dout1_pins[] = {GPIOA_11};
351*4882a593Smuzhiyun static const unsigned int tdmb_din2_pins[] = {GPIOA_12};
352*4882a593Smuzhiyun static const unsigned int tdmb_dout2_pins[] = {GPIOA_12};
353*4882a593Smuzhiyun static const unsigned int tdmb_din3_pins[] = {GPIOA_13};
354*4882a593Smuzhiyun static const unsigned int tdmb_dout3_pins[] = {GPIOA_13};
355*4882a593Smuzhiyun 
356*4882a593Smuzhiyun static struct meson_pmx_group meson_axg_periphs_groups[] = {
357*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_0),
358*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_1),
359*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_2),
360*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_3),
361*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_4),
362*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_5),
363*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_6),
364*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_7),
365*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_8),
366*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_9),
367*4882a593Smuzhiyun 	GPIO_GROUP(GPIOZ_10),
368*4882a593Smuzhiyun 
369*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_0),
370*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_1),
371*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_2),
372*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_3),
373*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_4),
374*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_5),
375*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_6),
376*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_7),
377*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_8),
378*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_9),
379*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_10),
380*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_11),
381*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_12),
382*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_13),
383*4882a593Smuzhiyun 	GPIO_GROUP(BOOT_14),
384*4882a593Smuzhiyun 
385*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_0),
386*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_1),
387*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_2),
388*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_3),
389*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_4),
390*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_5),
391*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_6),
392*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_7),
393*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_8),
394*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_9),
395*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_10),
396*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_11),
397*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_12),
398*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_13),
399*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_14),
400*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_15),
401*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_16),
402*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_17),
403*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_19),
404*4882a593Smuzhiyun 	GPIO_GROUP(GPIOA_20),
405*4882a593Smuzhiyun 
406*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_0),
407*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_1),
408*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_2),
409*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_3),
410*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_4),
411*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_5),
412*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_6),
413*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_7),
414*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_8),
415*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_9),
416*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_10),
417*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_11),
418*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_12),
419*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_13),
420*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_14),
421*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_15),
422*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_16),
423*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_17),
424*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_18),
425*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_19),
426*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_20),
427*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_21),
428*4882a593Smuzhiyun 	GPIO_GROUP(GPIOX_22),
429*4882a593Smuzhiyun 
430*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_0),
431*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_1),
432*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_2),
433*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_3),
434*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_4),
435*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_5),
436*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_6),
437*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_7),
438*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_8),
439*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_9),
440*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_10),
441*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_11),
442*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_12),
443*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_13),
444*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_14),
445*4882a593Smuzhiyun 	GPIO_GROUP(GPIOY_15),
446*4882a593Smuzhiyun 
447*4882a593Smuzhiyun 	/* bank BOOT */
448*4882a593Smuzhiyun 	GROUP(emmc_nand_d0, 1),
449*4882a593Smuzhiyun 	GROUP(emmc_nand_d1, 1),
450*4882a593Smuzhiyun 	GROUP(emmc_nand_d2, 1),
451*4882a593Smuzhiyun 	GROUP(emmc_nand_d3, 1),
452*4882a593Smuzhiyun 	GROUP(emmc_nand_d4, 1),
453*4882a593Smuzhiyun 	GROUP(emmc_nand_d5, 1),
454*4882a593Smuzhiyun 	GROUP(emmc_nand_d6, 1),
455*4882a593Smuzhiyun 	GROUP(emmc_nand_d7, 1),
456*4882a593Smuzhiyun 	GROUP(emmc_clk, 1),
457*4882a593Smuzhiyun 	GROUP(emmc_cmd, 1),
458*4882a593Smuzhiyun 	GROUP(emmc_ds, 1),
459*4882a593Smuzhiyun 	GROUP(nand_ce0, 2),
460*4882a593Smuzhiyun 	GROUP(nand_ale, 2),
461*4882a593Smuzhiyun 	GROUP(nand_cle, 2),
462*4882a593Smuzhiyun 	GROUP(nand_wen_clk, 2),
463*4882a593Smuzhiyun 	GROUP(nand_ren_wr, 2),
464*4882a593Smuzhiyun 	GROUP(nand_rb0, 2),
465*4882a593Smuzhiyun 	GROUP(nor_hold, 3),
466*4882a593Smuzhiyun 	GROUP(nor_d, 3),
467*4882a593Smuzhiyun 	GROUP(nor_q, 3),
468*4882a593Smuzhiyun 	GROUP(nor_c, 3),
469*4882a593Smuzhiyun 	GROUP(nor_wp, 3),
470*4882a593Smuzhiyun 	GROUP(nor_cs, 3),
471*4882a593Smuzhiyun 
472*4882a593Smuzhiyun 	/* bank GPIOZ */
473*4882a593Smuzhiyun 	GROUP(spi0_clk, 1),
474*4882a593Smuzhiyun 	GROUP(spi0_mosi, 1),
475*4882a593Smuzhiyun 	GROUP(spi0_miso, 1),
476*4882a593Smuzhiyun 	GROUP(spi0_ss0, 1),
477*4882a593Smuzhiyun 	GROUP(spi0_ss1, 1),
478*4882a593Smuzhiyun 	GROUP(spi0_ss2, 1),
479*4882a593Smuzhiyun 	GROUP(i2c0_sck, 1),
480*4882a593Smuzhiyun 	GROUP(i2c0_sda, 1),
481*4882a593Smuzhiyun 	GROUP(i2c1_sck_z, 1),
482*4882a593Smuzhiyun 	GROUP(i2c1_sda_z, 1),
483*4882a593Smuzhiyun 	GROUP(uart_rts_b_z, 2),
484*4882a593Smuzhiyun 	GROUP(uart_cts_b_z, 2),
485*4882a593Smuzhiyun 	GROUP(uart_tx_b_z, 2),
486*4882a593Smuzhiyun 	GROUP(uart_rx_b_z, 2),
487*4882a593Smuzhiyun 	GROUP(pwm_a_z, 2),
488*4882a593Smuzhiyun 	GROUP(pwm_b_z, 2),
489*4882a593Smuzhiyun 	GROUP(spdif_in_z, 3),
490*4882a593Smuzhiyun 	GROUP(spdif_out_z, 3),
491*4882a593Smuzhiyun 	GROUP(uart_ao_tx_b_z, 2),
492*4882a593Smuzhiyun 	GROUP(uart_ao_rx_b_z, 2),
493*4882a593Smuzhiyun 	GROUP(uart_ao_cts_b_z, 2),
494*4882a593Smuzhiyun 	GROUP(uart_ao_rts_b_z, 2),
495*4882a593Smuzhiyun 
496*4882a593Smuzhiyun 	/* bank GPIOX */
497*4882a593Smuzhiyun 	GROUP(sdio_d0, 1),
498*4882a593Smuzhiyun 	GROUP(sdio_d1, 1),
499*4882a593Smuzhiyun 	GROUP(sdio_d2, 1),
500*4882a593Smuzhiyun 	GROUP(sdio_d3, 1),
501*4882a593Smuzhiyun 	GROUP(sdio_clk, 1),
502*4882a593Smuzhiyun 	GROUP(sdio_cmd, 1),
503*4882a593Smuzhiyun 	GROUP(i2c1_sck_x, 1),
504*4882a593Smuzhiyun 	GROUP(i2c1_sda_x, 1),
505*4882a593Smuzhiyun 	GROUP(i2c2_sck_x, 1),
506*4882a593Smuzhiyun 	GROUP(i2c2_sda_x, 1),
507*4882a593Smuzhiyun 	GROUP(uart_rts_a, 1),
508*4882a593Smuzhiyun 	GROUP(uart_cts_a, 1),
509*4882a593Smuzhiyun 	GROUP(uart_tx_a, 1),
510*4882a593Smuzhiyun 	GROUP(uart_rx_a, 1),
511*4882a593Smuzhiyun 	GROUP(uart_rts_b_x, 2),
512*4882a593Smuzhiyun 	GROUP(uart_cts_b_x, 2),
513*4882a593Smuzhiyun 	GROUP(uart_tx_b_x, 2),
514*4882a593Smuzhiyun 	GROUP(uart_rx_b_x, 2),
515*4882a593Smuzhiyun 	GROUP(jtag_tdo_x, 2),
516*4882a593Smuzhiyun 	GROUP(jtag_tdi_x, 2),
517*4882a593Smuzhiyun 	GROUP(jtag_clk_x, 2),
518*4882a593Smuzhiyun 	GROUP(jtag_tms_x, 2),
519*4882a593Smuzhiyun 	GROUP(spi1_clk_x, 4),
520*4882a593Smuzhiyun 	GROUP(spi1_mosi_x, 4),
521*4882a593Smuzhiyun 	GROUP(spi1_miso_x, 4),
522*4882a593Smuzhiyun 	GROUP(spi1_ss0_x, 4),
523*4882a593Smuzhiyun 	GROUP(pwm_a_x18, 3),
524*4882a593Smuzhiyun 	GROUP(pwm_a_x20, 1),
525*4882a593Smuzhiyun 	GROUP(pwm_b_x, 3),
526*4882a593Smuzhiyun 	GROUP(pwm_c_x10, 3),
527*4882a593Smuzhiyun 	GROUP(pwm_c_x17, 3),
528*4882a593Smuzhiyun 	GROUP(pwm_d_x11, 3),
529*4882a593Smuzhiyun 	GROUP(pwm_d_x16, 3),
530*4882a593Smuzhiyun 	GROUP(eth_txd0_x, 4),
531*4882a593Smuzhiyun 	GROUP(eth_txd1_x, 4),
532*4882a593Smuzhiyun 	GROUP(eth_txen_x, 4),
533*4882a593Smuzhiyun 	GROUP(eth_rgmii_rx_clk_x, 4),
534*4882a593Smuzhiyun 	GROUP(eth_rxd0_x, 4),
535*4882a593Smuzhiyun 	GROUP(eth_rxd1_x, 4),
536*4882a593Smuzhiyun 	GROUP(eth_rx_dv_x, 4),
537*4882a593Smuzhiyun 	GROUP(eth_mdio_x, 4),
538*4882a593Smuzhiyun 	GROUP(eth_mdc_x, 4),
539*4882a593Smuzhiyun 	GROUP(tdma_sclk, 1),
540*4882a593Smuzhiyun 	GROUP(tdma_sclk_slv, 2),
541*4882a593Smuzhiyun 	GROUP(tdma_fs, 1),
542*4882a593Smuzhiyun 	GROUP(tdma_fs_slv, 2),
543*4882a593Smuzhiyun 	GROUP(tdma_din0, 1),
544*4882a593Smuzhiyun 	GROUP(tdma_dout0_x14, 2),
545*4882a593Smuzhiyun 	GROUP(tdma_dout0_x15, 1),
546*4882a593Smuzhiyun 	GROUP(tdma_dout1, 2),
547*4882a593Smuzhiyun 	GROUP(tdma_din1, 3),
548*4882a593Smuzhiyun 
549*4882a593Smuzhiyun 	/* bank GPIOY */
550*4882a593Smuzhiyun 	GROUP(eth_txd0_y, 1),
551*4882a593Smuzhiyun 	GROUP(eth_txd1_y, 1),
552*4882a593Smuzhiyun 	GROUP(eth_txen_y, 1),
553*4882a593Smuzhiyun 	GROUP(eth_rgmii_rx_clk_y, 1),
554*4882a593Smuzhiyun 	GROUP(eth_rxd0_y, 1),
555*4882a593Smuzhiyun 	GROUP(eth_rxd1_y, 1),
556*4882a593Smuzhiyun 	GROUP(eth_rx_dv_y, 1),
557*4882a593Smuzhiyun 	GROUP(eth_mdio_y, 1),
558*4882a593Smuzhiyun 	GROUP(eth_mdc_y, 1),
559*4882a593Smuzhiyun 	GROUP(eth_rxd2_rgmii, 1),
560*4882a593Smuzhiyun 	GROUP(eth_rxd3_rgmii, 1),
561*4882a593Smuzhiyun 	GROUP(eth_rgmii_tx_clk, 1),
562*4882a593Smuzhiyun 	GROUP(eth_txd2_rgmii, 1),
563*4882a593Smuzhiyun 	GROUP(eth_txd3_rgmii, 1),
564*4882a593Smuzhiyun 
565*4882a593Smuzhiyun 	/* bank GPIOA */
566*4882a593Smuzhiyun 	GROUP(spdif_out_a1, 4),
567*4882a593Smuzhiyun 	GROUP(spdif_out_a11, 3),
568*4882a593Smuzhiyun 	GROUP(spdif_out_a19, 2),
569*4882a593Smuzhiyun 	GROUP(spdif_out_a20, 1),
570*4882a593Smuzhiyun 	GROUP(spdif_in_a1, 3),
571*4882a593Smuzhiyun 	GROUP(spdif_in_a7, 3),
572*4882a593Smuzhiyun 	GROUP(spdif_in_a19, 1),
573*4882a593Smuzhiyun 	GROUP(spdif_in_a20, 2),
574*4882a593Smuzhiyun 	GROUP(spi1_clk_a, 3),
575*4882a593Smuzhiyun 	GROUP(spi1_mosi_a, 3),
576*4882a593Smuzhiyun 	GROUP(spi1_miso_a, 3),
577*4882a593Smuzhiyun 	GROUP(spi1_ss0_a, 3),
578*4882a593Smuzhiyun 	GROUP(spi1_ss1, 3),
579*4882a593Smuzhiyun 	GROUP(pwm_a_a, 3),
580*4882a593Smuzhiyun 	GROUP(pwm_b_a, 3),
581*4882a593Smuzhiyun 	GROUP(pwm_c_a, 3),
582*4882a593Smuzhiyun 	GROUP(pwm_vs, 2),
583*4882a593Smuzhiyun 	GROUP(i2c2_sda_a, 3),
584*4882a593Smuzhiyun 	GROUP(i2c2_sck_a, 3),
585*4882a593Smuzhiyun 	GROUP(i2c3_sda_a6, 4),
586*4882a593Smuzhiyun 	GROUP(i2c3_sck_a7, 4),
587*4882a593Smuzhiyun 	GROUP(i2c3_sda_a12, 4),
588*4882a593Smuzhiyun 	GROUP(i2c3_sck_a13, 4),
589*4882a593Smuzhiyun 	GROUP(i2c3_sda_a19, 4),
590*4882a593Smuzhiyun 	GROUP(i2c3_sck_a20, 4),
591*4882a593Smuzhiyun 	GROUP(pdm_dclk_a14, 1),
592*4882a593Smuzhiyun 	GROUP(pdm_dclk_a19, 3),
593*4882a593Smuzhiyun 	GROUP(pdm_din0, 1),
594*4882a593Smuzhiyun 	GROUP(pdm_din1, 1),
595*4882a593Smuzhiyun 	GROUP(pdm_din2, 1),
596*4882a593Smuzhiyun 	GROUP(pdm_din3, 1),
597*4882a593Smuzhiyun 	GROUP(mclk_c, 1),
598*4882a593Smuzhiyun 	GROUP(mclk_b, 1),
599*4882a593Smuzhiyun 	GROUP(tdmc_sclk, 1),
600*4882a593Smuzhiyun 	GROUP(tdmc_sclk_slv, 2),
601*4882a593Smuzhiyun 	GROUP(tdmc_fs, 1),
602*4882a593Smuzhiyun 	GROUP(tdmc_fs_slv, 2),
603*4882a593Smuzhiyun 	GROUP(tdmc_din0, 2),
604*4882a593Smuzhiyun 	GROUP(tdmc_dout0, 1),
605*4882a593Smuzhiyun 	GROUP(tdmc_din1, 2),
606*4882a593Smuzhiyun 	GROUP(tdmc_dout1, 1),
607*4882a593Smuzhiyun 	GROUP(tdmc_din2, 2),
608*4882a593Smuzhiyun 	GROUP(tdmc_dout2, 1),
609*4882a593Smuzhiyun 	GROUP(tdmc_din3, 2),
610*4882a593Smuzhiyun 	GROUP(tdmc_dout3, 1),
611*4882a593Smuzhiyun 	GROUP(tdmb_sclk, 1),
612*4882a593Smuzhiyun 	GROUP(tdmb_sclk_slv, 2),
613*4882a593Smuzhiyun 	GROUP(tdmb_fs, 1),
614*4882a593Smuzhiyun 	GROUP(tdmb_fs_slv, 2),
615*4882a593Smuzhiyun 	GROUP(tdmb_din0, 2),
616*4882a593Smuzhiyun 	GROUP(tdmb_dout0, 1),
617*4882a593Smuzhiyun 	GROUP(tdmb_din1, 2),
618*4882a593Smuzhiyun 	GROUP(tdmb_dout1, 1),
619*4882a593Smuzhiyun 	GROUP(tdmb_din2, 2),
620*4882a593Smuzhiyun 	GROUP(tdmb_dout2, 1),
621*4882a593Smuzhiyun 	GROUP(tdmb_din3, 2),
622*4882a593Smuzhiyun 	GROUP(tdmb_dout3, 1),
623*4882a593Smuzhiyun };
624*4882a593Smuzhiyun 
625*4882a593Smuzhiyun /* uart_ao_a */
626*4882a593Smuzhiyun static const unsigned int uart_ao_tx_a_pins[] = {GPIOAO_0};
627*4882a593Smuzhiyun static const unsigned int uart_ao_rx_a_pins[] = {GPIOAO_1};
628*4882a593Smuzhiyun static const unsigned int uart_ao_cts_a_pins[] = {GPIOAO_2};
629*4882a593Smuzhiyun static const unsigned int uart_ao_rts_a_pins[] = {GPIOAO_3};
630*4882a593Smuzhiyun 
631*4882a593Smuzhiyun /* uart_ao_b */
632*4882a593Smuzhiyun static const unsigned int uart_ao_tx_b_pins[] = {GPIOAO_4};
633*4882a593Smuzhiyun static const unsigned int uart_ao_rx_b_pins[] = {GPIOAO_5};
634*4882a593Smuzhiyun static const unsigned int uart_ao_cts_b_pins[] = {GPIOAO_2};
635*4882a593Smuzhiyun static const unsigned int uart_ao_rts_b_pins[] = {GPIOAO_3};
636*4882a593Smuzhiyun 
637*4882a593Smuzhiyun /* i2c_ao */
638*4882a593Smuzhiyun static const unsigned int i2c_ao_sck_4_pins[] = {GPIOAO_4};
639*4882a593Smuzhiyun static const unsigned int i2c_ao_sda_5_pins[] = {GPIOAO_5};
640*4882a593Smuzhiyun static const unsigned int i2c_ao_sck_8_pins[] = {GPIOAO_8};
641*4882a593Smuzhiyun static const unsigned int i2c_ao_sda_9_pins[] = {GPIOAO_9};
642*4882a593Smuzhiyun static const unsigned int i2c_ao_sck_10_pins[] = {GPIOAO_10};
643*4882a593Smuzhiyun static const unsigned int i2c_ao_sda_11_pins[] = {GPIOAO_11};
644*4882a593Smuzhiyun 
645*4882a593Smuzhiyun /* i2c_ao_slave */
646*4882a593Smuzhiyun static const unsigned int i2c_ao_slave_sck_pins[] = {GPIOAO_10};
647*4882a593Smuzhiyun static const unsigned int i2c_ao_slave_sda_pins[] = {GPIOAO_11};
648*4882a593Smuzhiyun 
649*4882a593Smuzhiyun /* ir_in */
650*4882a593Smuzhiyun static const unsigned int remote_input_ao_pins[] = {GPIOAO_6};
651*4882a593Smuzhiyun 
652*4882a593Smuzhiyun /* ir_out */
653*4882a593Smuzhiyun static const unsigned int remote_out_ao_pins[] = {GPIOAO_7};
654*4882a593Smuzhiyun 
655*4882a593Smuzhiyun /* pwm_ao_a */
656*4882a593Smuzhiyun static const unsigned int pwm_ao_a_pins[] = {GPIOAO_3};
657*4882a593Smuzhiyun 
658*4882a593Smuzhiyun /* pwm_ao_b */
659*4882a593Smuzhiyun static const unsigned int pwm_ao_b_ao2_pins[] = {GPIOAO_2};
660*4882a593Smuzhiyun static const unsigned int pwm_ao_b_ao12_pins[] = {GPIOAO_12};
661*4882a593Smuzhiyun 
662*4882a593Smuzhiyun /* pwm_ao_c */
663*4882a593Smuzhiyun static const unsigned int pwm_ao_c_ao8_pins[] = {GPIOAO_8};
664*4882a593Smuzhiyun static const unsigned int pwm_ao_c_ao13_pins[] = {GPIOAO_13};
665*4882a593Smuzhiyun 
666*4882a593Smuzhiyun /* pwm_ao_d */
667*4882a593Smuzhiyun static const unsigned int pwm_ao_d_pins[] = {GPIOAO_9};
668*4882a593Smuzhiyun 
669*4882a593Smuzhiyun /* jtag_ao */
670*4882a593Smuzhiyun static const unsigned int jtag_ao_tdi_pins[] = {GPIOAO_3};
671*4882a593Smuzhiyun static const unsigned int jtag_ao_tdo_pins[] = {GPIOAO_4};
672*4882a593Smuzhiyun static const unsigned int jtag_ao_clk_pins[] = {GPIOAO_5};
673*4882a593Smuzhiyun static const unsigned int jtag_ao_tms_pins[] = {GPIOAO_7};
674*4882a593Smuzhiyun 
675*4882a593Smuzhiyun /* gen_clk */
676*4882a593Smuzhiyun static const unsigned int gen_clk_ee_pins[] = {GPIOAO_13};
677*4882a593Smuzhiyun 
678*4882a593Smuzhiyun static struct meson_pmx_group meson_axg_aobus_groups[] = {
679*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_0),
680*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_1),
681*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_2),
682*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_3),
683*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_4),
684*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_5),
685*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_6),
686*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_7),
687*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_8),
688*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_9),
689*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_10),
690*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_11),
691*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_12),
692*4882a593Smuzhiyun 	GPIO_GROUP(GPIOAO_13),
693*4882a593Smuzhiyun 	GPIO_GROUP(GPIO_TEST_N),
694*4882a593Smuzhiyun 
695*4882a593Smuzhiyun 	/* bank AO */
696*4882a593Smuzhiyun 	GROUP(uart_ao_tx_a, 1),
697*4882a593Smuzhiyun 	GROUP(uart_ao_rx_a, 1),
698*4882a593Smuzhiyun 	GROUP(uart_ao_cts_a, 2),
699*4882a593Smuzhiyun 	GROUP(uart_ao_rts_a, 2),
700*4882a593Smuzhiyun 	GROUP(uart_ao_tx_b, 1),
701*4882a593Smuzhiyun 	GROUP(uart_ao_rx_b, 1),
702*4882a593Smuzhiyun 	GROUP(uart_ao_cts_b, 1),
703*4882a593Smuzhiyun 	GROUP(uart_ao_rts_b, 1),
704*4882a593Smuzhiyun 	GROUP(i2c_ao_sck_4, 2),
705*4882a593Smuzhiyun 	GROUP(i2c_ao_sda_5, 2),
706*4882a593Smuzhiyun 	GROUP(i2c_ao_sck_8, 2),
707*4882a593Smuzhiyun 	GROUP(i2c_ao_sda_9, 2),
708*4882a593Smuzhiyun 	GROUP(i2c_ao_sck_10, 2),
709*4882a593Smuzhiyun 	GROUP(i2c_ao_sda_11, 2),
710*4882a593Smuzhiyun 	GROUP(i2c_ao_slave_sck, 1),
711*4882a593Smuzhiyun 	GROUP(i2c_ao_slave_sda, 1),
712*4882a593Smuzhiyun 	GROUP(remote_input_ao, 1),
713*4882a593Smuzhiyun 	GROUP(remote_out_ao, 1),
714*4882a593Smuzhiyun 	GROUP(pwm_ao_a, 3),
715*4882a593Smuzhiyun 	GROUP(pwm_ao_b_ao2, 3),
716*4882a593Smuzhiyun 	GROUP(pwm_ao_b_ao12, 3),
717*4882a593Smuzhiyun 	GROUP(pwm_ao_c_ao8, 3),
718*4882a593Smuzhiyun 	GROUP(pwm_ao_c_ao13, 3),
719*4882a593Smuzhiyun 	GROUP(pwm_ao_d, 3),
720*4882a593Smuzhiyun 	GROUP(jtag_ao_tdi, 4),
721*4882a593Smuzhiyun 	GROUP(jtag_ao_tdo, 4),
722*4882a593Smuzhiyun 	GROUP(jtag_ao_clk, 4),
723*4882a593Smuzhiyun 	GROUP(jtag_ao_tms, 4),
724*4882a593Smuzhiyun 	GROUP(gen_clk_ee, 4),
725*4882a593Smuzhiyun };
726*4882a593Smuzhiyun 
727*4882a593Smuzhiyun static const char * const gpio_periphs_groups[] = {
728*4882a593Smuzhiyun 	"GPIOZ_0", "GPIOZ_1", "GPIOZ_2", "GPIOZ_3", "GPIOZ_4",
729*4882a593Smuzhiyun 	"GPIOZ_5", "GPIOZ_6", "GPIOZ_7", "GPIOZ_8", "GPIOZ_9",
730*4882a593Smuzhiyun 	"GPIOZ_10",
731*4882a593Smuzhiyun 
732*4882a593Smuzhiyun 	"BOOT_0", "BOOT_1", "BOOT_2", "BOOT_3", "BOOT_4",
733*4882a593Smuzhiyun 	"BOOT_5", "BOOT_6", "BOOT_7", "BOOT_8", "BOOT_9",
734*4882a593Smuzhiyun 	"BOOT_10", "BOOT_11", "BOOT_12", "BOOT_13", "BOOT_14",
735*4882a593Smuzhiyun 
736*4882a593Smuzhiyun 	"GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4",
737*4882a593Smuzhiyun 	"GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9",
738*4882a593Smuzhiyun 	"GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14",
739*4882a593Smuzhiyun 	"GPIOA_15", "GPIOA_16", "GPIOA_17", "GPIOA_18", "GPIOA_19",
740*4882a593Smuzhiyun 	"GPIOA_20",
741*4882a593Smuzhiyun 
742*4882a593Smuzhiyun 	"GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4",
743*4882a593Smuzhiyun 	"GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9",
744*4882a593Smuzhiyun 	"GPIOX_10", "GPIOX_11", "GPIOX_12", "GPIOX_13", "GPIOX_14",
745*4882a593Smuzhiyun 	"GPIOX_15", "GPIOX_16", "GPIOX_17", "GPIOX_18", "GPIOX_19",
746*4882a593Smuzhiyun 	"GPIOX_20", "GPIOX_21", "GPIOX_22",
747*4882a593Smuzhiyun 
748*4882a593Smuzhiyun 	"GPIOY_0", "GPIOY_1", "GPIOY_2", "GPIOY_3", "GPIOY_4",
749*4882a593Smuzhiyun 	"GPIOY_5", "GPIOY_6", "GPIOY_7", "GPIOY_8", "GPIOY_9",
750*4882a593Smuzhiyun 	"GPIOY_10", "GPIOY_11", "GPIOY_12", "GPIOY_13", "GPIOY_14",
751*4882a593Smuzhiyun 	"GPIOY_15",
752*4882a593Smuzhiyun };
753*4882a593Smuzhiyun 
754*4882a593Smuzhiyun static const char * const emmc_groups[] = {
755*4882a593Smuzhiyun 	"emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2",
756*4882a593Smuzhiyun 	"emmc_nand_d3", "emmc_nand_d4", "emmc_nand_d5",
757*4882a593Smuzhiyun 	"emmc_nand_d6", "emmc_nand_d7",
758*4882a593Smuzhiyun 	"emmc_clk", "emmc_cmd", "emmc_ds",
759*4882a593Smuzhiyun };
760*4882a593Smuzhiyun 
761*4882a593Smuzhiyun static const char * const nand_groups[] = {
762*4882a593Smuzhiyun 	"emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2",
763*4882a593Smuzhiyun 	"emmc_nand_d3", "emmc_nand_d4", "emmc_nand_d5",
764*4882a593Smuzhiyun 	"emmc_nand_d6", "emmc_nand_d7",
765*4882a593Smuzhiyun 	"nand_ce0", "nand_ale", "nand_cle",
766*4882a593Smuzhiyun 	"nand_wen_clk", "nand_ren_wr", "nand_rb0",
767*4882a593Smuzhiyun };
768*4882a593Smuzhiyun 
769*4882a593Smuzhiyun static const char * const nor_groups[] = {
770*4882a593Smuzhiyun 	"nor_d", "nor_q", "nor_c", "nor_cs",
771*4882a593Smuzhiyun 	"nor_hold", "nor_wp",
772*4882a593Smuzhiyun };
773*4882a593Smuzhiyun 
774*4882a593Smuzhiyun static const char * const sdio_groups[] = {
775*4882a593Smuzhiyun 	"sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3",
776*4882a593Smuzhiyun 	"sdio_cmd", "sdio_clk",
777*4882a593Smuzhiyun };
778*4882a593Smuzhiyun 
779*4882a593Smuzhiyun static const char * const spi0_groups[] = {
780*4882a593Smuzhiyun 	"spi0_clk", "spi0_mosi", "spi0_miso", "spi0_ss0",
781*4882a593Smuzhiyun 	"spi0_ss1", "spi0_ss2"
782*4882a593Smuzhiyun };
783*4882a593Smuzhiyun 
784*4882a593Smuzhiyun static const char * const spi1_groups[] = {
785*4882a593Smuzhiyun 	"spi1_clk_x", "spi1_mosi_x", "spi1_miso_x", "spi1_ss0_x",
786*4882a593Smuzhiyun 	"spi1_clk_a", "spi1_mosi_a", "spi1_miso_a", "spi1_ss0_a",
787*4882a593Smuzhiyun 	"spi1_ss1"
788*4882a593Smuzhiyun };
789*4882a593Smuzhiyun 
790*4882a593Smuzhiyun static const char * const uart_a_groups[] = {
791*4882a593Smuzhiyun 	"uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a",
792*4882a593Smuzhiyun };
793*4882a593Smuzhiyun 
794*4882a593Smuzhiyun static const char * const uart_b_groups[] = {
795*4882a593Smuzhiyun 	"uart_tx_b_z", "uart_rx_b_z", "uart_cts_b_z", "uart_rts_b_z",
796*4882a593Smuzhiyun 	"uart_tx_b_x", "uart_rx_b_x", "uart_cts_b_x", "uart_rts_b_x",
797*4882a593Smuzhiyun };
798*4882a593Smuzhiyun 
799*4882a593Smuzhiyun static const char * const uart_ao_b_z_groups[] = {
800*4882a593Smuzhiyun 	"uart_ao_tx_b_z", "uart_ao_rx_b_z",
801*4882a593Smuzhiyun 	"uart_ao_cts_b_z", "uart_ao_rts_b_z",
802*4882a593Smuzhiyun };
803*4882a593Smuzhiyun 
804*4882a593Smuzhiyun static const char * const i2c0_groups[] = {
805*4882a593Smuzhiyun 	"i2c0_sck", "i2c0_sda",
806*4882a593Smuzhiyun };
807*4882a593Smuzhiyun 
808*4882a593Smuzhiyun static const char * const i2c1_groups[] = {
809*4882a593Smuzhiyun 	"i2c1_sck_z", "i2c1_sda_z",
810*4882a593Smuzhiyun 	"i2c1_sck_x", "i2c1_sda_x",
811*4882a593Smuzhiyun };
812*4882a593Smuzhiyun 
813*4882a593Smuzhiyun static const char * const i2c2_groups[] = {
814*4882a593Smuzhiyun 	"i2c2_sck_x", "i2c2_sda_x",
815*4882a593Smuzhiyun 	"i2c2_sda_a", "i2c2_sck_a",
816*4882a593Smuzhiyun };
817*4882a593Smuzhiyun 
818*4882a593Smuzhiyun static const char * const i2c3_groups[] = {
819*4882a593Smuzhiyun 	"i2c3_sda_a6", "i2c3_sck_a7",
820*4882a593Smuzhiyun 	"i2c3_sda_a12", "i2c3_sck_a13",
821*4882a593Smuzhiyun 	"i2c3_sda_a19", "i2c3_sck_a20",
822*4882a593Smuzhiyun };
823*4882a593Smuzhiyun 
824*4882a593Smuzhiyun static const char * const eth_groups[] = {
825*4882a593Smuzhiyun 	"eth_rxd2_rgmii", "eth_rxd3_rgmii", "eth_rgmii_tx_clk",
826*4882a593Smuzhiyun 	"eth_txd2_rgmii", "eth_txd3_rgmii",
827*4882a593Smuzhiyun 	"eth_txd0_x", "eth_txd1_x", "eth_txen_x", "eth_rgmii_rx_clk_x",
828*4882a593Smuzhiyun 	"eth_rxd0_x", "eth_rxd1_x", "eth_rx_dv_x", "eth_mdio_x",
829*4882a593Smuzhiyun 	"eth_mdc_x",
830*4882a593Smuzhiyun 	"eth_txd0_y", "eth_txd1_y", "eth_txen_y", "eth_rgmii_rx_clk_y",
831*4882a593Smuzhiyun 	"eth_rxd0_y", "eth_rxd1_y", "eth_rx_dv_y", "eth_mdio_y",
832*4882a593Smuzhiyun 	"eth_mdc_y",
833*4882a593Smuzhiyun };
834*4882a593Smuzhiyun 
835*4882a593Smuzhiyun static const char * const pwm_a_groups[] = {
836*4882a593Smuzhiyun 	"pwm_a_z", "pwm_a_x18", "pwm_a_x20", "pwm_a_a",
837*4882a593Smuzhiyun };
838*4882a593Smuzhiyun 
839*4882a593Smuzhiyun static const char * const pwm_b_groups[] = {
840*4882a593Smuzhiyun 	"pwm_b_z", "pwm_b_x", "pwm_b_a",
841*4882a593Smuzhiyun };
842*4882a593Smuzhiyun 
843*4882a593Smuzhiyun static const char * const pwm_c_groups[] = {
844*4882a593Smuzhiyun 	"pwm_c_x10", "pwm_c_x17", "pwm_c_a",
845*4882a593Smuzhiyun };
846*4882a593Smuzhiyun 
847*4882a593Smuzhiyun static const char * const pwm_d_groups[] = {
848*4882a593Smuzhiyun 	"pwm_d_x11", "pwm_d_x16",
849*4882a593Smuzhiyun };
850*4882a593Smuzhiyun 
851*4882a593Smuzhiyun static const char * const pwm_vs_groups[] = {
852*4882a593Smuzhiyun 	"pwm_vs",
853*4882a593Smuzhiyun };
854*4882a593Smuzhiyun 
855*4882a593Smuzhiyun static const char * const spdif_out_groups[] = {
856*4882a593Smuzhiyun 	"spdif_out_z", "spdif_out_a1", "spdif_out_a11",
857*4882a593Smuzhiyun 	"spdif_out_a19", "spdif_out_a20",
858*4882a593Smuzhiyun };
859*4882a593Smuzhiyun 
860*4882a593Smuzhiyun static const char * const spdif_in_groups[] = {
861*4882a593Smuzhiyun 	"spdif_in_z", "spdif_in_a1", "spdif_in_a7",
862*4882a593Smuzhiyun 	"spdif_in_a19", "spdif_in_a20",
863*4882a593Smuzhiyun };
864*4882a593Smuzhiyun 
865*4882a593Smuzhiyun static const char * const jtag_ee_groups[] = {
866*4882a593Smuzhiyun 	"jtag_tdo_x", "jtag_tdi_x", "jtag_clk_x",
867*4882a593Smuzhiyun 	"jtag_tms_x",
868*4882a593Smuzhiyun };
869*4882a593Smuzhiyun 
870*4882a593Smuzhiyun static const char * const pdm_groups[] = {
871*4882a593Smuzhiyun 	"pdm_din0", "pdm_din1", "pdm_din2", "pdm_din3",
872*4882a593Smuzhiyun 	"pdm_dclk_a14", "pdm_dclk_a19",
873*4882a593Smuzhiyun };
874*4882a593Smuzhiyun 
875*4882a593Smuzhiyun static const char * const gpio_aobus_groups[] = {
876*4882a593Smuzhiyun 	"GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4",
877*4882a593Smuzhiyun 	"GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9",
878*4882a593Smuzhiyun 	"GPIOAO_10", "GPIOAO_11", "GPIOAO_12", "GPIOAO_13",
879*4882a593Smuzhiyun 	"GPIO_TEST_N",
880*4882a593Smuzhiyun };
881*4882a593Smuzhiyun 
882*4882a593Smuzhiyun static const char * const uart_ao_a_groups[] = {
883*4882a593Smuzhiyun 	"uart_ao_tx_a", "uart_ao_rx_a", "uart_ao_cts_a", "uart_ao_rts_a",
884*4882a593Smuzhiyun };
885*4882a593Smuzhiyun 
886*4882a593Smuzhiyun static const char * const uart_ao_b_groups[] = {
887*4882a593Smuzhiyun 	"uart_ao_tx_b", "uart_ao_rx_b", "uart_ao_cts_b", "uart_ao_rts_b",
888*4882a593Smuzhiyun };
889*4882a593Smuzhiyun 
890*4882a593Smuzhiyun static const char * const i2c_ao_groups[] = {
891*4882a593Smuzhiyun 	"i2c_ao_sck_4", "i2c_ao_sda_5",
892*4882a593Smuzhiyun 	"i2c_ao_sck_8", "i2c_ao_sda_9",
893*4882a593Smuzhiyun 	"i2c_ao_sck_10", "i2c_ao_sda_11",
894*4882a593Smuzhiyun };
895*4882a593Smuzhiyun 
896*4882a593Smuzhiyun static const char * const i2c_ao_slave_groups[] = {
897*4882a593Smuzhiyun 	"i2c_ao_slave_sck", "i2c_ao_slave_sda",
898*4882a593Smuzhiyun };
899*4882a593Smuzhiyun 
900*4882a593Smuzhiyun static const char * const remote_input_ao_groups[] = {
901*4882a593Smuzhiyun 	"remote_input_ao",
902*4882a593Smuzhiyun };
903*4882a593Smuzhiyun 
904*4882a593Smuzhiyun static const char * const remote_out_ao_groups[] = {
905*4882a593Smuzhiyun 	"remote_out_ao",
906*4882a593Smuzhiyun };
907*4882a593Smuzhiyun 
908*4882a593Smuzhiyun static const char * const pwm_ao_a_groups[] = {
909*4882a593Smuzhiyun 	"pwm_ao_a",
910*4882a593Smuzhiyun };
911*4882a593Smuzhiyun 
912*4882a593Smuzhiyun static const char * const pwm_ao_b_groups[] = {
913*4882a593Smuzhiyun 	"pwm_ao_b_ao2", "pwm_ao_b_ao12",
914*4882a593Smuzhiyun };
915*4882a593Smuzhiyun 
916*4882a593Smuzhiyun static const char * const pwm_ao_c_groups[] = {
917*4882a593Smuzhiyun 	"pwm_ao_c_ao8", "pwm_ao_c_ao13",
918*4882a593Smuzhiyun };
919*4882a593Smuzhiyun 
920*4882a593Smuzhiyun static const char * const pwm_ao_d_groups[] = {
921*4882a593Smuzhiyun 	"pwm_ao_d",
922*4882a593Smuzhiyun };
923*4882a593Smuzhiyun 
924*4882a593Smuzhiyun static const char * const jtag_ao_groups[] = {
925*4882a593Smuzhiyun 	"jtag_ao_tdi", "jtag_ao_tdo", "jtag_ao_clk", "jtag_ao_tms",
926*4882a593Smuzhiyun };
927*4882a593Smuzhiyun 
928*4882a593Smuzhiyun static const char * const mclk_c_groups[] = {
929*4882a593Smuzhiyun 	"mclk_c",
930*4882a593Smuzhiyun };
931*4882a593Smuzhiyun 
932*4882a593Smuzhiyun static const char * const mclk_b_groups[] = {
933*4882a593Smuzhiyun 	"mclk_b",
934*4882a593Smuzhiyun };
935*4882a593Smuzhiyun 
936*4882a593Smuzhiyun static const char * const tdma_groups[] = {
937*4882a593Smuzhiyun 	"tdma_sclk", "tdma_sclk_slv", "tdma_fs", "tdma_fs_slv",
938*4882a593Smuzhiyun 	"tdma_din0", "tdma_dout0_x14", "tdma_dout0_x15", "tdma_dout1",
939*4882a593Smuzhiyun 	"tdma_din1",
940*4882a593Smuzhiyun };
941*4882a593Smuzhiyun 
942*4882a593Smuzhiyun static const char * const tdmc_groups[] = {
943*4882a593Smuzhiyun 	"tdmc_sclk", "tdmc_sclk_slv", "tdmc_fs", "tdmc_fs_slv",
944*4882a593Smuzhiyun 	"tdmc_din0", "tdmc_dout0", "tdmc_din1",	"tdmc_dout1",
945*4882a593Smuzhiyun 	"tdmc_din2", "tdmc_dout2", "tdmc_din3",	"tdmc_dout3",
946*4882a593Smuzhiyun };
947*4882a593Smuzhiyun 
948*4882a593Smuzhiyun static const char * const tdmb_groups[] = {
949*4882a593Smuzhiyun 	"tdmb_sclk", "tdmb_sclk_slv", "tdmb_fs", "tdmb_fs_slv",
950*4882a593Smuzhiyun 	"tdmb_din0", "tdmb_dout0", "tdmb_din1",	"tdmb_dout1",
951*4882a593Smuzhiyun 	"tdmb_din2", "tdmb_dout2", "tdmb_din3",	"tdmb_dout3",
952*4882a593Smuzhiyun };
953*4882a593Smuzhiyun 
954*4882a593Smuzhiyun static const char * const gen_clk_ee_groups[] = {
955*4882a593Smuzhiyun 	"gen_clk_ee",
956*4882a593Smuzhiyun };
957*4882a593Smuzhiyun 
958*4882a593Smuzhiyun static struct meson_pmx_func meson_axg_periphs_functions[] = {
959*4882a593Smuzhiyun 	FUNCTION(gpio_periphs),
960*4882a593Smuzhiyun 	FUNCTION(emmc),
961*4882a593Smuzhiyun 	FUNCTION(nor),
962*4882a593Smuzhiyun 	FUNCTION(spi0),
963*4882a593Smuzhiyun 	FUNCTION(spi1),
964*4882a593Smuzhiyun 	FUNCTION(sdio),
965*4882a593Smuzhiyun 	FUNCTION(nand),
966*4882a593Smuzhiyun 	FUNCTION(uart_a),
967*4882a593Smuzhiyun 	FUNCTION(uart_b),
968*4882a593Smuzhiyun 	FUNCTION(uart_ao_b_z),
969*4882a593Smuzhiyun 	FUNCTION(i2c0),
970*4882a593Smuzhiyun 	FUNCTION(i2c1),
971*4882a593Smuzhiyun 	FUNCTION(i2c2),
972*4882a593Smuzhiyun 	FUNCTION(i2c3),
973*4882a593Smuzhiyun 	FUNCTION(eth),
974*4882a593Smuzhiyun 	FUNCTION(pwm_a),
975*4882a593Smuzhiyun 	FUNCTION(pwm_b),
976*4882a593Smuzhiyun 	FUNCTION(pwm_c),
977*4882a593Smuzhiyun 	FUNCTION(pwm_d),
978*4882a593Smuzhiyun 	FUNCTION(pwm_vs),
979*4882a593Smuzhiyun 	FUNCTION(spdif_out),
980*4882a593Smuzhiyun 	FUNCTION(spdif_in),
981*4882a593Smuzhiyun 	FUNCTION(jtag_ee),
982*4882a593Smuzhiyun 	FUNCTION(pdm),
983*4882a593Smuzhiyun 	FUNCTION(mclk_b),
984*4882a593Smuzhiyun 	FUNCTION(mclk_c),
985*4882a593Smuzhiyun 	FUNCTION(tdma),
986*4882a593Smuzhiyun 	FUNCTION(tdmb),
987*4882a593Smuzhiyun 	FUNCTION(tdmc),
988*4882a593Smuzhiyun };
989*4882a593Smuzhiyun 
990*4882a593Smuzhiyun static struct meson_pmx_func meson_axg_aobus_functions[] = {
991*4882a593Smuzhiyun 	FUNCTION(gpio_aobus),
992*4882a593Smuzhiyun 	FUNCTION(uart_ao_a),
993*4882a593Smuzhiyun 	FUNCTION(uart_ao_b),
994*4882a593Smuzhiyun 	FUNCTION(i2c_ao),
995*4882a593Smuzhiyun 	FUNCTION(i2c_ao_slave),
996*4882a593Smuzhiyun 	FUNCTION(remote_input_ao),
997*4882a593Smuzhiyun 	FUNCTION(remote_out_ao),
998*4882a593Smuzhiyun 	FUNCTION(pwm_ao_a),
999*4882a593Smuzhiyun 	FUNCTION(pwm_ao_b),
1000*4882a593Smuzhiyun 	FUNCTION(pwm_ao_c),
1001*4882a593Smuzhiyun 	FUNCTION(pwm_ao_d),
1002*4882a593Smuzhiyun 	FUNCTION(jtag_ao),
1003*4882a593Smuzhiyun 	FUNCTION(gen_clk_ee),
1004*4882a593Smuzhiyun };
1005*4882a593Smuzhiyun 
1006*4882a593Smuzhiyun static struct meson_bank meson_axg_periphs_banks[] = {
1007*4882a593Smuzhiyun 	/*   name    first      last       irq	     pullen  pull    dir     out     in  */
1008*4882a593Smuzhiyun 	BANK("Z",    GPIOZ_0,	GPIOZ_10, 14,  24, 3,  0,  3,  0,  9,  0,  10, 0,  11, 0),
1009*4882a593Smuzhiyun 	BANK("BOOT", BOOT_0,	BOOT_14,  25,  39, 4,  0,  4,  0,  12, 0,  13, 0,  14, 0),
1010*4882a593Smuzhiyun 	BANK("A",    GPIOA_0,	GPIOA_20, 40,  60, 0,  0,  0,  0,  0,  0,  1,  0,  2,  0),
1011*4882a593Smuzhiyun 	BANK("X",    GPIOX_0,	GPIOX_22, 61,  83, 2,  0,  2,  0,  6,  0,  7,  0,  8,  0),
1012*4882a593Smuzhiyun 	BANK("Y", 	 GPIOY_0,	GPIOY_15, 84,  99, 1,  0,  1,  0,  3,  0,  4,  0,  5,  0),
1013*4882a593Smuzhiyun };
1014*4882a593Smuzhiyun 
1015*4882a593Smuzhiyun static struct meson_bank meson_axg_aobus_banks[] = {
1016*4882a593Smuzhiyun 	/*   name    first      last      irq	pullen  pull    dir     out     in  */
1017*4882a593Smuzhiyun 	BANK("AO",   GPIOAO_0,  GPIOAO_13, 0, 13, 0,  16,  0, 0,  0,  0,  0, 16,  1,  0),
1018*4882a593Smuzhiyun };
1019*4882a593Smuzhiyun 
1020*4882a593Smuzhiyun static struct meson_pmx_bank meson_axg_periphs_pmx_banks[] = {
1021*4882a593Smuzhiyun 	/*	 name	 first		lask	   reg	offset  */
1022*4882a593Smuzhiyun 	BANK_PMX("Z",	 GPIOZ_0, GPIOZ_10, 0x2, 0),
1023*4882a593Smuzhiyun 	BANK_PMX("BOOT", BOOT_0,  BOOT_14,  0x0, 0),
1024*4882a593Smuzhiyun 	BANK_PMX("A",	 GPIOA_0, GPIOA_20, 0xb, 0),
1025*4882a593Smuzhiyun 	BANK_PMX("X",	 GPIOX_0, GPIOX_22, 0x4, 0),
1026*4882a593Smuzhiyun 	BANK_PMX("Y",	 GPIOY_0, GPIOY_15, 0x8, 0),
1027*4882a593Smuzhiyun };
1028*4882a593Smuzhiyun 
1029*4882a593Smuzhiyun static struct meson_axg_pmx_data meson_axg_periphs_pmx_banks_data = {
1030*4882a593Smuzhiyun 	.pmx_banks	= meson_axg_periphs_pmx_banks,
1031*4882a593Smuzhiyun 	.num_pmx_banks = ARRAY_SIZE(meson_axg_periphs_pmx_banks),
1032*4882a593Smuzhiyun };
1033*4882a593Smuzhiyun 
1034*4882a593Smuzhiyun static struct meson_pmx_bank meson_axg_aobus_pmx_banks[] = {
1035*4882a593Smuzhiyun 	BANK_PMX("AO", GPIOAO_0, GPIOAO_13, 0x0, 0),
1036*4882a593Smuzhiyun };
1037*4882a593Smuzhiyun 
1038*4882a593Smuzhiyun static struct meson_axg_pmx_data meson_axg_aobus_pmx_banks_data = {
1039*4882a593Smuzhiyun 	.pmx_banks	= meson_axg_aobus_pmx_banks,
1040*4882a593Smuzhiyun 	.num_pmx_banks = ARRAY_SIZE(meson_axg_aobus_pmx_banks),
1041*4882a593Smuzhiyun };
1042*4882a593Smuzhiyun 
1043*4882a593Smuzhiyun static struct meson_pinctrl_data meson_axg_periphs_pinctrl_data = {
1044*4882a593Smuzhiyun 	.name		= "periphs-banks",
1045*4882a593Smuzhiyun 	.pins		= meson_axg_periphs_pins,
1046*4882a593Smuzhiyun 	.groups		= meson_axg_periphs_groups,
1047*4882a593Smuzhiyun 	.funcs		= meson_axg_periphs_functions,
1048*4882a593Smuzhiyun 	.banks		= meson_axg_periphs_banks,
1049*4882a593Smuzhiyun 	.num_pins	= ARRAY_SIZE(meson_axg_periphs_pins),
1050*4882a593Smuzhiyun 	.num_groups	= ARRAY_SIZE(meson_axg_periphs_groups),
1051*4882a593Smuzhiyun 	.num_funcs	= ARRAY_SIZE(meson_axg_periphs_functions),
1052*4882a593Smuzhiyun 	.num_banks	= ARRAY_SIZE(meson_axg_periphs_banks),
1053*4882a593Smuzhiyun 	.pmx_ops	= &meson_axg_pmx_ops,
1054*4882a593Smuzhiyun 	.pmx_data	= &meson_axg_periphs_pmx_banks_data,
1055*4882a593Smuzhiyun };
1056*4882a593Smuzhiyun 
1057*4882a593Smuzhiyun static struct meson_pinctrl_data meson_axg_aobus_pinctrl_data = {
1058*4882a593Smuzhiyun 	.name		= "aobus-banks",
1059*4882a593Smuzhiyun 	.pins		= meson_axg_aobus_pins,
1060*4882a593Smuzhiyun 	.groups		= meson_axg_aobus_groups,
1061*4882a593Smuzhiyun 	.funcs		= meson_axg_aobus_functions,
1062*4882a593Smuzhiyun 	.banks		= meson_axg_aobus_banks,
1063*4882a593Smuzhiyun 	.num_pins	= ARRAY_SIZE(meson_axg_aobus_pins),
1064*4882a593Smuzhiyun 	.num_groups	= ARRAY_SIZE(meson_axg_aobus_groups),
1065*4882a593Smuzhiyun 	.num_funcs	= ARRAY_SIZE(meson_axg_aobus_functions),
1066*4882a593Smuzhiyun 	.num_banks	= ARRAY_SIZE(meson_axg_aobus_banks),
1067*4882a593Smuzhiyun 	.pmx_ops	= &meson_axg_pmx_ops,
1068*4882a593Smuzhiyun 	.pmx_data	= &meson_axg_aobus_pmx_banks_data,
1069*4882a593Smuzhiyun 	.parse_dt	= meson8_aobus_parse_dt_extra,
1070*4882a593Smuzhiyun };
1071*4882a593Smuzhiyun 
1072*4882a593Smuzhiyun static const struct of_device_id meson_axg_pinctrl_dt_match[] = {
1073*4882a593Smuzhiyun 	{
1074*4882a593Smuzhiyun 		.compatible = "amlogic,meson-axg-periphs-pinctrl",
1075*4882a593Smuzhiyun 		.data = &meson_axg_periphs_pinctrl_data,
1076*4882a593Smuzhiyun 	},
1077*4882a593Smuzhiyun 	{
1078*4882a593Smuzhiyun 		.compatible = "amlogic,meson-axg-aobus-pinctrl",
1079*4882a593Smuzhiyun 		.data = &meson_axg_aobus_pinctrl_data,
1080*4882a593Smuzhiyun 	},
1081*4882a593Smuzhiyun 	{ },
1082*4882a593Smuzhiyun };
1083*4882a593Smuzhiyun MODULE_DEVICE_TABLE(of, meson_axg_pinctrl_dt_match);
1084*4882a593Smuzhiyun 
1085*4882a593Smuzhiyun static struct platform_driver meson_axg_pinctrl_driver = {
1086*4882a593Smuzhiyun 	.probe		= meson_pinctrl_probe,
1087*4882a593Smuzhiyun 	.driver = {
1088*4882a593Smuzhiyun 		.name	= "meson-axg-pinctrl",
1089*4882a593Smuzhiyun 		.of_match_table = meson_axg_pinctrl_dt_match,
1090*4882a593Smuzhiyun 	},
1091*4882a593Smuzhiyun };
1092*4882a593Smuzhiyun 
1093*4882a593Smuzhiyun module_platform_driver(meson_axg_pinctrl_driver);
1094*4882a593Smuzhiyun MODULE_LICENSE("Dual BSD/GPL");
1095