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