129ae0952SYixun Lan // SPDX-License-Identifier: (GPL-2.0+ or MIT)
229ae0952SYixun Lan /*
329ae0952SYixun Lan  * Pin controller and GPIO driver for Amlogic Meson G12A SoC.
429ae0952SYixun Lan  *
529ae0952SYixun Lan  * Copyright (c) 2018 Amlogic, Inc. All rights reserved.
629ae0952SYixun Lan  * Author: Xingyu Chen <xingyu.chen@amlogic.com>
729ae0952SYixun Lan  * Author: Yixun Lan <yixun.lan@amlogic.com>
829ae0952SYixun Lan  */
929ae0952SYixun Lan 
1029ae0952SYixun Lan #include <dt-bindings/gpio/meson-g12a-gpio.h>
1129ae0952SYixun Lan #include "pinctrl-meson.h"
1229ae0952SYixun Lan #include "pinctrl-meson-axg-pmx.h"
1329ae0952SYixun Lan 
1429ae0952SYixun Lan static const struct pinctrl_pin_desc meson_g12a_periphs_pins[] = {
1529ae0952SYixun Lan 	MESON_PIN(GPIOZ_0),
1629ae0952SYixun Lan 	MESON_PIN(GPIOZ_1),
1729ae0952SYixun Lan 	MESON_PIN(GPIOZ_2),
1829ae0952SYixun Lan 	MESON_PIN(GPIOZ_3),
1929ae0952SYixun Lan 	MESON_PIN(GPIOZ_4),
2029ae0952SYixun Lan 	MESON_PIN(GPIOZ_5),
2129ae0952SYixun Lan 	MESON_PIN(GPIOZ_6),
2229ae0952SYixun Lan 	MESON_PIN(GPIOZ_7),
2329ae0952SYixun Lan 	MESON_PIN(GPIOZ_8),
2429ae0952SYixun Lan 	MESON_PIN(GPIOZ_9),
2529ae0952SYixun Lan 	MESON_PIN(GPIOZ_10),
2629ae0952SYixun Lan 	MESON_PIN(GPIOZ_11),
2729ae0952SYixun Lan 	MESON_PIN(GPIOZ_12),
2829ae0952SYixun Lan 	MESON_PIN(GPIOZ_13),
2929ae0952SYixun Lan 	MESON_PIN(GPIOZ_14),
3029ae0952SYixun Lan 	MESON_PIN(GPIOZ_15),
3129ae0952SYixun Lan 	MESON_PIN(GPIOH_0),
3229ae0952SYixun Lan 	MESON_PIN(GPIOH_1),
3329ae0952SYixun Lan 	MESON_PIN(GPIOH_2),
3429ae0952SYixun Lan 	MESON_PIN(GPIOH_3),
3529ae0952SYixun Lan 	MESON_PIN(GPIOH_4),
3629ae0952SYixun Lan 	MESON_PIN(GPIOH_5),
3729ae0952SYixun Lan 	MESON_PIN(GPIOH_6),
3829ae0952SYixun Lan 	MESON_PIN(GPIOH_7),
3929ae0952SYixun Lan 	MESON_PIN(GPIOH_8),
4029ae0952SYixun Lan 	MESON_PIN(BOOT_0),
4129ae0952SYixun Lan 	MESON_PIN(BOOT_1),
4229ae0952SYixun Lan 	MESON_PIN(BOOT_2),
4329ae0952SYixun Lan 	MESON_PIN(BOOT_3),
4429ae0952SYixun Lan 	MESON_PIN(BOOT_4),
4529ae0952SYixun Lan 	MESON_PIN(BOOT_5),
4629ae0952SYixun Lan 	MESON_PIN(BOOT_6),
4729ae0952SYixun Lan 	MESON_PIN(BOOT_7),
4829ae0952SYixun Lan 	MESON_PIN(BOOT_8),
4929ae0952SYixun Lan 	MESON_PIN(BOOT_9),
5029ae0952SYixun Lan 	MESON_PIN(BOOT_10),
5129ae0952SYixun Lan 	MESON_PIN(BOOT_11),
5229ae0952SYixun Lan 	MESON_PIN(BOOT_12),
5329ae0952SYixun Lan 	MESON_PIN(BOOT_13),
5429ae0952SYixun Lan 	MESON_PIN(BOOT_14),
5529ae0952SYixun Lan 	MESON_PIN(BOOT_15),
5629ae0952SYixun Lan 	MESON_PIN(GPIOC_0),
5729ae0952SYixun Lan 	MESON_PIN(GPIOC_1),
5829ae0952SYixun Lan 	MESON_PIN(GPIOC_2),
5929ae0952SYixun Lan 	MESON_PIN(GPIOC_3),
6029ae0952SYixun Lan 	MESON_PIN(GPIOC_4),
6129ae0952SYixun Lan 	MESON_PIN(GPIOC_5),
6229ae0952SYixun Lan 	MESON_PIN(GPIOC_6),
6329ae0952SYixun Lan 	MESON_PIN(GPIOC_7),
6429ae0952SYixun Lan 	MESON_PIN(GPIOA_0),
6529ae0952SYixun Lan 	MESON_PIN(GPIOA_1),
6629ae0952SYixun Lan 	MESON_PIN(GPIOA_2),
6729ae0952SYixun Lan 	MESON_PIN(GPIOA_3),
6829ae0952SYixun Lan 	MESON_PIN(GPIOA_4),
6929ae0952SYixun Lan 	MESON_PIN(GPIOA_5),
7029ae0952SYixun Lan 	MESON_PIN(GPIOA_6),
7129ae0952SYixun Lan 	MESON_PIN(GPIOA_7),
7229ae0952SYixun Lan 	MESON_PIN(GPIOA_8),
7329ae0952SYixun Lan 	MESON_PIN(GPIOA_9),
7429ae0952SYixun Lan 	MESON_PIN(GPIOA_10),
7529ae0952SYixun Lan 	MESON_PIN(GPIOA_11),
7629ae0952SYixun Lan 	MESON_PIN(GPIOA_12),
7729ae0952SYixun Lan 	MESON_PIN(GPIOA_13),
7829ae0952SYixun Lan 	MESON_PIN(GPIOA_14),
7929ae0952SYixun Lan 	MESON_PIN(GPIOA_15),
8029ae0952SYixun Lan 	MESON_PIN(GPIOX_0),
8129ae0952SYixun Lan 	MESON_PIN(GPIOX_1),
8229ae0952SYixun Lan 	MESON_PIN(GPIOX_2),
8329ae0952SYixun Lan 	MESON_PIN(GPIOX_3),
8429ae0952SYixun Lan 	MESON_PIN(GPIOX_4),
8529ae0952SYixun Lan 	MESON_PIN(GPIOX_5),
8629ae0952SYixun Lan 	MESON_PIN(GPIOX_6),
8729ae0952SYixun Lan 	MESON_PIN(GPIOX_7),
8829ae0952SYixun Lan 	MESON_PIN(GPIOX_8),
8929ae0952SYixun Lan 	MESON_PIN(GPIOX_9),
9029ae0952SYixun Lan 	MESON_PIN(GPIOX_10),
9129ae0952SYixun Lan 	MESON_PIN(GPIOX_11),
9229ae0952SYixun Lan 	MESON_PIN(GPIOX_12),
9329ae0952SYixun Lan 	MESON_PIN(GPIOX_13),
9429ae0952SYixun Lan 	MESON_PIN(GPIOX_14),
9529ae0952SYixun Lan 	MESON_PIN(GPIOX_15),
9629ae0952SYixun Lan 	MESON_PIN(GPIOX_16),
9729ae0952SYixun Lan 	MESON_PIN(GPIOX_17),
9829ae0952SYixun Lan 	MESON_PIN(GPIOX_18),
9929ae0952SYixun Lan 	MESON_PIN(GPIOX_19),
10029ae0952SYixun Lan };
10129ae0952SYixun Lan 
10229ae0952SYixun Lan static const struct pinctrl_pin_desc meson_g12a_aobus_pins[] = {
10329ae0952SYixun Lan 	MESON_PIN(GPIOAO_0),
10429ae0952SYixun Lan 	MESON_PIN(GPIOAO_1),
10529ae0952SYixun Lan 	MESON_PIN(GPIOAO_2),
10629ae0952SYixun Lan 	MESON_PIN(GPIOAO_3),
10729ae0952SYixun Lan 	MESON_PIN(GPIOAO_4),
10829ae0952SYixun Lan 	MESON_PIN(GPIOAO_5),
10929ae0952SYixun Lan 	MESON_PIN(GPIOAO_6),
11029ae0952SYixun Lan 	MESON_PIN(GPIOAO_7),
11129ae0952SYixun Lan 	MESON_PIN(GPIOAO_8),
11229ae0952SYixun Lan 	MESON_PIN(GPIOAO_9),
11329ae0952SYixun Lan 	MESON_PIN(GPIOAO_10),
11429ae0952SYixun Lan 	MESON_PIN(GPIOAO_11),
11529ae0952SYixun Lan 	MESON_PIN(GPIOE_0),
11629ae0952SYixun Lan 	MESON_PIN(GPIOE_1),
11729ae0952SYixun Lan 	MESON_PIN(GPIOE_2),
11829ae0952SYixun Lan };
11929ae0952SYixun Lan 
12029ae0952SYixun Lan /* emmc */
12129ae0952SYixun Lan static const unsigned int emmc_nand_d0_pins[]		= { BOOT_0 };
12229ae0952SYixun Lan static const unsigned int emmc_nand_d1_pins[]		= { BOOT_1 };
12329ae0952SYixun Lan static const unsigned int emmc_nand_d2_pins[]		= { BOOT_2 };
12429ae0952SYixun Lan static const unsigned int emmc_nand_d3_pins[]		= { BOOT_3 };
12529ae0952SYixun Lan static const unsigned int emmc_nand_d4_pins[]		= { BOOT_4 };
12629ae0952SYixun Lan static const unsigned int emmc_nand_d5_pins[]		= { BOOT_5 };
12729ae0952SYixun Lan static const unsigned int emmc_nand_d6_pins[]		= { BOOT_6 };
12829ae0952SYixun Lan static const unsigned int emmc_nand_d7_pins[]		= { BOOT_7 };
12929ae0952SYixun Lan static const unsigned int emmc_clk_pins[]		= { BOOT_8 };
13029ae0952SYixun Lan static const unsigned int emmc_cmd_pins[]		= { BOOT_10 };
13129ae0952SYixun Lan static const unsigned int emmc_nand_ds_pins[]		= { BOOT_13 };
13229ae0952SYixun Lan 
13329ae0952SYixun Lan /* nand */
13429ae0952SYixun Lan static const unsigned int nand_wen_clk_pins[]		= { BOOT_8 };
13529ae0952SYixun Lan static const unsigned int nand_ale_pins[]		= { BOOT_9 };
13629ae0952SYixun Lan static const unsigned int nand_cle_pins[]		= { BOOT_10 };
13729ae0952SYixun Lan static const unsigned int nand_ce0_pins[]		= { BOOT_11 };
13829ae0952SYixun Lan static const unsigned int nand_ren_wr_pins[]		= { BOOT_12 };
13929ae0952SYixun Lan static const unsigned int nand_rb0_pins[]		= { BOOT_14 };
14029ae0952SYixun Lan static const unsigned int nand_ce1_pins[]		= { BOOT_15 };
14129ae0952SYixun Lan 
14229ae0952SYixun Lan /* nor */
14329ae0952SYixun Lan static const unsigned int nor_hold_pins[]		= { BOOT_3 };
14429ae0952SYixun Lan static const unsigned int nor_d_pins[]			= { BOOT_4 };
14529ae0952SYixun Lan static const unsigned int nor_q_pins[]			= { BOOT_5 };
14629ae0952SYixun Lan static const unsigned int nor_c_pins[]			= { BOOT_6 };
14729ae0952SYixun Lan static const unsigned int nor_wp_pins[]			= { BOOT_7 };
14829ae0952SYixun Lan static const unsigned int nor_cs_pins[]			= { BOOT_14 };
14929ae0952SYixun Lan 
15029ae0952SYixun Lan /* sdio */
15129ae0952SYixun Lan static const unsigned int sdio_d0_pins[]		= { GPIOX_0 };
15229ae0952SYixun Lan static const unsigned int sdio_d1_pins[]		= { GPIOX_1 };
15329ae0952SYixun Lan static const unsigned int sdio_d2_pins[]		= { GPIOX_2 };
15429ae0952SYixun Lan static const unsigned int sdio_d3_pins[]		= { GPIOX_3 };
15529ae0952SYixun Lan static const unsigned int sdio_clk_pins[]		= { GPIOX_4 };
15629ae0952SYixun Lan static const unsigned int sdio_cmd_pins[]		= { GPIOX_5 };
15729ae0952SYixun Lan 
15829ae0952SYixun Lan /* sdcard */
15929ae0952SYixun Lan static const unsigned int sdcard_d0_c_pins[]		= { GPIOC_0 };
16029ae0952SYixun Lan static const unsigned int sdcard_d1_c_pins[]		= { GPIOC_1 };
16129ae0952SYixun Lan static const unsigned int sdcard_d2_c_pins[]		= { GPIOC_2 };
16229ae0952SYixun Lan static const unsigned int sdcard_d3_c_pins[]		= { GPIOC_3 };
16329ae0952SYixun Lan static const unsigned int sdcard_clk_c_pins[]		= { GPIOC_4 };
16429ae0952SYixun Lan static const unsigned int sdcard_cmd_c_pins[]		= { GPIOC_5 };
16529ae0952SYixun Lan 
16629ae0952SYixun Lan static const unsigned int sdcard_d0_z_pins[]		= { GPIOZ_2 };
16729ae0952SYixun Lan static const unsigned int sdcard_d1_z_pins[]		= { GPIOZ_3 };
16829ae0952SYixun Lan static const unsigned int sdcard_d2_z_pins[]		= { GPIOZ_4 };
16929ae0952SYixun Lan static const unsigned int sdcard_d3_z_pins[]		= { GPIOZ_5 };
17029ae0952SYixun Lan static const unsigned int sdcard_clk_z_pins[]		= { GPIOZ_6 };
17129ae0952SYixun Lan static const unsigned int sdcard_cmd_z_pins[]		= { GPIOZ_7 };
17229ae0952SYixun Lan 
17329ae0952SYixun Lan /* spi0 */
17429ae0952SYixun Lan static const unsigned int spi0_mosi_c_pins[]		= { GPIOC_0 };
17529ae0952SYixun Lan static const unsigned int spi0_miso_c_pins[]		= { GPIOC_1 };
17629ae0952SYixun Lan static const unsigned int spi0_ss0_c_pins[]		= { GPIOC_2 };
17729ae0952SYixun Lan static const unsigned int spi0_clk_c_pins[]		= { GPIOC_3 };
17829ae0952SYixun Lan 
17929ae0952SYixun Lan static const unsigned int spi0_mosi_x_pins[]		= { GPIOX_8 };
18029ae0952SYixun Lan static const unsigned int spi0_miso_x_pins[]		= { GPIOX_9 };
18129ae0952SYixun Lan static const unsigned int spi0_ss0_x_pins[]		= { GPIOX_10 };
18229ae0952SYixun Lan static const unsigned int spi0_clk_x_pins[]		= { GPIOX_11 };
18329ae0952SYixun Lan 
18429ae0952SYixun Lan /* spi1 */
18529ae0952SYixun Lan static const unsigned int spi1_mosi_pins[]		= { GPIOH_4 };
18629ae0952SYixun Lan static const unsigned int spi1_miso_pins[]		= { GPIOH_5 };
18729ae0952SYixun Lan static const unsigned int spi1_ss0_pins[]		= { GPIOH_6 };
18829ae0952SYixun Lan static const unsigned int spi1_clk_pins[]		= { GPIOH_7 };
18929ae0952SYixun Lan 
19029ae0952SYixun Lan /* i2c0 */
19129ae0952SYixun Lan static const unsigned int i2c0_sda_c_pins[]		= { GPIOC_5 };
19229ae0952SYixun Lan static const unsigned int i2c0_sck_c_pins[]		= { GPIOC_6 };
19329ae0952SYixun Lan static const unsigned int i2c0_sda_z0_pins[]		= { GPIOZ_0 };
19429ae0952SYixun Lan static const unsigned int i2c0_sck_z1_pins[]		= { GPIOZ_1 };
19529ae0952SYixun Lan static const unsigned int i2c0_sda_z7_pins[]		= { GPIOZ_7 };
19629ae0952SYixun Lan static const unsigned int i2c0_sck_z8_pins[]		= { GPIOZ_8 };
19729ae0952SYixun Lan 
19829ae0952SYixun Lan /* i2c1 */
19929ae0952SYixun Lan static const unsigned int i2c1_sda_x_pins[]		= { GPIOX_10 };
20029ae0952SYixun Lan static const unsigned int i2c1_sck_x_pins[]		= { GPIOX_11 };
20129ae0952SYixun Lan static const unsigned int i2c1_sda_h2_pins[]		= { GPIOH_2 };
20229ae0952SYixun Lan static const unsigned int i2c1_sck_h3_pins[]		= { GPIOH_3 };
20329ae0952SYixun Lan static const unsigned int i2c1_sda_h6_pins[]		= { GPIOH_6 };
20429ae0952SYixun Lan static const unsigned int i2c1_sck_h7_pins[]		= { GPIOH_7 };
20529ae0952SYixun Lan 
20629ae0952SYixun Lan /* i2c2 */
20729ae0952SYixun Lan static const unsigned int i2c2_sda_x_pins[]		= { GPIOX_17 };
20829ae0952SYixun Lan static const unsigned int i2c2_sck_x_pins[]		= { GPIOX_18 };
20929ae0952SYixun Lan static const unsigned int i2c2_sda_z_pins[]		= { GPIOZ_14 };
21029ae0952SYixun Lan static const unsigned int i2c2_sck_z_pins[]		= { GPIOZ_15 };
21129ae0952SYixun Lan 
21229ae0952SYixun Lan /* i2c3 */
21329ae0952SYixun Lan static const unsigned int i2c3_sda_h_pins[]		= { GPIOH_0 };
21429ae0952SYixun Lan static const unsigned int i2c3_sck_h_pins[]		= { GPIOH_1 };
21529ae0952SYixun Lan static const unsigned int i2c3_sda_a_pins[]		= { GPIOA_14 };
21629ae0952SYixun Lan static const unsigned int i2c3_sck_a_pins[]		= { GPIOA_15 };
21729ae0952SYixun Lan 
21829ae0952SYixun Lan /* uart_a */
21929ae0952SYixun Lan static const unsigned int uart_a_tx_pins[]		= { GPIOX_12 };
22029ae0952SYixun Lan static const unsigned int uart_a_rx_pins[]		= { GPIOX_13 };
22129ae0952SYixun Lan static const unsigned int uart_a_cts_pins[]		= { GPIOX_14 };
22229ae0952SYixun Lan static const unsigned int uart_a_rts_pins[]		= { GPIOX_15 };
22329ae0952SYixun Lan 
22429ae0952SYixun Lan /* uart_b */
22529ae0952SYixun Lan static const unsigned int uart_b_tx_pins[]		= { GPIOX_6 };
22629ae0952SYixun Lan static const unsigned int uart_b_rx_pins[]		= { GPIOX_7 };
22729ae0952SYixun Lan 
22829ae0952SYixun Lan /* uart_c */
22929ae0952SYixun Lan static const unsigned int uart_c_rts_pins[]		= { GPIOH_4 };
23029ae0952SYixun Lan static const unsigned int uart_c_cts_pins[]		= { GPIOH_5 };
23129ae0952SYixun Lan static const unsigned int uart_c_rx_pins[]		= { GPIOH_6 };
23229ae0952SYixun Lan static const unsigned int uart_c_tx_pins[]		= { GPIOH_7 };
23329ae0952SYixun Lan 
23429ae0952SYixun Lan /* uart_ao_a_c */
23529ae0952SYixun Lan static const unsigned int uart_ao_a_rx_c_pins[]		= { GPIOC_2 };
23629ae0952SYixun Lan static const unsigned int uart_ao_a_tx_c_pins[]		= { GPIOC_3 };
23729ae0952SYixun Lan 
23829ae0952SYixun Lan /* iso7816 */
23929ae0952SYixun Lan static const unsigned int iso7816_clk_c_pins[]		= { GPIOC_5 };
24029ae0952SYixun Lan static const unsigned int iso7816_data_c_pins[]		= { GPIOC_6 };
24129ae0952SYixun Lan static const unsigned int iso7816_clk_x_pins[]		= { GPIOX_8 };
24229ae0952SYixun Lan static const unsigned int iso7816_data_x_pins[]		= { GPIOX_9 };
24329ae0952SYixun Lan static const unsigned int iso7816_clk_h_pins[]		= { GPIOH_6 };
24429ae0952SYixun Lan static const unsigned int iso7816_data_h_pins[]		= { GPIOH_7 };
24529ae0952SYixun Lan static const unsigned int iso7816_clk_z_pins[]		= { GPIOZ_0 };
24629ae0952SYixun Lan static const unsigned int iso7816_data_z_pins[]		= { GPIOZ_1 };
24729ae0952SYixun Lan 
24829ae0952SYixun Lan /* eth */
24929ae0952SYixun Lan static const unsigned int eth_mdio_pins[]		= { GPIOZ_0 };
25029ae0952SYixun Lan static const unsigned int eth_mdc_pins[]		= { GPIOZ_1 };
25129ae0952SYixun Lan static const unsigned int eth_rgmii_rx_clk_pins[]	= { GPIOZ_2 };
25229ae0952SYixun Lan static const unsigned int eth_rx_dv_pins[]		= { GPIOZ_3 };
25329ae0952SYixun Lan static const unsigned int eth_rxd0_pins[]		= { GPIOZ_4 };
25429ae0952SYixun Lan static const unsigned int eth_rxd1_pins[]		= { GPIOZ_5 };
25529ae0952SYixun Lan static const unsigned int eth_rxd2_rgmii_pins[]		= { GPIOZ_6 };
25629ae0952SYixun Lan static const unsigned int eth_rxd3_rgmii_pins[]		= { GPIOZ_7 };
25729ae0952SYixun Lan static const unsigned int eth_rgmii_tx_clk_pins[]	= { GPIOZ_8 };
25829ae0952SYixun Lan static const unsigned int eth_txen_pins[]		= { GPIOZ_9 };
25929ae0952SYixun Lan static const unsigned int eth_txd0_pins[]		= { GPIOZ_10 };
26029ae0952SYixun Lan static const unsigned int eth_txd1_pins[]		= { GPIOZ_11 };
26129ae0952SYixun Lan static const unsigned int eth_txd2_rgmii_pins[]		= { GPIOZ_12 };
26229ae0952SYixun Lan static const unsigned int eth_txd3_rgmii_pins[]		= { GPIOZ_13 };
26329ae0952SYixun Lan static const unsigned int eth_link_led_pins[]		= { GPIOZ_14 };
26429ae0952SYixun Lan static const unsigned int eth_act_led_pins[]		= { GPIOZ_15 };
26529ae0952SYixun Lan 
26629ae0952SYixun Lan /* pwm_a */
26729ae0952SYixun Lan static const unsigned int pwm_a_pins[]			= { GPIOX_6 };
26829ae0952SYixun Lan 
26929ae0952SYixun Lan /* pwm_b */
27029ae0952SYixun Lan static const unsigned int pwm_b_x7_pins[]		= { GPIOX_7 };
27129ae0952SYixun Lan static const unsigned int pwm_b_x19_pins[]		= { GPIOX_19 };
27229ae0952SYixun Lan 
27329ae0952SYixun Lan /* pwm_c */
27429ae0952SYixun Lan static const unsigned int pwm_c_c_pins[]		= { GPIOC_4 };
27529ae0952SYixun Lan static const unsigned int pwm_c_x5_pins[]		= { GPIOX_5 };
27629ae0952SYixun Lan static const unsigned int pwm_c_x8_pins[]		= { GPIOX_8 };
27729ae0952SYixun Lan 
27829ae0952SYixun Lan /* pwm_d */
27929ae0952SYixun Lan static const unsigned int pwm_d_x3_pins[]		= { GPIOX_3 };
28029ae0952SYixun Lan static const unsigned int pwm_d_x6_pins[]		= { GPIOX_6 };
28129ae0952SYixun Lan 
28229ae0952SYixun Lan /* pwm_e */
28329ae0952SYixun Lan static const unsigned int pwm_e_pins[]			= { GPIOX_16 };
28429ae0952SYixun Lan 
28529ae0952SYixun Lan /* pwm_f */
28629ae0952SYixun Lan static const unsigned int pwm_f_x_pins[]		= { GPIOX_7 };
28729ae0952SYixun Lan static const unsigned int pwm_f_h_pins[]		= { GPIOH_5 };
28829ae0952SYixun Lan 
28929ae0952SYixun Lan /* cec_ao */
29029ae0952SYixun Lan static const unsigned int cec_ao_a_h_pins[]		= { GPIOH_3 };
29129ae0952SYixun Lan static const unsigned int cec_ao_b_h_pins[]		= { GPIOH_3 };
29229ae0952SYixun Lan 
29329ae0952SYixun Lan /* jtag_b */
29429ae0952SYixun Lan static const unsigned int jtag_b_tdo_pins[]		= { GPIOC_0 };
29529ae0952SYixun Lan static const unsigned int jtag_b_tdi_pins[]		= { GPIOC_1 };
29629ae0952SYixun Lan static const unsigned int jtag_b_clk_pins[]		= { GPIOC_4 };
29729ae0952SYixun Lan static const unsigned int jtag_b_tms_pins[]		= { GPIOC_5 };
29829ae0952SYixun Lan 
29929ae0952SYixun Lan /* bt565_a */
30029ae0952SYixun Lan static const unsigned int bt565_a_vs_pins[]		= { GPIOZ_0 };
30129ae0952SYixun Lan static const unsigned int bt565_a_hs_pins[]		= { GPIOZ_1 };
30229ae0952SYixun Lan static const unsigned int bt565_a_clk_pins[]		= { GPIOZ_3 };
30329ae0952SYixun Lan static const unsigned int bt565_a_din0_pins[]		= { GPIOZ_4 };
30429ae0952SYixun Lan static const unsigned int bt565_a_din1_pins[]		= { GPIOZ_5 };
30529ae0952SYixun Lan static const unsigned int bt565_a_din2_pins[]		= { GPIOZ_6 };
30629ae0952SYixun Lan static const unsigned int bt565_a_din3_pins[]		= { GPIOZ_7 };
30729ae0952SYixun Lan static const unsigned int bt565_a_din4_pins[]		= { GPIOZ_8 };
30829ae0952SYixun Lan static const unsigned int bt565_a_din5_pins[]		= { GPIOZ_9 };
30929ae0952SYixun Lan static const unsigned int bt565_a_din6_pins[]		= { GPIOZ_10 };
31029ae0952SYixun Lan static const unsigned int bt565_a_din7_pins[]		= { GPIOZ_11 };
31129ae0952SYixun Lan 
31229ae0952SYixun Lan /* tsin_a */
31329ae0952SYixun Lan static const unsigned int tsin_a_valid_pins[]		= { GPIOX_2 };
31429ae0952SYixun Lan static const unsigned int tsin_a_sop_pins[]		= { GPIOX_1 };
31529ae0952SYixun Lan static const unsigned int tsin_a_din0_pins[]		= { GPIOX_0 };
31629ae0952SYixun Lan static const unsigned int tsin_a_clk_pins[]		= { GPIOX_3 };
31729ae0952SYixun Lan 
31829ae0952SYixun Lan /* tsin_b */
31929ae0952SYixun Lan static const unsigned int tsin_b_valid_x_pins[]		= { GPIOX_9 };
32029ae0952SYixun Lan static const unsigned int tsin_b_sop_x_pins[]		= { GPIOX_8 };
32129ae0952SYixun Lan static const unsigned int tsin_b_din0_x_pins[]		= { GPIOX_10 };
32229ae0952SYixun Lan static const unsigned int tsin_b_clk_x_pins[]		= { GPIOX_11 };
32329ae0952SYixun Lan 
32429ae0952SYixun Lan static const unsigned int tsin_b_valid_z_pins[]		= { GPIOZ_2 };
32529ae0952SYixun Lan static const unsigned int tsin_b_sop_z_pins[]		= { GPIOZ_3 };
32629ae0952SYixun Lan static const unsigned int tsin_b_din0_z_pins[]		= { GPIOZ_4 };
32729ae0952SYixun Lan static const unsigned int tsin_b_clk_z_pins[]		= { GPIOZ_5 };
32829ae0952SYixun Lan 
32929ae0952SYixun Lan static const unsigned int tsin_b_fail_pins[]		= { GPIOZ_6 };
33029ae0952SYixun Lan static const unsigned int tsin_b_din1_pins[]		= { GPIOZ_7 };
33129ae0952SYixun Lan static const unsigned int tsin_b_din2_pins[]		= { GPIOZ_8 };
33229ae0952SYixun Lan static const unsigned int tsin_b_din3_pins[]		= { GPIOZ_9 };
33329ae0952SYixun Lan static const unsigned int tsin_b_din4_pins[]		= { GPIOZ_10 };
33429ae0952SYixun Lan static const unsigned int tsin_b_din5_pins[]		= { GPIOZ_11 };
33529ae0952SYixun Lan static const unsigned int tsin_b_din6_pins[]		= { GPIOZ_12 };
33629ae0952SYixun Lan static const unsigned int tsin_b_din7_pins[]		= { GPIOZ_13 };
33729ae0952SYixun Lan 
33829ae0952SYixun Lan /* hdmitx */
33929ae0952SYixun Lan static const unsigned int hdmitx_sda_pins[]		= { GPIOH_0 };
34029ae0952SYixun Lan static const unsigned int hdmitx_sck_pins[]		= { GPIOH_1 };
34129ae0952SYixun Lan static const unsigned int hdmitx_hpd_in_pins[]		= { GPIOH_2 };
34229ae0952SYixun Lan 
34329ae0952SYixun Lan /* pdm */
34429ae0952SYixun Lan static const unsigned int pdm_din0_c_pins[]		= { GPIOC_0 };
34529ae0952SYixun Lan static const unsigned int pdm_din1_c_pins[]		= { GPIOC_1 };
34629ae0952SYixun Lan static const unsigned int pdm_din2_c_pins[]		= { GPIOC_2 };
34729ae0952SYixun Lan static const unsigned int pdm_din3_c_pins[]		= { GPIOC_3 };
34829ae0952SYixun Lan static const unsigned int pdm_dclk_c_pins[]		= { GPIOC_4 };
34929ae0952SYixun Lan 
35029ae0952SYixun Lan static const unsigned int pdm_din0_x_pins[]		= { GPIOX_0 };
35129ae0952SYixun Lan static const unsigned int pdm_din1_x_pins[]		= { GPIOX_1 };
35229ae0952SYixun Lan static const unsigned int pdm_din2_x_pins[]		= { GPIOX_2 };
35329ae0952SYixun Lan static const unsigned int pdm_din3_x_pins[]		= { GPIOX_3 };
35429ae0952SYixun Lan static const unsigned int pdm_dclk_x_pins[]		= { GPIOX_4 };
35529ae0952SYixun Lan 
35629ae0952SYixun Lan static const unsigned int pdm_din0_z_pins[]		= { GPIOZ_2 };
35729ae0952SYixun Lan static const unsigned int pdm_din1_z_pins[]		= { GPIOZ_3 };
35829ae0952SYixun Lan static const unsigned int pdm_din2_z_pins[]		= { GPIOZ_4 };
35929ae0952SYixun Lan static const unsigned int pdm_din3_z_pins[]		= { GPIOZ_5 };
36029ae0952SYixun Lan static const unsigned int pdm_dclk_z_pins[]		= { GPIOZ_6 };
36129ae0952SYixun Lan 
36229ae0952SYixun Lan static const unsigned int pdm_din0_a_pins[]		= { GPIOA_8 };
36329ae0952SYixun Lan static const unsigned int pdm_din1_a_pins[]		= { GPIOA_9 };
36429ae0952SYixun Lan static const unsigned int pdm_din2_a_pins[]		= { GPIOA_6 };
36529ae0952SYixun Lan static const unsigned int pdm_din3_a_pins[]		= { GPIOA_5 };
36629ae0952SYixun Lan static const unsigned int pdm_dclk_a_pins[]		= { GPIOA_7 };
36729ae0952SYixun Lan 
36829ae0952SYixun Lan /* spdif_in */
36929ae0952SYixun Lan static const unsigned int spdif_in_h_pins[]		= { GPIOH_5 };
37029ae0952SYixun Lan static const unsigned int spdif_in_a10_pins[]		= { GPIOA_10 };
37129ae0952SYixun Lan static const unsigned int spdif_in_a12_pins[]		= { GPIOA_12 };
37229ae0952SYixun Lan 
37329ae0952SYixun Lan /* spdif_out */
37429ae0952SYixun Lan static const unsigned int spdif_out_h_pins[]		= { GPIOH_4 };
37529ae0952SYixun Lan static const unsigned int spdif_out_a11_pins[]		= { GPIOA_11 };
37629ae0952SYixun Lan static const unsigned int spdif_out_a13_pins[]		= { GPIOA_13 };
37729ae0952SYixun Lan 
37829ae0952SYixun Lan /* mclk0 */
37929ae0952SYixun Lan static const unsigned int mclk0_a_pins[]		= { GPIOA_0 };
38029ae0952SYixun Lan 
38129ae0952SYixun Lan /* mclk1 */
38229ae0952SYixun Lan static const unsigned int mclk1_x_pins[]		= { GPIOX_5 };
38329ae0952SYixun Lan static const unsigned int mclk1_z_pins[]		= { GPIOZ_8 };
38429ae0952SYixun Lan static const unsigned int mclk1_a_pins[]		= { GPIOA_11 };
38529ae0952SYixun Lan 
38629ae0952SYixun Lan /* tdm */
38729ae0952SYixun Lan static const unsigned int tdm_a_slv_sclk_pins[]		= { GPIOX_11 };
38829ae0952SYixun Lan static const unsigned int tdm_a_slv_fs_pins[]		= { GPIOX_10 };
38929ae0952SYixun Lan static const unsigned int tdm_a_sclk_pins[]		= { GPIOX_11 };
39029ae0952SYixun Lan static const unsigned int tdm_a_fs_pins[]		= { GPIOX_10 };
39129ae0952SYixun Lan static const unsigned int tdm_a_din0_pins[]		= { GPIOX_9 };
39229ae0952SYixun Lan static const unsigned int tdm_a_din1_pins[]		= { GPIOX_8 };
39329ae0952SYixun Lan static const unsigned int tdm_a_dout0_pins[]		= { GPIOX_9 };
39429ae0952SYixun Lan static const unsigned int tdm_a_dout1_pins[]		= { GPIOX_8 };
39529ae0952SYixun Lan 
39629ae0952SYixun Lan static const unsigned int tdm_b_slv_sclk_pins[]		= { GPIOA_1 };
39729ae0952SYixun Lan static const unsigned int tdm_b_slv_fs_pins[]		= { GPIOA_2 };
39829ae0952SYixun Lan static const unsigned int tdm_b_sclk_pins[]		= { GPIOA_1 };
39929ae0952SYixun Lan static const unsigned int tdm_b_fs_pins[]		= { GPIOA_2 };
40029ae0952SYixun Lan static const unsigned int tdm_b_din0_pins[]		= { GPIOA_3 };
40129ae0952SYixun Lan static const unsigned int tdm_b_din1_pins[]		= { GPIOA_4 };
40229ae0952SYixun Lan static const unsigned int tdm_b_din2_pins[]		= { GPIOA_5 };
40329ae0952SYixun Lan static const unsigned int tdm_b_din3_a_pins[]		= { GPIOA_6 };
40429ae0952SYixun Lan static const unsigned int tdm_b_din3_h_pins[]		= { GPIOH_5 };
40529ae0952SYixun Lan static const unsigned int tdm_b_dout0_pins[]		= { GPIOA_3 };
40629ae0952SYixun Lan static const unsigned int tdm_b_dout1_pins[]		= { GPIOA_4 };
40729ae0952SYixun Lan static const unsigned int tdm_b_dout2_pins[]		= { GPIOA_5 };
40829ae0952SYixun Lan static const unsigned int tdm_b_dout3_a_pins[]		= { GPIOA_6 };
40929ae0952SYixun Lan static const unsigned int tdm_b_dout3_h_pins[]		= { GPIOH_5 };
41029ae0952SYixun Lan 
41129ae0952SYixun Lan static const unsigned int tdm_c_slv_sclk_a_pins[]	= { GPIOA_12 };
41229ae0952SYixun Lan static const unsigned int tdm_c_slv_fs_a_pins[]		= { GPIOA_13 };
41329ae0952SYixun Lan static const unsigned int tdm_c_slv_sclk_z_pins[]	= { GPIOZ_7 };
41429ae0952SYixun Lan static const unsigned int tdm_c_slv_fs_z_pins[]		= { GPIOZ_6 };
41529ae0952SYixun Lan static const unsigned int tdm_c_sclk_a_pins[]		= { GPIOA_12 };
41629ae0952SYixun Lan static const unsigned int tdm_c_fs_a_pins[]		= { GPIOA_13 };
41729ae0952SYixun Lan static const unsigned int tdm_c_sclk_z_pins[]		= { GPIOZ_7 };
41829ae0952SYixun Lan static const unsigned int tdm_c_fs_z_pins[]		= { GPIOZ_6 };
41929ae0952SYixun Lan static const unsigned int tdm_c_din0_a_pins[]		= { GPIOA_10 };
42029ae0952SYixun Lan static const unsigned int tdm_c_din1_a_pins[]		= { GPIOA_9 };
42129ae0952SYixun Lan static const unsigned int tdm_c_din2_a_pins[]		= { GPIOA_8 };
42229ae0952SYixun Lan static const unsigned int tdm_c_din3_a_pins[]		= { GPIOA_7 };
42329ae0952SYixun Lan static const unsigned int tdm_c_din0_z_pins[]		= { GPIOZ_2 };
42429ae0952SYixun Lan static const unsigned int tdm_c_din1_z_pins[]		= { GPIOZ_3 };
42529ae0952SYixun Lan static const unsigned int tdm_c_din2_z_pins[]		= { GPIOZ_4 };
42629ae0952SYixun Lan static const unsigned int tdm_c_din3_z_pins[]		= { GPIOZ_5 };
42729ae0952SYixun Lan static const unsigned int tdm_c_dout0_a_pins[]		= { GPIOA_10 };
42829ae0952SYixun Lan static const unsigned int tdm_c_dout1_a_pins[]		= { GPIOA_9 };
42929ae0952SYixun Lan static const unsigned int tdm_c_dout2_a_pins[]		= { GPIOA_8 };
43029ae0952SYixun Lan static const unsigned int tdm_c_dout3_a_pins[]		= { GPIOA_7 };
43129ae0952SYixun Lan static const unsigned int tdm_c_dout0_z_pins[]		= { GPIOZ_2 };
43229ae0952SYixun Lan static const unsigned int tdm_c_dout1_z_pins[]		= { GPIOZ_3 };
43329ae0952SYixun Lan static const unsigned int tdm_c_dout2_z_pins[]		= { GPIOZ_4 };
43429ae0952SYixun Lan static const unsigned int tdm_c_dout3_z_pins[]		= { GPIOZ_5 };
43529ae0952SYixun Lan 
43629ae0952SYixun Lan static struct meson_pmx_group meson_g12a_periphs_groups[] = {
43729ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_0),
43829ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_1),
43929ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_2),
44029ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_3),
44129ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_4),
44229ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_5),
44329ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_6),
44429ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_7),
44529ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_8),
44629ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_9),
44729ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_10),
44829ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_11),
44929ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_12),
45029ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_13),
45129ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_14),
45229ae0952SYixun Lan 	GPIO_GROUP(GPIOZ_15),
45329ae0952SYixun Lan 	GPIO_GROUP(GPIOH_0),
45429ae0952SYixun Lan 	GPIO_GROUP(GPIOH_1),
45529ae0952SYixun Lan 	GPIO_GROUP(GPIOH_2),
45629ae0952SYixun Lan 	GPIO_GROUP(GPIOH_3),
45729ae0952SYixun Lan 	GPIO_GROUP(GPIOH_4),
45829ae0952SYixun Lan 	GPIO_GROUP(GPIOH_5),
45929ae0952SYixun Lan 	GPIO_GROUP(GPIOH_6),
46029ae0952SYixun Lan 	GPIO_GROUP(GPIOH_7),
46129ae0952SYixun Lan 	GPIO_GROUP(GPIOH_8),
46229ae0952SYixun Lan 	GPIO_GROUP(BOOT_0),
46329ae0952SYixun Lan 	GPIO_GROUP(BOOT_1),
46429ae0952SYixun Lan 	GPIO_GROUP(BOOT_2),
46529ae0952SYixun Lan 	GPIO_GROUP(BOOT_3),
46629ae0952SYixun Lan 	GPIO_GROUP(BOOT_4),
46729ae0952SYixun Lan 	GPIO_GROUP(BOOT_5),
46829ae0952SYixun Lan 	GPIO_GROUP(BOOT_6),
46929ae0952SYixun Lan 	GPIO_GROUP(BOOT_7),
47029ae0952SYixun Lan 	GPIO_GROUP(BOOT_8),
47129ae0952SYixun Lan 	GPIO_GROUP(BOOT_9),
47229ae0952SYixun Lan 	GPIO_GROUP(BOOT_10),
47329ae0952SYixun Lan 	GPIO_GROUP(BOOT_11),
47429ae0952SYixun Lan 	GPIO_GROUP(BOOT_12),
47529ae0952SYixun Lan 	GPIO_GROUP(BOOT_13),
47629ae0952SYixun Lan 	GPIO_GROUP(BOOT_14),
47729ae0952SYixun Lan 	GPIO_GROUP(BOOT_15),
47829ae0952SYixun Lan 	GPIO_GROUP(GPIOC_0),
47929ae0952SYixun Lan 	GPIO_GROUP(GPIOC_1),
48029ae0952SYixun Lan 	GPIO_GROUP(GPIOC_2),
48129ae0952SYixun Lan 	GPIO_GROUP(GPIOC_3),
48229ae0952SYixun Lan 	GPIO_GROUP(GPIOC_4),
48329ae0952SYixun Lan 	GPIO_GROUP(GPIOC_5),
48429ae0952SYixun Lan 	GPIO_GROUP(GPIOC_6),
48529ae0952SYixun Lan 	GPIO_GROUP(GPIOC_7),
48629ae0952SYixun Lan 	GPIO_GROUP(GPIOA_0),
48729ae0952SYixun Lan 	GPIO_GROUP(GPIOA_1),
48829ae0952SYixun Lan 	GPIO_GROUP(GPIOA_2),
48929ae0952SYixun Lan 	GPIO_GROUP(GPIOA_3),
49029ae0952SYixun Lan 	GPIO_GROUP(GPIOA_4),
49129ae0952SYixun Lan 	GPIO_GROUP(GPIOA_5),
49229ae0952SYixun Lan 	GPIO_GROUP(GPIOA_6),
49329ae0952SYixun Lan 	GPIO_GROUP(GPIOA_7),
49429ae0952SYixun Lan 	GPIO_GROUP(GPIOA_8),
49529ae0952SYixun Lan 	GPIO_GROUP(GPIOA_9),
49629ae0952SYixun Lan 	GPIO_GROUP(GPIOA_10),
49729ae0952SYixun Lan 	GPIO_GROUP(GPIOA_11),
49829ae0952SYixun Lan 	GPIO_GROUP(GPIOA_12),
49929ae0952SYixun Lan 	GPIO_GROUP(GPIOA_13),
50029ae0952SYixun Lan 	GPIO_GROUP(GPIOA_14),
50129ae0952SYixun Lan 	GPIO_GROUP(GPIOA_15),
50229ae0952SYixun Lan 	GPIO_GROUP(GPIOX_0),
50329ae0952SYixun Lan 	GPIO_GROUP(GPIOX_1),
50429ae0952SYixun Lan 	GPIO_GROUP(GPIOX_2),
50529ae0952SYixun Lan 	GPIO_GROUP(GPIOX_3),
50629ae0952SYixun Lan 	GPIO_GROUP(GPIOX_4),
50729ae0952SYixun Lan 	GPIO_GROUP(GPIOX_5),
50829ae0952SYixun Lan 	GPIO_GROUP(GPIOX_6),
50929ae0952SYixun Lan 	GPIO_GROUP(GPIOX_7),
51029ae0952SYixun Lan 	GPIO_GROUP(GPIOX_8),
51129ae0952SYixun Lan 	GPIO_GROUP(GPIOX_9),
51229ae0952SYixun Lan 	GPIO_GROUP(GPIOX_10),
51329ae0952SYixun Lan 	GPIO_GROUP(GPIOX_11),
51429ae0952SYixun Lan 	GPIO_GROUP(GPIOX_12),
51529ae0952SYixun Lan 	GPIO_GROUP(GPIOX_13),
51629ae0952SYixun Lan 	GPIO_GROUP(GPIOX_14),
51729ae0952SYixun Lan 	GPIO_GROUP(GPIOX_15),
51829ae0952SYixun Lan 	GPIO_GROUP(GPIOX_16),
51929ae0952SYixun Lan 	GPIO_GROUP(GPIOX_17),
52029ae0952SYixun Lan 	GPIO_GROUP(GPIOX_18),
52129ae0952SYixun Lan 	GPIO_GROUP(GPIOX_19),
52229ae0952SYixun Lan 
52329ae0952SYixun Lan 	/* bank BOOT */
52429ae0952SYixun Lan 	GROUP(emmc_nand_d0,		1),
52529ae0952SYixun Lan 	GROUP(emmc_nand_d1,		1),
52629ae0952SYixun Lan 	GROUP(emmc_nand_d2,		1),
52729ae0952SYixun Lan 	GROUP(emmc_nand_d3,		1),
52829ae0952SYixun Lan 	GROUP(emmc_nand_d4,		1),
52929ae0952SYixun Lan 	GROUP(emmc_nand_d5,		1),
53029ae0952SYixun Lan 	GROUP(emmc_nand_d6,		1),
53129ae0952SYixun Lan 	GROUP(emmc_nand_d7,		1),
53229ae0952SYixun Lan 	GROUP(emmc_clk,			1),
53329ae0952SYixun Lan 	GROUP(emmc_cmd,			1),
53429ae0952SYixun Lan 	GROUP(emmc_nand_ds,		1),
53529ae0952SYixun Lan 	GROUP(nand_ce0,			2),
53629ae0952SYixun Lan 	GROUP(nand_ale,			2),
53729ae0952SYixun Lan 	GROUP(nand_cle,			2),
53829ae0952SYixun Lan 	GROUP(nand_wen_clk,		2),
53929ae0952SYixun Lan 	GROUP(nand_ren_wr,		2),
54029ae0952SYixun Lan 	GROUP(nand_rb0,			2),
54129ae0952SYixun Lan 	GROUP(nand_ce1,			2),
54229ae0952SYixun Lan 	GROUP(nor_hold,			3),
54329ae0952SYixun Lan 	GROUP(nor_d,			3),
54429ae0952SYixun Lan 	GROUP(nor_q,			3),
54529ae0952SYixun Lan 	GROUP(nor_c,			3),
54629ae0952SYixun Lan 	GROUP(nor_wp,			3),
54729ae0952SYixun Lan 	GROUP(nor_cs,			3),
54829ae0952SYixun Lan 
54929ae0952SYixun Lan 	/* bank GPIOZ */
55029ae0952SYixun Lan 	GROUP(sdcard_d0_z,		5),
55129ae0952SYixun Lan 	GROUP(sdcard_d1_z,		5),
55229ae0952SYixun Lan 	GROUP(sdcard_d2_z,		5),
55329ae0952SYixun Lan 	GROUP(sdcard_d3_z,		5),
55429ae0952SYixun Lan 	GROUP(sdcard_clk_z,		5),
55529ae0952SYixun Lan 	GROUP(sdcard_cmd_z,		5),
55629ae0952SYixun Lan 	GROUP(i2c0_sda_z0,		4),
55729ae0952SYixun Lan 	GROUP(i2c0_sck_z1,		4),
55829ae0952SYixun Lan 	GROUP(i2c0_sda_z7,		7),
55929ae0952SYixun Lan 	GROUP(i2c0_sck_z8,		7),
56029ae0952SYixun Lan 	GROUP(i2c2_sda_z,		3),
56129ae0952SYixun Lan 	GROUP(i2c2_sck_z,		3),
56229ae0952SYixun Lan 	GROUP(iso7816_clk_z,		3),
56329ae0952SYixun Lan 	GROUP(iso7816_data_z,		3),
56429ae0952SYixun Lan 	GROUP(eth_mdio,			1),
56529ae0952SYixun Lan 	GROUP(eth_mdc,			1),
56629ae0952SYixun Lan 	GROUP(eth_rgmii_rx_clk,		1),
56729ae0952SYixun Lan 	GROUP(eth_rx_dv,		1),
56829ae0952SYixun Lan 	GROUP(eth_rxd0,			1),
56929ae0952SYixun Lan 	GROUP(eth_rxd1,			1),
57029ae0952SYixun Lan 	GROUP(eth_rxd2_rgmii,		1),
57129ae0952SYixun Lan 	GROUP(eth_rxd3_rgmii,		1),
57229ae0952SYixun Lan 	GROUP(eth_rgmii_tx_clk,		1),
57329ae0952SYixun Lan 	GROUP(eth_txen,			1),
57429ae0952SYixun Lan 	GROUP(eth_txd0,			1),
57529ae0952SYixun Lan 	GROUP(eth_txd1,			1),
57629ae0952SYixun Lan 	GROUP(eth_txd2_rgmii,		1),
57729ae0952SYixun Lan 	GROUP(eth_txd3_rgmii,		1),
57829ae0952SYixun Lan 	GROUP(eth_link_led,		1),
57929ae0952SYixun Lan 	GROUP(eth_act_led,		1),
58029ae0952SYixun Lan 	GROUP(bt565_a_vs,		2),
58129ae0952SYixun Lan 	GROUP(bt565_a_hs,		2),
58229ae0952SYixun Lan 	GROUP(bt565_a_clk,		2),
58329ae0952SYixun Lan 	GROUP(bt565_a_din0,		2),
58429ae0952SYixun Lan 	GROUP(bt565_a_din1,		2),
58529ae0952SYixun Lan 	GROUP(bt565_a_din2,		2),
58629ae0952SYixun Lan 	GROUP(bt565_a_din3,		2),
58729ae0952SYixun Lan 	GROUP(bt565_a_din4,		2),
58829ae0952SYixun Lan 	GROUP(bt565_a_din5,		2),
58929ae0952SYixun Lan 	GROUP(bt565_a_din6,		2),
59029ae0952SYixun Lan 	GROUP(bt565_a_din7,		2),
59129ae0952SYixun Lan 	GROUP(tsin_b_valid_z,		3),
59229ae0952SYixun Lan 	GROUP(tsin_b_sop_z,		3),
59329ae0952SYixun Lan 	GROUP(tsin_b_din0_z,		3),
59429ae0952SYixun Lan 	GROUP(tsin_b_clk_z,		3),
59529ae0952SYixun Lan 	GROUP(tsin_b_fail,		3),
59629ae0952SYixun Lan 	GROUP(tsin_b_din1,		3),
59729ae0952SYixun Lan 	GROUP(tsin_b_din2,		3),
59829ae0952SYixun Lan 	GROUP(tsin_b_din3,		3),
59929ae0952SYixun Lan 	GROUP(tsin_b_din4,		3),
60029ae0952SYixun Lan 	GROUP(tsin_b_din5,		3),
60129ae0952SYixun Lan 	GROUP(tsin_b_din6,		3),
60229ae0952SYixun Lan 	GROUP(tsin_b_din7,		3),
60329ae0952SYixun Lan 	GROUP(pdm_din0_z,		7),
60429ae0952SYixun Lan 	GROUP(pdm_din1_z,		7),
60529ae0952SYixun Lan 	GROUP(pdm_din2_z,		7),
60629ae0952SYixun Lan 	GROUP(pdm_din3_z,		7),
60729ae0952SYixun Lan 	GROUP(pdm_dclk_z,		7),
60829ae0952SYixun Lan 	GROUP(tdm_c_slv_sclk_z,		6),
60929ae0952SYixun Lan 	GROUP(tdm_c_slv_fs_z,		6),
61029ae0952SYixun Lan 	GROUP(tdm_c_din0_z,		6),
61129ae0952SYixun Lan 	GROUP(tdm_c_din1_z,		6),
61229ae0952SYixun Lan 	GROUP(tdm_c_din2_z,		6),
61329ae0952SYixun Lan 	GROUP(tdm_c_din3_z,		6),
61429ae0952SYixun Lan 	GROUP(tdm_c_sclk_z,		4),
61529ae0952SYixun Lan 	GROUP(tdm_c_fs_z,		4),
61629ae0952SYixun Lan 	GROUP(tdm_c_dout0_z,		4),
61729ae0952SYixun Lan 	GROUP(tdm_c_dout1_z,		4),
61829ae0952SYixun Lan 	GROUP(tdm_c_dout2_z,		4),
61929ae0952SYixun Lan 	GROUP(tdm_c_dout3_z,		4),
62029ae0952SYixun Lan 	GROUP(mclk1_z,			4),
62129ae0952SYixun Lan 
62229ae0952SYixun Lan 	/* bank GPIOX */
62329ae0952SYixun Lan 	GROUP(sdio_d0,			1),
62429ae0952SYixun Lan 	GROUP(sdio_d1,			1),
62529ae0952SYixun Lan 	GROUP(sdio_d2,			1),
62629ae0952SYixun Lan 	GROUP(sdio_d3,			1),
62729ae0952SYixun Lan 	GROUP(sdio_clk,			1),
62829ae0952SYixun Lan 	GROUP(sdio_cmd,			1),
62929ae0952SYixun Lan 	GROUP(spi0_mosi_x,		4),
63029ae0952SYixun Lan 	GROUP(spi0_miso_x,		4),
63129ae0952SYixun Lan 	GROUP(spi0_ss0_x,		4),
63229ae0952SYixun Lan 	GROUP(spi0_clk_x,		4),
63329ae0952SYixun Lan 	GROUP(i2c1_sda_x,		5),
63429ae0952SYixun Lan 	GROUP(i2c1_sck_x,		5),
63529ae0952SYixun Lan 	GROUP(i2c2_sda_x,		1),
63629ae0952SYixun Lan 	GROUP(i2c2_sck_x,		1),
63729ae0952SYixun Lan 	GROUP(uart_a_tx,		1),
63829ae0952SYixun Lan 	GROUP(uart_a_rx,		1),
63929ae0952SYixun Lan 	GROUP(uart_a_cts,		1),
64029ae0952SYixun Lan 	GROUP(uart_a_rts,		1),
64129ae0952SYixun Lan 	GROUP(uart_b_tx,		2),
64229ae0952SYixun Lan 	GROUP(uart_b_rx,		2),
64329ae0952SYixun Lan 	GROUP(iso7816_clk_x,		6),
64429ae0952SYixun Lan 	GROUP(iso7816_data_x,		6),
64529ae0952SYixun Lan 	GROUP(pwm_a,			1),
64629ae0952SYixun Lan 	GROUP(pwm_b_x7,			4),
64729ae0952SYixun Lan 	GROUP(pwm_b_x19,		1),
64829ae0952SYixun Lan 	GROUP(pwm_c_x5,			4),
64929ae0952SYixun Lan 	GROUP(pwm_c_x8,			5),
65029ae0952SYixun Lan 	GROUP(pwm_d_x3,			4),
65129ae0952SYixun Lan 	GROUP(pwm_d_x6,			4),
65229ae0952SYixun Lan 	GROUP(pwm_e,			1),
65329ae0952SYixun Lan 	GROUP(pwm_f_x,			1),
65429ae0952SYixun Lan 	GROUP(tsin_a_valid,		3),
65529ae0952SYixun Lan 	GROUP(tsin_a_sop,		3),
65629ae0952SYixun Lan 	GROUP(tsin_a_din0,		3),
65729ae0952SYixun Lan 	GROUP(tsin_a_clk,		3),
65829ae0952SYixun Lan 	GROUP(tsin_b_valid_x,		3),
65929ae0952SYixun Lan 	GROUP(tsin_b_sop_x,		3),
66029ae0952SYixun Lan 	GROUP(tsin_b_din0_x,		3),
66129ae0952SYixun Lan 	GROUP(tsin_b_clk_x,		3),
66229ae0952SYixun Lan 	GROUP(pdm_din0_x,		2),
66329ae0952SYixun Lan 	GROUP(pdm_din1_x,		2),
66429ae0952SYixun Lan 	GROUP(pdm_din2_x,		2),
66529ae0952SYixun Lan 	GROUP(pdm_din3_x,		2),
66629ae0952SYixun Lan 	GROUP(pdm_dclk_x,		2),
66729ae0952SYixun Lan 	GROUP(tdm_a_slv_sclk,		2),
66829ae0952SYixun Lan 	GROUP(tdm_a_slv_fs,		2),
66929ae0952SYixun Lan 	GROUP(tdm_a_din0,		2),
67029ae0952SYixun Lan 	GROUP(tdm_a_din1,		2),
67129ae0952SYixun Lan 	GROUP(tdm_a_sclk,		1),
67229ae0952SYixun Lan 	GROUP(tdm_a_fs,			1),
67329ae0952SYixun Lan 	GROUP(tdm_a_dout0,		1),
67429ae0952SYixun Lan 	GROUP(tdm_a_dout1,		1),
67529ae0952SYixun Lan 	GROUP(mclk1_x,			2),
67629ae0952SYixun Lan 
67729ae0952SYixun Lan 	/* bank GPIOC */
67829ae0952SYixun Lan 	GROUP(sdcard_d0_c,		1),
67929ae0952SYixun Lan 	GROUP(sdcard_d1_c,		1),
68029ae0952SYixun Lan 	GROUP(sdcard_d2_c,		1),
68129ae0952SYixun Lan 	GROUP(sdcard_d3_c,		1),
68229ae0952SYixun Lan 	GROUP(sdcard_clk_c,		1),
68329ae0952SYixun Lan 	GROUP(sdcard_cmd_c,		1),
68429ae0952SYixun Lan 	GROUP(spi0_mosi_c,		5),
68529ae0952SYixun Lan 	GROUP(spi0_miso_c,		5),
68629ae0952SYixun Lan 	GROUP(spi0_ss0_c,		5),
68729ae0952SYixun Lan 	GROUP(spi0_clk_c,		5),
68829ae0952SYixun Lan 	GROUP(i2c0_sda_c,		3),
68929ae0952SYixun Lan 	GROUP(i2c0_sck_c,		3),
69029ae0952SYixun Lan 	GROUP(uart_ao_a_rx_c,		2),
69129ae0952SYixun Lan 	GROUP(uart_ao_a_tx_c,		2),
69229ae0952SYixun Lan 	GROUP(iso7816_clk_c,		5),
69329ae0952SYixun Lan 	GROUP(iso7816_data_c,		5),
69429ae0952SYixun Lan 	GROUP(pwm_c_c,			5),
69529ae0952SYixun Lan 	GROUP(jtag_b_tdo,		2),
69629ae0952SYixun Lan 	GROUP(jtag_b_tdi,		2),
69729ae0952SYixun Lan 	GROUP(jtag_b_clk,		2),
69829ae0952SYixun Lan 	GROUP(jtag_b_tms,		2),
69929ae0952SYixun Lan 	GROUP(pdm_din0_c,		4),
70029ae0952SYixun Lan 	GROUP(pdm_din1_c,		4),
70129ae0952SYixun Lan 	GROUP(pdm_din2_c,		4),
70229ae0952SYixun Lan 	GROUP(pdm_din3_c,		4),
70329ae0952SYixun Lan 	GROUP(pdm_dclk_c,		4),
70429ae0952SYixun Lan 
70529ae0952SYixun Lan 	/* bank GPIOH */
70629ae0952SYixun Lan 	GROUP(spi1_mosi,		3),
70729ae0952SYixun Lan 	GROUP(spi1_miso,		3),
70829ae0952SYixun Lan 	GROUP(spi1_ss0,			3),
70929ae0952SYixun Lan 	GROUP(spi1_clk,			3),
71029ae0952SYixun Lan 	GROUP(i2c1_sda_h2,		2),
71129ae0952SYixun Lan 	GROUP(i2c1_sck_h3,		2),
71229ae0952SYixun Lan 	GROUP(i2c1_sda_h6,		4),
71329ae0952SYixun Lan 	GROUP(i2c1_sck_h7,		4),
71429ae0952SYixun Lan 	GROUP(i2c3_sda_h,		2),
71529ae0952SYixun Lan 	GROUP(i2c3_sck_h,		2),
71629ae0952SYixun Lan 	GROUP(uart_c_tx,		2),
71729ae0952SYixun Lan 	GROUP(uart_c_rx,		2),
71829ae0952SYixun Lan 	GROUP(uart_c_cts,		2),
71929ae0952SYixun Lan 	GROUP(uart_c_rts,		2),
72029ae0952SYixun Lan 	GROUP(iso7816_clk_h,		1),
72129ae0952SYixun Lan 	GROUP(iso7816_data_h,		1),
72229ae0952SYixun Lan 	GROUP(pwm_f_h,			4),
72329ae0952SYixun Lan 	GROUP(cec_ao_a_h,		4),
72429ae0952SYixun Lan 	GROUP(cec_ao_b_h,		5),
72529ae0952SYixun Lan 	GROUP(hdmitx_sda,		1),
72629ae0952SYixun Lan 	GROUP(hdmitx_sck,		1),
72729ae0952SYixun Lan 	GROUP(hdmitx_hpd_in,		1),
72829ae0952SYixun Lan 	GROUP(spdif_out_h,		1),
72929ae0952SYixun Lan 	GROUP(spdif_in_h,		1),
73029ae0952SYixun Lan 	GROUP(tdm_b_din3_h,		6),
73129ae0952SYixun Lan 	GROUP(tdm_b_dout3_h,		5),
73229ae0952SYixun Lan 
73329ae0952SYixun Lan 	/* bank GPIOA */
73429ae0952SYixun Lan 	GROUP(i2c3_sda_a,		2),
73529ae0952SYixun Lan 	GROUP(i2c3_sck_a,		2),
73629ae0952SYixun Lan 	GROUP(pdm_din0_a,		1),
73729ae0952SYixun Lan 	GROUP(pdm_din1_a,		1),
73829ae0952SYixun Lan 	GROUP(pdm_din2_a,		1),
73929ae0952SYixun Lan 	GROUP(pdm_din3_a,		1),
74029ae0952SYixun Lan 	GROUP(pdm_dclk_a,		1),
74129ae0952SYixun Lan 	GROUP(spdif_in_a10,		1),
74229ae0952SYixun Lan 	GROUP(spdif_in_a12,		1),
74329ae0952SYixun Lan 	GROUP(spdif_out_a11,		1),
74429ae0952SYixun Lan 	GROUP(spdif_out_a13,		1),
74529ae0952SYixun Lan 	GROUP(tdm_b_slv_sclk,		2),
74629ae0952SYixun Lan 	GROUP(tdm_b_slv_fs,		2),
74729ae0952SYixun Lan 	GROUP(tdm_b_din0,		2),
74829ae0952SYixun Lan 	GROUP(tdm_b_din1,		2),
74929ae0952SYixun Lan 	GROUP(tdm_b_din2,		2),
75029ae0952SYixun Lan 	GROUP(tdm_b_din3_a,		2),
75129ae0952SYixun Lan 	GROUP(tdm_b_sclk,		1),
75229ae0952SYixun Lan 	GROUP(tdm_b_fs,			1),
75329ae0952SYixun Lan 	GROUP(tdm_b_dout0,		1),
75429ae0952SYixun Lan 	GROUP(tdm_b_dout1,		1),
75529ae0952SYixun Lan 	GROUP(tdm_b_dout2,		3),
75629ae0952SYixun Lan 	GROUP(tdm_b_dout3_a,		3),
75729ae0952SYixun Lan 	GROUP(tdm_c_slv_sclk_a,		3),
75829ae0952SYixun Lan 	GROUP(tdm_c_slv_fs_a,		3),
75929ae0952SYixun Lan 	GROUP(tdm_c_din0_a,		3),
76029ae0952SYixun Lan 	GROUP(tdm_c_din1_a,		3),
76129ae0952SYixun Lan 	GROUP(tdm_c_din2_a,		3),
76229ae0952SYixun Lan 	GROUP(tdm_c_din3_a,		3),
76329ae0952SYixun Lan 	GROUP(tdm_c_sclk_a,		2),
76429ae0952SYixun Lan 	GROUP(tdm_c_fs_a,		2),
76529ae0952SYixun Lan 	GROUP(tdm_c_dout0_a,		2),
76629ae0952SYixun Lan 	GROUP(tdm_c_dout1_a,		2),
76729ae0952SYixun Lan 	GROUP(tdm_c_dout2_a,		2),
76829ae0952SYixun Lan 	GROUP(tdm_c_dout3_a,		2),
76929ae0952SYixun Lan 	GROUP(mclk0_a,			1),
77029ae0952SYixun Lan 	GROUP(mclk1_a,			2),
77129ae0952SYixun Lan };
77229ae0952SYixun Lan 
77329ae0952SYixun Lan /* uart_ao_a */
77429ae0952SYixun Lan static const unsigned int uart_ao_a_tx_pins[]		= { GPIOAO_0 };
77529ae0952SYixun Lan static const unsigned int uart_ao_a_rx_pins[]		= { GPIOAO_1 };
77629ae0952SYixun Lan static const unsigned int uart_ao_a_cts_pins[]		= { GPIOE_0 };
77729ae0952SYixun Lan static const unsigned int uart_ao_a_rts_pins[]		= { GPIOE_1 };
77829ae0952SYixun Lan 
77929ae0952SYixun Lan /* uart_ao_b */
78029ae0952SYixun Lan static const unsigned int uart_ao_b_tx_2_pins[]		= { GPIOAO_2 };
78129ae0952SYixun Lan static const unsigned int uart_ao_b_rx_3_pins[]		= { GPIOAO_3 };
78229ae0952SYixun Lan static const unsigned int uart_ao_b_tx_8_pins[]		= { GPIOAO_8 };
78329ae0952SYixun Lan static const unsigned int uart_ao_b_rx_9_pins[]		= { GPIOAO_9 };
78429ae0952SYixun Lan static const unsigned int uart_ao_b_cts_pins[]		= { GPIOE_0 };
78529ae0952SYixun Lan static const unsigned int uart_ao_b_rts_pins[]		= { GPIOE_1 };
78629ae0952SYixun Lan 
78729ae0952SYixun Lan /* i2c_ao */
78829ae0952SYixun Lan static const unsigned int i2c_ao_sck_pins[]		= { GPIOAO_2 };
78929ae0952SYixun Lan static const unsigned int i2c_ao_sda_pins[]		= { GPIOAO_3 };
79029ae0952SYixun Lan 
79129ae0952SYixun Lan static const unsigned int i2c_ao_sck_e_pins[]		= { GPIOE_0 };
79229ae0952SYixun Lan static const unsigned int i2c_ao_sda_e_pins[]		= { GPIOE_1 };
79329ae0952SYixun Lan 
79429ae0952SYixun Lan /* i2c_ao_slave */
79529ae0952SYixun Lan static const unsigned int i2c_ao_slave_sck_pins[]	= { GPIOAO_2 };
79629ae0952SYixun Lan static const unsigned int i2c_ao_slave_sda_pins[]	= { GPIOAO_3 };
79729ae0952SYixun Lan 
79829ae0952SYixun Lan /* ir_in */
79929ae0952SYixun Lan static const unsigned int remote_ao_input_pins[]	= { GPIOAO_5 };
80029ae0952SYixun Lan 
80129ae0952SYixun Lan /* ir_out */
80229ae0952SYixun Lan static const unsigned int remote_ao_out_pins[]		= { GPIOAO_4 };
80329ae0952SYixun Lan 
804726e8d81SNeil Armstrong /* pwm_a_e */
805726e8d81SNeil Armstrong static const unsigned int pwm_a_e_pins[]		= { GPIOE_2 };
806726e8d81SNeil Armstrong 
80729ae0952SYixun Lan /* pwm_ao_a */
80829ae0952SYixun Lan static const unsigned int pwm_ao_a_pins[]		= { GPIOAO_11 };
80929ae0952SYixun Lan static const unsigned int pwm_ao_a_hiz_pins[]		= { GPIOAO_11 };
81029ae0952SYixun Lan 
81129ae0952SYixun Lan /* pwm_ao_b */
81229ae0952SYixun Lan static const unsigned int pwm_ao_b_pins[]		= { GPIOE_0 };
81329ae0952SYixun Lan 
81429ae0952SYixun Lan /* pwm_ao_c */
81529ae0952SYixun Lan static const unsigned int pwm_ao_c_4_pins[]		= { GPIOAO_4 };
81629ae0952SYixun Lan static const unsigned int pwm_ao_c_hiz_pins[]		= { GPIOAO_4 };
81729ae0952SYixun Lan static const unsigned int pwm_ao_c_6_pins[]		= { GPIOAO_6 };
81829ae0952SYixun Lan 
81929ae0952SYixun Lan /* pwm_ao_d */
82029ae0952SYixun Lan static const unsigned int pwm_ao_d_5_pins[]		= { GPIOAO_5 };
82129ae0952SYixun Lan static const unsigned int pwm_ao_d_10_pins[]		= { GPIOAO_10 };
82229ae0952SYixun Lan static const unsigned int pwm_ao_d_e_pins[]		= { GPIOE_1 };
82329ae0952SYixun Lan 
82429ae0952SYixun Lan /* jtag_a */
82529ae0952SYixun Lan static const unsigned int jtag_a_tdi_pins[]		= { GPIOAO_8 };
82629ae0952SYixun Lan static const unsigned int jtag_a_tdo_pins[]		= { GPIOAO_9 };
82729ae0952SYixun Lan static const unsigned int jtag_a_clk_pins[]		= { GPIOAO_6 };
82829ae0952SYixun Lan static const unsigned int jtag_a_tms_pins[]		= { GPIOAO_7 };
82929ae0952SYixun Lan 
83029ae0952SYixun Lan /* cec_ao */
83129ae0952SYixun Lan static const unsigned int cec_ao_a_pins[]		= { GPIOAO_10 };
83229ae0952SYixun Lan static const unsigned int cec_ao_b_pins[]		= { GPIOAO_10 };
83329ae0952SYixun Lan 
83429ae0952SYixun Lan /* tsin_ao_a */
83529ae0952SYixun Lan static const unsigned int tsin_ao_asop_pins[]		= { GPIOAO_6 };
83629ae0952SYixun Lan static const unsigned int tsin_ao_adin0_pins[]		= { GPIOAO_7 };
83729ae0952SYixun Lan static const unsigned int tsin_ao_aclk_pins[]		= { GPIOAO_8 };
83829ae0952SYixun Lan static const unsigned int tsin_ao_a_valid_pins[]	= { GPIOAO_9 };
83929ae0952SYixun Lan 
84029ae0952SYixun Lan /* spdif_ao_out */
84129ae0952SYixun Lan static const unsigned int spdif_ao_out_pins[]		= { GPIOAO_10 };
84229ae0952SYixun Lan 
84329ae0952SYixun Lan /* tdm_ao_b */
84429ae0952SYixun Lan static const unsigned int tdm_ao_b_slv_fs_pins[]	= { GPIOAO_7 };
84529ae0952SYixun Lan static const unsigned int tdm_ao_b_slv_sclk_pins[]	= { GPIOAO_8 };
84629ae0952SYixun Lan static const unsigned int tdm_ao_b_fs_pins[]		= { GPIOAO_7 };
84729ae0952SYixun Lan static const unsigned int tdm_ao_b_sclk_pins[]		= { GPIOAO_8 };
84829ae0952SYixun Lan static const unsigned int tdm_ao_b_din0_pins[]		= { GPIOAO_4 };
84929ae0952SYixun Lan static const unsigned int tdm_ao_b_din1_pins[]		= { GPIOAO_10 };
85029ae0952SYixun Lan static const unsigned int tdm_ao_b_din2_pins[]		= { GPIOAO_6 };
85129ae0952SYixun Lan static const unsigned int tdm_ao_b_dout0_pins[]		= { GPIOAO_4 };
85229ae0952SYixun Lan static const unsigned int tdm_ao_b_dout1_pins[]		= { GPIOAO_10 };
85329ae0952SYixun Lan static const unsigned int tdm_ao_b_dout2_pins[]		= { GPIOAO_6 };
85429ae0952SYixun Lan 
85529ae0952SYixun Lan /* mclk0_ao */
85629ae0952SYixun Lan static const unsigned int mclk0_ao_pins[]		= { GPIOAO_9 };
85729ae0952SYixun Lan 
85829ae0952SYixun Lan static struct meson_pmx_group meson_g12a_aobus_groups[] = {
85929ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_0),
86029ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_1),
86129ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_2),
86229ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_3),
86329ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_4),
86429ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_5),
86529ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_6),
86629ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_7),
86729ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_8),
86829ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_9),
86929ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_10),
87029ae0952SYixun Lan 	GPIO_GROUP(GPIOAO_11),
87129ae0952SYixun Lan 	GPIO_GROUP(GPIOE_0),
87229ae0952SYixun Lan 	GPIO_GROUP(GPIOE_1),
87329ae0952SYixun Lan 	GPIO_GROUP(GPIOE_2),
87429ae0952SYixun Lan 
87529ae0952SYixun Lan 	/* bank AO */
87629ae0952SYixun Lan 	GROUP(uart_ao_a_tx,		1),
87729ae0952SYixun Lan 	GROUP(uart_ao_a_rx,		1),
87829ae0952SYixun Lan 	GROUP(uart_ao_a_cts,		1),
87929ae0952SYixun Lan 	GROUP(uart_ao_a_rts,		1),
88029ae0952SYixun Lan 	GROUP(uart_ao_b_tx_2,		2),
88129ae0952SYixun Lan 	GROUP(uart_ao_b_rx_3,		2),
88229ae0952SYixun Lan 	GROUP(uart_ao_b_tx_8,		3),
88329ae0952SYixun Lan 	GROUP(uart_ao_b_rx_9,		3),
88429ae0952SYixun Lan 	GROUP(uart_ao_b_cts,		2),
88529ae0952SYixun Lan 	GROUP(uart_ao_b_rts,		2),
88629ae0952SYixun Lan 	GROUP(i2c_ao_sck,		1),
88729ae0952SYixun Lan 	GROUP(i2c_ao_sda,		1),
88829ae0952SYixun Lan 	GROUP(i2c_ao_sck_e,		4),
88929ae0952SYixun Lan 	GROUP(i2c_ao_sda_e,		4),
89029ae0952SYixun Lan 	GROUP(i2c_ao_slave_sck,		3),
89129ae0952SYixun Lan 	GROUP(i2c_ao_slave_sda,		3),
89229ae0952SYixun Lan 	GROUP(remote_ao_input,		1),
89329ae0952SYixun Lan 	GROUP(remote_ao_out,		1),
894726e8d81SNeil Armstrong 	GROUP(pwm_a_e,			3),
89529ae0952SYixun Lan 	GROUP(pwm_ao_a,			3),
89629ae0952SYixun Lan 	GROUP(pwm_ao_a_hiz,		2),
89729ae0952SYixun Lan 	GROUP(pwm_ao_b,			3),
89829ae0952SYixun Lan 	GROUP(pwm_ao_c_4,		3),
89929ae0952SYixun Lan 	GROUP(pwm_ao_c_hiz,		4),
90029ae0952SYixun Lan 	GROUP(pwm_ao_c_6,		3),
90129ae0952SYixun Lan 	GROUP(pwm_ao_d_5,		3),
90229ae0952SYixun Lan 	GROUP(pwm_ao_d_10,		3),
90329ae0952SYixun Lan 	GROUP(pwm_ao_d_e,		3),
90429ae0952SYixun Lan 	GROUP(jtag_a_tdi,		1),
90529ae0952SYixun Lan 	GROUP(jtag_a_tdo,		1),
90629ae0952SYixun Lan 	GROUP(jtag_a_clk,		1),
90729ae0952SYixun Lan 	GROUP(jtag_a_tms,		1),
90829ae0952SYixun Lan 	GROUP(cec_ao_a,			1),
90929ae0952SYixun Lan 	GROUP(cec_ao_b,			2),
91029ae0952SYixun Lan 	GROUP(tsin_ao_asop,		4),
91129ae0952SYixun Lan 	GROUP(tsin_ao_adin0,		4),
91229ae0952SYixun Lan 	GROUP(tsin_ao_aclk,		4),
91329ae0952SYixun Lan 	GROUP(tsin_ao_a_valid,		4),
91429ae0952SYixun Lan 	GROUP(spdif_ao_out,		4),
91529ae0952SYixun Lan 	GROUP(tdm_ao_b_dout0,		5),
91629ae0952SYixun Lan 	GROUP(tdm_ao_b_dout1,		5),
91729ae0952SYixun Lan 	GROUP(tdm_ao_b_dout2,		5),
91829ae0952SYixun Lan 	GROUP(tdm_ao_b_fs,		5),
91929ae0952SYixun Lan 	GROUP(tdm_ao_b_sclk,		5),
92029ae0952SYixun Lan 	GROUP(tdm_ao_b_din0,		6),
92129ae0952SYixun Lan 	GROUP(tdm_ao_b_din1,		6),
92229ae0952SYixun Lan 	GROUP(tdm_ao_b_din2,		6),
92329ae0952SYixun Lan 	GROUP(tdm_ao_b_slv_fs,		6),
92429ae0952SYixun Lan 	GROUP(tdm_ao_b_slv_sclk,	6),
92529ae0952SYixun Lan 	GROUP(mclk0_ao,			5),
92629ae0952SYixun Lan };
92729ae0952SYixun Lan 
92829ae0952SYixun Lan static const char * const gpio_periphs_groups[] = {
92929ae0952SYixun Lan 	"GPIOZ_0", "GPIOZ_1", "GPIOZ_2", "GPIOZ_3", "GPIOZ_4",
93029ae0952SYixun Lan 	"GPIOZ_5", "GPIOZ_6", "GPIOZ_7", "GPIOZ_8", "GPIOZ_9",
93129ae0952SYixun Lan 	"GPIOZ_10", "GPIOZ_11", "GPIOZ_12", "GPIOZ_13", "GPIOZ_14",
93229ae0952SYixun Lan 	"GPIOZ_15",
93329ae0952SYixun Lan 
93429ae0952SYixun Lan 	"GPIOH_0", "GPIOH_1", "GPIOH_2", "GPIOH_3", "GPIOH_4",
93529ae0952SYixun Lan 	"GPIOH_5", "GPIOH_6", "GPIOH_7", "GPIOH_8",
93629ae0952SYixun Lan 
93729ae0952SYixun Lan 	"BOOT_0", "BOOT_1", "BOOT_2", "BOOT_3", "BOOT_4",
93829ae0952SYixun Lan 	"BOOT_5", "BOOT_6", "BOOT_7", "BOOT_8", "BOOT_9",
93929ae0952SYixun Lan 	"BOOT_10", "BOOT_11", "BOOT_12", "BOOT_13", "BOOT_14",
94029ae0952SYixun Lan 	"BOOT_15",
94129ae0952SYixun Lan 
94229ae0952SYixun Lan 	"GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4",
94329ae0952SYixun Lan 	"GPIOC_5", "GPIOC_6", "GPIOC_7",
94429ae0952SYixun Lan 
94529ae0952SYixun Lan 	"GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4",
94629ae0952SYixun Lan 	"GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9",
94729ae0952SYixun Lan 	"GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14",
94829ae0952SYixun Lan 	"GPIOA_15",
94929ae0952SYixun Lan 
95029ae0952SYixun Lan 	"GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4",
95129ae0952SYixun Lan 	"GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9",
95229ae0952SYixun Lan 	"GPIOX_10", "GPIOX_11", "GPIOX_12", "GPIOX_13", "GPIOX_14",
95329ae0952SYixun Lan 	"GPIOX_15", "GPIOX_16", "GPIOX_17", "GPIOX_18", "GPIOX_19",
95429ae0952SYixun Lan };
95529ae0952SYixun Lan 
95629ae0952SYixun Lan static const char * const emmc_groups[] = {
95729ae0952SYixun Lan 	"emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2",
95829ae0952SYixun Lan 	"emmc_nand_d3", "emmc_nand_d4", "emmc_nand_d5",
95929ae0952SYixun Lan 	"emmc_nand_d6", "emmc_nand_d7",
96029ae0952SYixun Lan 	"emmc_clk", "emmc_cmd", "emmc_nand_ds",
96129ae0952SYixun Lan };
96229ae0952SYixun Lan 
96329ae0952SYixun Lan static const char * const nand_groups[] = {
96429ae0952SYixun Lan 	"emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2",
96529ae0952SYixun Lan 	"emmc_nand_d3", "emmc_nand_d4", "emmc_nand_d5",
96629ae0952SYixun Lan 	"emmc_nand_d6", "emmc_nand_d7",
96729ae0952SYixun Lan 	"nand_ce0", "nand_ale", "nand_cle",
96829ae0952SYixun Lan 	"nand_wen_clk", "nand_ren_wr", "nand_rb0",
96929ae0952SYixun Lan 	"emmc_nand_ds", "nand_ce1",
97029ae0952SYixun Lan };
97129ae0952SYixun Lan 
97229ae0952SYixun Lan static const char * const nor_groups[] = {
97329ae0952SYixun Lan 	"nor_d", "nor_q", "nor_c", "nor_cs",
97429ae0952SYixun Lan 	"nor_hold", "nor_wp",
97529ae0952SYixun Lan };
97629ae0952SYixun Lan 
97729ae0952SYixun Lan static const char * const sdio_groups[] = {
97829ae0952SYixun Lan 	"sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3",
97929ae0952SYixun Lan 	"sdio_cmd", "sdio_clk", "sdio_dummy",
98029ae0952SYixun Lan };
98129ae0952SYixun Lan 
98229ae0952SYixun Lan static const char * const sdcard_groups[] = {
98329ae0952SYixun Lan 	"sdcard_d0_c", "sdcard_d1_c", "sdcard_d2_c", "sdcard_d3_c",
98429ae0952SYixun Lan 	"sdcard_clk_c", "sdcard_cmd_c",
98529ae0952SYixun Lan 	"sdcard_d0_z", "sdcard_d1_z", "sdcard_d2_z", "sdcard_d3_z",
98629ae0952SYixun Lan 	"sdcard_clk_z", "sdcard_cmd_z",
98729ae0952SYixun Lan };
98829ae0952SYixun Lan 
98929ae0952SYixun Lan static const char * const spi0_groups[] = {
99029ae0952SYixun Lan 	"spi0_mosi_c", "spi0_miso_c", "spi0_ss0_c", "spi0_clk_c",
99129ae0952SYixun Lan 	"spi0_mosi_x", "spi0_miso_x", "spi0_ss0_x", "spi0_clk_x",
99229ae0952SYixun Lan };
99329ae0952SYixun Lan 
99429ae0952SYixun Lan static const char * const spi1_groups[] = {
99529ae0952SYixun Lan 	"spi1_mosi", "spi1_miso", "spi1_ss0", "spi1_clk",
99629ae0952SYixun Lan };
99729ae0952SYixun Lan 
99829ae0952SYixun Lan static const char * const i2c0_groups[] = {
99929ae0952SYixun Lan 	"i2c0_sda_c", "i2c0_sck_c",
100029ae0952SYixun Lan 	"i2c0_sda_z0", "i2c0_sck_z1",
100129ae0952SYixun Lan 	"i2c0_sda_z7", "i2c0_sck_z8",
100229ae0952SYixun Lan };
100329ae0952SYixun Lan 
100429ae0952SYixun Lan static const char * const i2c1_groups[] = {
100529ae0952SYixun Lan 	"i2c1_sda_x", "i2c1_sck_x",
100629ae0952SYixun Lan 	"i2c1_sda_h2", "i2c1_sck_h3",
100729ae0952SYixun Lan 	"i2c1_sda_h6", "i2c1_sck_h7",
100829ae0952SYixun Lan };
100929ae0952SYixun Lan 
101029ae0952SYixun Lan static const char * const i2c2_groups[] = {
101129ae0952SYixun Lan 	"i2c2_sda_x", "i2c2_sck_x",
101229ae0952SYixun Lan 	"i2c2_sda_z", "i2c2_sck_z",
101329ae0952SYixun Lan };
101429ae0952SYixun Lan 
101529ae0952SYixun Lan static const char * const i2c3_groups[] = {
101629ae0952SYixun Lan 	"i2c3_sda_h", "i2c3_sck_h",
101729ae0952SYixun Lan 	"i2c3_sda_a", "i2c3_sck_a",
101829ae0952SYixun Lan };
101929ae0952SYixun Lan 
102029ae0952SYixun Lan static const char * const uart_a_groups[] = {
102129ae0952SYixun Lan 	"uart_a_tx", "uart_a_rx", "uart_a_cts", "uart_a_rts",
102229ae0952SYixun Lan };
102329ae0952SYixun Lan 
102429ae0952SYixun Lan static const char * const uart_b_groups[] = {
102529ae0952SYixun Lan 	"uart_b_tx", "uart_b_rx",
102629ae0952SYixun Lan };
102729ae0952SYixun Lan 
102829ae0952SYixun Lan static const char * const uart_c_groups[] = {
102929ae0952SYixun Lan 	"uart_c_tx", "uart_c_rx", "uart_c_cts", "uart_c_rts",
103029ae0952SYixun Lan };
103129ae0952SYixun Lan 
103229ae0952SYixun Lan static const char * const uart_ao_a_c_groups[] = {
103329ae0952SYixun Lan 	"uart_ao_a_rx_c", "uart_ao_a_tx_c",
103429ae0952SYixun Lan };
103529ae0952SYixun Lan 
103629ae0952SYixun Lan static const char * const iso7816_groups[] = {
103729ae0952SYixun Lan 	"iso7816_clk_c", "iso7816_data_c",
103829ae0952SYixun Lan 	"iso7816_clk_x", "iso7816_data_x",
103929ae0952SYixun Lan 	"iso7816_clk_h", "iso7816_data_h",
104029ae0952SYixun Lan 	"iso7816_clk_z", "iso7816_data_z",
104129ae0952SYixun Lan };
104229ae0952SYixun Lan 
104329ae0952SYixun Lan static const char * const eth_groups[] = {
104429ae0952SYixun Lan 	"eth_rxd2_rgmii", "eth_rxd3_rgmii", "eth_rgmii_tx_clk",
104529ae0952SYixun Lan 	"eth_txd2_rgmii", "eth_txd3_rgmii", "eth_rgmii_rx_clk",
104629ae0952SYixun Lan 	"eth_txd0", "eth_txd1", "eth_txen", "eth_mdc",
104729ae0952SYixun Lan 	"eth_rxd0", "eth_rxd1", "eth_rx_dv", "eth_mdio",
104829ae0952SYixun Lan 	"eth_link_led", "eth_act_led",
104929ae0952SYixun Lan };
105029ae0952SYixun Lan 
105129ae0952SYixun Lan static const char * const pwm_a_groups[] = {
105229ae0952SYixun Lan 	"pwm_a",
105329ae0952SYixun Lan };
105429ae0952SYixun Lan 
105529ae0952SYixun Lan static const char * const pwm_b_groups[] = {
105629ae0952SYixun Lan 	"pwm_b_x7", "pwm_b_x19",
105729ae0952SYixun Lan };
105829ae0952SYixun Lan 
105929ae0952SYixun Lan static const char * const pwm_c_groups[] = {
106029ae0952SYixun Lan 	"pwm_c_c", "pwm_c_x5", "pwm_c_x8",
106129ae0952SYixun Lan };
106229ae0952SYixun Lan 
106329ae0952SYixun Lan static const char * const pwm_d_groups[] = {
106429ae0952SYixun Lan 	"pwm_d_x3", "pwm_d_x6",
106529ae0952SYixun Lan };
106629ae0952SYixun Lan 
106729ae0952SYixun Lan static const char * const pwm_e_groups[] = {
106829ae0952SYixun Lan 	"pwm_e",
106929ae0952SYixun Lan };
107029ae0952SYixun Lan 
107129ae0952SYixun Lan static const char * const pwm_f_groups[] = {
107229ae0952SYixun Lan 	"pwm_f_x", "pwm_f_h",
107329ae0952SYixun Lan };
107429ae0952SYixun Lan 
107529ae0952SYixun Lan static const char * const cec_ao_a_h_groups[] = {
107629ae0952SYixun Lan 	"cec_ao_a_h",
107729ae0952SYixun Lan };
107829ae0952SYixun Lan 
107929ae0952SYixun Lan static const char * const cec_ao_b_h_groups[] = {
108029ae0952SYixun Lan 	"cec_ao_b_h",
108129ae0952SYixun Lan };
108229ae0952SYixun Lan 
108329ae0952SYixun Lan static const char * const jtag_b_groups[] = {
108429ae0952SYixun Lan 	"jtag_b_tdi", "jtag_b_tdo", "jtag_b_clk", "jtag_b_tms",
108529ae0952SYixun Lan };
108629ae0952SYixun Lan 
108729ae0952SYixun Lan static const char * const bt565_a_groups[] = {
108829ae0952SYixun Lan 	"bt565_a_vs", "bt565_a_hs", "bt565_a_clk",
108929ae0952SYixun Lan 	"bt565_a_din0", "bt565_a_din1", "bt565_a_din2",
109029ae0952SYixun Lan 	"bt565_a_din3", "bt565_a_din4", "bt565_a_din5",
109129ae0952SYixun Lan 	"bt565_a_din6", "bt565_a_din7",
109229ae0952SYixun Lan };
109329ae0952SYixun Lan 
109429ae0952SYixun Lan static const char * const tsin_a_groups[] = {
109529ae0952SYixun Lan 	"tsin_a_valid", "tsin_a_sop", "tsin_a_din0",
109629ae0952SYixun Lan 	"tsin_a_clk",
109729ae0952SYixun Lan };
109829ae0952SYixun Lan 
109929ae0952SYixun Lan static const char * const tsin_b_groups[] = {
110029ae0952SYixun Lan 	"tsin_b_valid_x", "tsin_b_sop_x", "tsin_b_din0_x", "tsin_b_clk_x",
110129ae0952SYixun Lan 	"tsin_b_valid_z", "tsin_b_sop_z", "tsin_b_din0_z", "tsin_b_clk_z",
110229ae0952SYixun Lan 	"tsin_b_fail", "tsin_b_din1", "tsin_b_din2", "tsin_b_din3",
110329ae0952SYixun Lan 	"tsin_b_din4", "tsin_b_din5", "tsin_b_din6", "tsin_b_din7",
110429ae0952SYixun Lan };
110529ae0952SYixun Lan 
110629ae0952SYixun Lan static const char * const hdmitx_groups[] = {
110729ae0952SYixun Lan 	"hdmitx_sda", "hdmitx_sck", "hdmitx_hpd_in",
110829ae0952SYixun Lan };
110929ae0952SYixun Lan 
111029ae0952SYixun Lan static const char * const pdm_groups[] = {
111129ae0952SYixun Lan 	"pdm_din0_c", "pdm_din1_c", "pdm_din2_c", "pdm_din3_c",
111229ae0952SYixun Lan 	"pdm_dclk_c",
111329ae0952SYixun Lan 	"pdm_din0_x", "pdm_din1_x", "pdm_din2_x", "pdm_din3_x",
111429ae0952SYixun Lan 	"pdm_dclk_x",
111529ae0952SYixun Lan 	"pdm_din0_z", "pdm_din1_z", "pdm_din2_z", "pdm_din3_z",
111629ae0952SYixun Lan 	"pdm_dclk_z",
111729ae0952SYixun Lan 	"pdm_din0_a", "pdm_din1_a", "pdm_din2_a", "pdm_din3_a",
111829ae0952SYixun Lan 	"pdm_dclk_a",
111929ae0952SYixun Lan };
112029ae0952SYixun Lan 
112129ae0952SYixun Lan static const char * const spdif_in_groups[] = {
112229ae0952SYixun Lan 	"spdif_in_h", "spdif_in_a10", "spdif_in_a12",
112329ae0952SYixun Lan };
112429ae0952SYixun Lan 
112529ae0952SYixun Lan static const char * const spdif_out_groups[] = {
112629ae0952SYixun Lan 	"spdif_out_h", "spdif_out_a11", "spdif_out_a13",
112729ae0952SYixun Lan };
112829ae0952SYixun Lan 
112929ae0952SYixun Lan static const char * const mclk0_groups[] = {
113029ae0952SYixun Lan 	"mclk0_a",
113129ae0952SYixun Lan };
113229ae0952SYixun Lan 
113329ae0952SYixun Lan static const char * const mclk1_groups[] = {
113429ae0952SYixun Lan 	"mclk1_x", "mclk1_z", "mclk1_a",
113529ae0952SYixun Lan };
113629ae0952SYixun Lan 
113729ae0952SYixun Lan static const char * const tdm_a_groups[] = {
113829ae0952SYixun Lan 	"tdm_a_slv_sclk", "tdm_a_slv_fs", "tdm_a_sclk", "tdm_a_fs",
113929ae0952SYixun Lan 	"tdm_a_din0", "tdm_a_din1", "tdm_a_dout0", "tdm_a_dout1",
114029ae0952SYixun Lan };
114129ae0952SYixun Lan 
114229ae0952SYixun Lan static const char * const tdm_b_groups[] = {
114329ae0952SYixun Lan 	"tdm_b_slv_sclk", "tdm_b_slv_fs", "tdm_b_sclk", "tdm_b_fs",
114429ae0952SYixun Lan 	"tdm_b_din0", "tdm_b_din1", "tdm_b_din2",
114529ae0952SYixun Lan 	"tdm_b_din3_a", "tdm_b_din3_h",
114629ae0952SYixun Lan 	"tdm_b_dout0", "tdm_b_dout1", "tdm_b_dout2",
114729ae0952SYixun Lan 	"tdm_b_dout3_a", "tdm_b_dout3_h",
114829ae0952SYixun Lan };
114929ae0952SYixun Lan 
115029ae0952SYixun Lan static const char * const tdm_c_groups[] = {
115129ae0952SYixun Lan 	"tdm_c_slv_sclk_a", "tdm_c_slv_fs_a",
115229ae0952SYixun Lan 	"tdm_c_slv_sclk_z", "tdm_c_slv_fs_z",
115329ae0952SYixun Lan 	"tdm_c_sclk_a", "tdm_c_fs_a",
115429ae0952SYixun Lan 	"tdm_c_sclk_z", "tdm_c_fs_z",
115529ae0952SYixun Lan 	"tdm_c_din0_a", "tdm_c_din1_a",
115629ae0952SYixun Lan 	"tdm_c_din2_a", "tdm_c_din3_a",
115729ae0952SYixun Lan 	"tdm_c_din0_z", "tdm_c_din1_z",
115829ae0952SYixun Lan 	"tdm_c_din2_z", "tdm_c_din3_z",
115929ae0952SYixun Lan 	"tdm_c_dout0_a", "tdm_c_dout1_a",
116029ae0952SYixun Lan 	"tdm_c_dout2_a", "tdm_c_dout3_a",
116129ae0952SYixun Lan 	"tdm_c_dout0_z", "tdm_c_dout1_z",
116229ae0952SYixun Lan 	"tdm_c_dout2_z", "tdm_c_dout3_z",
116329ae0952SYixun Lan };
116429ae0952SYixun Lan 
116529ae0952SYixun Lan static const char * const gpio_aobus_groups[] = {
116629ae0952SYixun Lan 	"GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4",
116729ae0952SYixun Lan 	"GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9",
116829ae0952SYixun Lan 	"GPIOAO_10", "GPIOAO_11", "GPIOE_0", "GPIOE_1", "GPIOE_2",
116929ae0952SYixun Lan };
117029ae0952SYixun Lan 
117129ae0952SYixun Lan static const char * const uart_ao_a_groups[] = {
117229ae0952SYixun Lan 	"uart_ao_a_tx", "uart_ao_a_rx",
117329ae0952SYixun Lan 	"uart_ao_a_cts", "uart_ao_a_rts",
117429ae0952SYixun Lan };
117529ae0952SYixun Lan 
117629ae0952SYixun Lan static const char * const uart_ao_b_groups[] = {
117729ae0952SYixun Lan 	"uart_ao_b_tx_2", "uart_ao_b_rx_3",
117829ae0952SYixun Lan 	"uart_ao_b_tx_8", "uart_ao_b_rx_9",
117929ae0952SYixun Lan 	"uart_ao_b_cts", "uart_ao_b_rts",
118029ae0952SYixun Lan };
118129ae0952SYixun Lan 
118229ae0952SYixun Lan static const char * const i2c_ao_groups[] = {
118329ae0952SYixun Lan 	"i2c_ao_sck", "i2c_ao_sda",
118429ae0952SYixun Lan 	"i2c_ao_sck_e", "i2c_ao_sda_e",
118529ae0952SYixun Lan };
118629ae0952SYixun Lan 
118729ae0952SYixun Lan static const char * const i2c_ao_slave_groups[] = {
118829ae0952SYixun Lan 	"i2c_ao_slave_sck", "i2c_ao_slave_sda",
118929ae0952SYixun Lan };
119029ae0952SYixun Lan 
119129ae0952SYixun Lan static const char * const remote_ao_input_groups[] = {
119229ae0952SYixun Lan 	"remote_ao_input",
119329ae0952SYixun Lan };
119429ae0952SYixun Lan 
119529ae0952SYixun Lan static const char * const remote_ao_out_groups[] = {
119629ae0952SYixun Lan 	"remote_ao_out",
119729ae0952SYixun Lan };
119829ae0952SYixun Lan 
1199726e8d81SNeil Armstrong static const char * const pwm_a_e_groups[] = {
1200726e8d81SNeil Armstrong 	"pwm_a_e",
1201726e8d81SNeil Armstrong };
1202726e8d81SNeil Armstrong 
120329ae0952SYixun Lan static const char * const pwm_ao_a_groups[] = {
120429ae0952SYixun Lan 	"pwm_ao_a", "pwm_ao_a_hiz",
120529ae0952SYixun Lan };
120629ae0952SYixun Lan 
120729ae0952SYixun Lan static const char * const pwm_ao_b_groups[] = {
120829ae0952SYixun Lan 	"pwm_ao_b",
120929ae0952SYixun Lan };
121029ae0952SYixun Lan 
121129ae0952SYixun Lan static const char * const pwm_ao_c_groups[] = {
121229ae0952SYixun Lan 	"pwm_ao_c_4", "pwm_ao_c_hiz",
121329ae0952SYixun Lan 	"pwm_ao_c_6",
121429ae0952SYixun Lan };
121529ae0952SYixun Lan 
121629ae0952SYixun Lan static const char * const pwm_ao_d_groups[] = {
121729ae0952SYixun Lan 	"pwm_ao_d_5", "pwm_ao_d_10", "pwm_ao_d_e",
121829ae0952SYixun Lan };
121929ae0952SYixun Lan 
122029ae0952SYixun Lan static const char * const jtag_a_groups[] = {
122129ae0952SYixun Lan 	"jtag_a_tdi", "jtag_a_tdo", "jtag_a_clk", "jtag_a_tms",
122229ae0952SYixun Lan };
122329ae0952SYixun Lan 
122429ae0952SYixun Lan static const char * const cec_ao_a_groups[] = {
122529ae0952SYixun Lan 	"cec_ao_a",
122629ae0952SYixun Lan };
122729ae0952SYixun Lan 
122829ae0952SYixun Lan static const char * const cec_ao_b_groups[] = {
122929ae0952SYixun Lan 	"cec_ao_b",
123029ae0952SYixun Lan };
123129ae0952SYixun Lan 
123229ae0952SYixun Lan static const char * const tsin_ao_a_groups[] = {
123329ae0952SYixun Lan 	"tsin_ao_asop", "tsin_ao_adin0", "tsin_ao_aclk", "tsin_ao_a_valid",
123429ae0952SYixun Lan };
123529ae0952SYixun Lan 
123629ae0952SYixun Lan static const char * const spdif_ao_out_groups[] = {
123729ae0952SYixun Lan 	"spdif_ao_out",
123829ae0952SYixun Lan };
123929ae0952SYixun Lan 
124029ae0952SYixun Lan static const char * const tdm_ao_b_groups[] = {
124129ae0952SYixun Lan 	"tdm_ao_b_dout0", "tdm_ao_b_dout1", "tdm_ao_b_dout2",
124229ae0952SYixun Lan 	"tdm_ao_b_fs", "tdm_ao_b_sclk",
124329ae0952SYixun Lan 	"tdm_ao_b_din0", "tdm_ao_b_din1", "tdm_ao_b_din2",
124429ae0952SYixun Lan 	"tdm_ao_b_slv_fs", "tdm_ao_b_slv_sclk",
124529ae0952SYixun Lan };
124629ae0952SYixun Lan 
124729ae0952SYixun Lan static const char * const mclk0_ao_groups[] = {
124829ae0952SYixun Lan 	"mclk0_ao",
124929ae0952SYixun Lan };
125029ae0952SYixun Lan 
125129ae0952SYixun Lan static struct meson_pmx_func meson_g12a_periphs_functions[] = {
125229ae0952SYixun Lan 	FUNCTION(gpio_periphs),
125329ae0952SYixun Lan 	FUNCTION(emmc),
125429ae0952SYixun Lan 	FUNCTION(nor),
125529ae0952SYixun Lan 	FUNCTION(spi0),
125629ae0952SYixun Lan 	FUNCTION(spi1),
125729ae0952SYixun Lan 	FUNCTION(sdio),
125829ae0952SYixun Lan 	FUNCTION(nand),
125929ae0952SYixun Lan 	FUNCTION(sdcard),
126029ae0952SYixun Lan 	FUNCTION(i2c0),
126129ae0952SYixun Lan 	FUNCTION(i2c1),
126229ae0952SYixun Lan 	FUNCTION(i2c2),
126329ae0952SYixun Lan 	FUNCTION(i2c3),
126429ae0952SYixun Lan 	FUNCTION(uart_a),
126529ae0952SYixun Lan 	FUNCTION(uart_b),
126629ae0952SYixun Lan 	FUNCTION(uart_c),
126729ae0952SYixun Lan 	FUNCTION(uart_ao_a_c),
126829ae0952SYixun Lan 	FUNCTION(iso7816),
126929ae0952SYixun Lan 	FUNCTION(eth),
127029ae0952SYixun Lan 	FUNCTION(pwm_a),
127129ae0952SYixun Lan 	FUNCTION(pwm_b),
127229ae0952SYixun Lan 	FUNCTION(pwm_c),
127329ae0952SYixun Lan 	FUNCTION(pwm_d),
127429ae0952SYixun Lan 	FUNCTION(pwm_e),
127529ae0952SYixun Lan 	FUNCTION(pwm_f),
127629ae0952SYixun Lan 	FUNCTION(cec_ao_a_h),
127729ae0952SYixun Lan 	FUNCTION(cec_ao_b_h),
127829ae0952SYixun Lan 	FUNCTION(jtag_b),
127929ae0952SYixun Lan 	FUNCTION(bt565_a),
128029ae0952SYixun Lan 	FUNCTION(tsin_a),
128129ae0952SYixun Lan 	FUNCTION(tsin_b),
128229ae0952SYixun Lan 	FUNCTION(hdmitx),
128329ae0952SYixun Lan 	FUNCTION(pdm),
128429ae0952SYixun Lan 	FUNCTION(spdif_out),
128529ae0952SYixun Lan 	FUNCTION(spdif_in),
128629ae0952SYixun Lan 	FUNCTION(mclk0),
128729ae0952SYixun Lan 	FUNCTION(mclk1),
128829ae0952SYixun Lan 	FUNCTION(tdm_a),
128929ae0952SYixun Lan 	FUNCTION(tdm_b),
129029ae0952SYixun Lan 	FUNCTION(tdm_c),
129129ae0952SYixun Lan };
129229ae0952SYixun Lan 
129329ae0952SYixun Lan static struct meson_pmx_func meson_g12a_aobus_functions[] = {
129429ae0952SYixun Lan 	FUNCTION(gpio_aobus),
129529ae0952SYixun Lan 	FUNCTION(uart_ao_a),
129629ae0952SYixun Lan 	FUNCTION(uart_ao_b),
129729ae0952SYixun Lan 	FUNCTION(i2c_ao),
129829ae0952SYixun Lan 	FUNCTION(i2c_ao_slave),
129929ae0952SYixun Lan 	FUNCTION(remote_ao_input),
130029ae0952SYixun Lan 	FUNCTION(remote_ao_out),
1301726e8d81SNeil Armstrong 	FUNCTION(pwm_a_e),
130229ae0952SYixun Lan 	FUNCTION(pwm_ao_a),
130329ae0952SYixun Lan 	FUNCTION(pwm_ao_b),
130429ae0952SYixun Lan 	FUNCTION(pwm_ao_c),
130529ae0952SYixun Lan 	FUNCTION(pwm_ao_d),
130629ae0952SYixun Lan 	FUNCTION(jtag_a),
130729ae0952SYixun Lan 	FUNCTION(cec_ao_a),
130829ae0952SYixun Lan 	FUNCTION(cec_ao_b),
130929ae0952SYixun Lan 	FUNCTION(tsin_ao_a),
131029ae0952SYixun Lan 	FUNCTION(spdif_ao_out),
131129ae0952SYixun Lan 	FUNCTION(tdm_ao_b),
131229ae0952SYixun Lan 	FUNCTION(mclk0_ao),
131329ae0952SYixun Lan };
131429ae0952SYixun Lan 
131529ae0952SYixun Lan static struct meson_bank meson_g12a_periphs_banks[] = {
13162484ae57SGuillaume La Roque 	/* name  first  last  irq  pullen  pull  dir  out  in  ds */
13172484ae57SGuillaume La Roque 	BANK_DS("Z",    GPIOZ_0,    GPIOZ_15, 12, 27,
13182484ae57SGuillaume La Roque 		4,  0,  4,  0,  12,  0,  13, 0,  14, 0, 5, 0),
13192484ae57SGuillaume La Roque 	BANK_DS("H",    GPIOH_0,    GPIOH_8, 28, 36,
13202484ae57SGuillaume La Roque 		3,  0,  3,  0,  9,  0,  10,  0,  11,  0, 4, 0),
13212484ae57SGuillaume La Roque 	BANK_DS("BOOT", BOOT_0,     BOOT_15,  37, 52,
13222484ae57SGuillaume La Roque 		0,  0,  0,  0,  0, 0,  1, 0,  2, 0, 0, 0),
13232484ae57SGuillaume La Roque 	BANK_DS("C",    GPIOC_0,    GPIOC_7,  53, 60,
13242484ae57SGuillaume La Roque 		1,  0,  1,  0,  3, 0,  4, 0,  5, 0, 1, 0),
13252484ae57SGuillaume La Roque 	BANK_DS("A",    GPIOA_0,    GPIOA_15,  61, 76,
13262484ae57SGuillaume La Roque 		5,  0,  5,  0,  16,  0,  17,  0,  18,  0, 6, 0),
13272484ae57SGuillaume La Roque 	BANK_DS("X",    GPIOX_0,    GPIOX_19,   77, 96,
13282484ae57SGuillaume La Roque 		2,  0,  2,  0,  6,  0,  7,  0,  8,  0, 2, 0),
132929ae0952SYixun Lan };
133029ae0952SYixun Lan 
133129ae0952SYixun Lan static struct meson_bank meson_g12a_aobus_banks[] = {
13322484ae57SGuillaume La Roque 	/* name  first  last  irq  pullen  pull  dir  out  in  ds */
13332484ae57SGuillaume La Roque 	BANK_DS("AO", GPIOAO_0, GPIOAO_11, 0, 11, 3, 0, 2, 0, 0, 0, 4, 0, 1, 0,
13342484ae57SGuillaume La Roque 		0, 0),
133529ae0952SYixun Lan 	/* GPIOE actually located in the AO bank */
13362484ae57SGuillaume La Roque 	BANK_DS("E", GPIOE_0, GPIOE_2, 97, 99, 3, 16, 2, 16, 0, 16, 4, 16, 1,
13372484ae57SGuillaume La Roque 		16, 1, 0),
133829ae0952SYixun Lan };
133929ae0952SYixun Lan 
134029ae0952SYixun Lan static struct meson_pmx_bank meson_g12a_periphs_pmx_banks[] = {
134129ae0952SYixun Lan 	/*	 name	 first		lask	   reg	offset  */
134229ae0952SYixun Lan 	BANK_PMX("Z",    GPIOZ_0, GPIOZ_15, 0x6, 0),
134329ae0952SYixun Lan 	BANK_PMX("H",    GPIOH_0, GPIOH_8,  0xb, 0),
134429ae0952SYixun Lan 	BANK_PMX("BOOT", BOOT_0,  BOOT_15,  0x0, 0),
134529ae0952SYixun Lan 	BANK_PMX("C",    GPIOC_0, GPIOC_7,  0x9, 0),
134629ae0952SYixun Lan 	BANK_PMX("A",    GPIOA_0, GPIOA_15, 0xd, 0),
134729ae0952SYixun Lan 	BANK_PMX("X",    GPIOX_0, GPIOX_19, 0x3, 0),
134829ae0952SYixun Lan };
134929ae0952SYixun Lan 
135029ae0952SYixun Lan static struct meson_axg_pmx_data meson_g12a_periphs_pmx_banks_data = {
135129ae0952SYixun Lan 	.pmx_banks	= meson_g12a_periphs_pmx_banks,
135229ae0952SYixun Lan 	.num_pmx_banks	= ARRAY_SIZE(meson_g12a_periphs_pmx_banks),
135329ae0952SYixun Lan };
135429ae0952SYixun Lan 
135529ae0952SYixun Lan static struct meson_pmx_bank meson_g12a_aobus_pmx_banks[] = {
135629ae0952SYixun Lan 	BANK_PMX("AO",  GPIOAO_0, GPIOAO_11, 0x0, 0),
135729ae0952SYixun Lan 	BANK_PMX("E",   GPIOE_0,  GPIOE_2,   0x1, 16),
135829ae0952SYixun Lan };
135929ae0952SYixun Lan 
136029ae0952SYixun Lan static struct meson_axg_pmx_data meson_g12a_aobus_pmx_banks_data = {
136129ae0952SYixun Lan 	.pmx_banks	= meson_g12a_aobus_pmx_banks,
136229ae0952SYixun Lan 	.num_pmx_banks	= ARRAY_SIZE(meson_g12a_aobus_pmx_banks),
136329ae0952SYixun Lan };
136429ae0952SYixun Lan 
1365fd422964SQianggui Song static int meson_g12a_aobus_parse_dt_extra(struct meson_pinctrl *pc)
1366fd422964SQianggui Song {
1367fd422964SQianggui Song 	pc->reg_pull = pc->reg_gpio;
1368fd422964SQianggui Song 	pc->reg_pullen = pc->reg_gpio;
1369fd422964SQianggui Song 
1370fd422964SQianggui Song 	return 0;
1371fd422964SQianggui Song }
1372fd422964SQianggui Song 
137329ae0952SYixun Lan static struct meson_pinctrl_data meson_g12a_periphs_pinctrl_data = {
137429ae0952SYixun Lan 	.name		= "periphs-banks",
137529ae0952SYixun Lan 	.pins		= meson_g12a_periphs_pins,
137629ae0952SYixun Lan 	.groups		= meson_g12a_periphs_groups,
137729ae0952SYixun Lan 	.funcs		= meson_g12a_periphs_functions,
137829ae0952SYixun Lan 	.banks		= meson_g12a_periphs_banks,
137929ae0952SYixun Lan 	.num_pins	= ARRAY_SIZE(meson_g12a_periphs_pins),
138029ae0952SYixun Lan 	.num_groups	= ARRAY_SIZE(meson_g12a_periphs_groups),
138129ae0952SYixun Lan 	.num_funcs	= ARRAY_SIZE(meson_g12a_periphs_functions),
138229ae0952SYixun Lan 	.num_banks	= ARRAY_SIZE(meson_g12a_periphs_banks),
138329ae0952SYixun Lan 	.pmx_ops	= &meson_axg_pmx_ops,
138429ae0952SYixun Lan 	.pmx_data	= &meson_g12a_periphs_pmx_banks_data,
138529ae0952SYixun Lan };
138629ae0952SYixun Lan 
138729ae0952SYixun Lan static struct meson_pinctrl_data meson_g12a_aobus_pinctrl_data = {
138829ae0952SYixun Lan 	.name		= "aobus-banks",
138929ae0952SYixun Lan 	.pins		= meson_g12a_aobus_pins,
139029ae0952SYixun Lan 	.groups		= meson_g12a_aobus_groups,
139129ae0952SYixun Lan 	.funcs		= meson_g12a_aobus_functions,
139229ae0952SYixun Lan 	.banks		= meson_g12a_aobus_banks,
139329ae0952SYixun Lan 	.num_pins	= ARRAY_SIZE(meson_g12a_aobus_pins),
139429ae0952SYixun Lan 	.num_groups	= ARRAY_SIZE(meson_g12a_aobus_groups),
139529ae0952SYixun Lan 	.num_funcs	= ARRAY_SIZE(meson_g12a_aobus_functions),
139629ae0952SYixun Lan 	.num_banks	= ARRAY_SIZE(meson_g12a_aobus_banks),
139729ae0952SYixun Lan 	.pmx_ops	= &meson_axg_pmx_ops,
139829ae0952SYixun Lan 	.pmx_data	= &meson_g12a_aobus_pmx_banks_data,
1399fd422964SQianggui Song 	.parse_dt	= meson_g12a_aobus_parse_dt_extra,
140029ae0952SYixun Lan };
140129ae0952SYixun Lan 
140229ae0952SYixun Lan static const struct of_device_id meson_g12a_pinctrl_dt_match[] = {
140329ae0952SYixun Lan 	{
140429ae0952SYixun Lan 		.compatible = "amlogic,meson-g12a-periphs-pinctrl",
140529ae0952SYixun Lan 		.data = &meson_g12a_periphs_pinctrl_data,
140629ae0952SYixun Lan 	},
140729ae0952SYixun Lan 	{
140829ae0952SYixun Lan 		.compatible = "amlogic,meson-g12a-aobus-pinctrl",
140929ae0952SYixun Lan 		.data = &meson_g12a_aobus_pinctrl_data,
141029ae0952SYixun Lan 	},
141129ae0952SYixun Lan 	{ },
141229ae0952SYixun Lan };
141329ae0952SYixun Lan 
141429ae0952SYixun Lan static struct platform_driver meson_g12a_pinctrl_driver = {
141529ae0952SYixun Lan 	.probe  = meson_pinctrl_probe,
141629ae0952SYixun Lan 	.driver = {
141729ae0952SYixun Lan 		.name	= "meson-g12a-pinctrl",
141829ae0952SYixun Lan 		.of_match_table = meson_g12a_pinctrl_dt_match,
141929ae0952SYixun Lan 	},
142029ae0952SYixun Lan };
142129ae0952SYixun Lan 
142229ae0952SYixun Lan builtin_platform_driver(meson_g12a_pinctrl_driver);
1423