xref: /openbmc/u-boot/drivers/pinctrl/meson/pinctrl-meson-axg.c (revision 10d3e90f46feace58f4141b696d91644e594e3ed)
18587839fSJerome Brunet // SPDX-License-Identifier: GPL-2.0+
28587839fSJerome Brunet /*
38587839fSJerome Brunet  * (C) Copyright (C) 2018 Neil Armstrong <narmstrong@baylibre.com>
48587839fSJerome Brunet  *
58587839fSJerome Brunet  * Based on code from Linux kernel:
68587839fSJerome Brunet  *  Copyright (c) 2017 Amlogic, Inc. All rights reserved.
78587839fSJerome Brunet  *  Author: Xingyu Chen <xingyu.chen@amlogic.com>
88587839fSJerome Brunet  */
98587839fSJerome Brunet 
108587839fSJerome Brunet #include <common.h>
118587839fSJerome Brunet #include <dm.h>
128587839fSJerome Brunet #include <dm/pinctrl.h>
138587839fSJerome Brunet #include <dt-bindings/gpio/meson-axg-gpio.h>
148587839fSJerome Brunet 
158587839fSJerome Brunet #include "pinctrl-meson-axg.h"
168587839fSJerome Brunet 
17*139ebe9eSCarlo Caione #define EE_OFF	15
188587839fSJerome Brunet 
198587839fSJerome Brunet /* emmc */
208587839fSJerome Brunet static const unsigned int emmc_nand_d0_pins[] = {BOOT_0};
218587839fSJerome Brunet static const unsigned int emmc_nand_d1_pins[] = {BOOT_1};
228587839fSJerome Brunet static const unsigned int emmc_nand_d2_pins[] = {BOOT_2};
238587839fSJerome Brunet static const unsigned int emmc_nand_d3_pins[] = {BOOT_3};
248587839fSJerome Brunet static const unsigned int emmc_nand_d4_pins[] = {BOOT_4};
258587839fSJerome Brunet static const unsigned int emmc_nand_d5_pins[] = {BOOT_5};
268587839fSJerome Brunet static const unsigned int emmc_nand_d6_pins[] = {BOOT_6};
278587839fSJerome Brunet static const unsigned int emmc_nand_d7_pins[] = {BOOT_7};
288587839fSJerome Brunet 
298587839fSJerome Brunet static const unsigned int emmc_clk_pins[] = {BOOT_8};
308587839fSJerome Brunet static const unsigned int emmc_cmd_pins[] = {BOOT_10};
318587839fSJerome Brunet static const unsigned int emmc_ds_pins[]  = {BOOT_13};
328587839fSJerome Brunet 
338587839fSJerome Brunet /* nand */
348587839fSJerome Brunet static const unsigned int nand_ce0_pins[] = {BOOT_8};
358587839fSJerome Brunet static const unsigned int nand_ale_pins[] = {BOOT_9};
368587839fSJerome Brunet static const unsigned int nand_cle_pins[] = {BOOT_10};
378587839fSJerome Brunet static const unsigned int nand_wen_clk_pins[] = {BOOT_11};
388587839fSJerome Brunet static const unsigned int nand_ren_wr_pins[] = {BOOT_12};
398587839fSJerome Brunet static const unsigned int nand_rb0_pins[] = {BOOT_13};
408587839fSJerome Brunet 
418587839fSJerome Brunet /* nor */
428587839fSJerome Brunet static const unsigned int nor_hold_pins[] = {BOOT_3};
438587839fSJerome Brunet static const unsigned int nor_d_pins[] = {BOOT_4};
448587839fSJerome Brunet static const unsigned int nor_q_pins[] = {BOOT_5};
458587839fSJerome Brunet static const unsigned int nor_c_pins[] = {BOOT_6};
468587839fSJerome Brunet static const unsigned int nor_wp_pins[] = {BOOT_9};
478587839fSJerome Brunet static const unsigned int nor_cs_pins[] = {BOOT_14};
488587839fSJerome Brunet 
498587839fSJerome Brunet /* sdio */
508587839fSJerome Brunet static const unsigned int sdio_d0_pins[] = {GPIOX_0};
518587839fSJerome Brunet static const unsigned int sdio_d1_pins[] = {GPIOX_1};
528587839fSJerome Brunet static const unsigned int sdio_d2_pins[] = {GPIOX_2};
538587839fSJerome Brunet static const unsigned int sdio_d3_pins[] = {GPIOX_3};
548587839fSJerome Brunet static const unsigned int sdio_clk_pins[] = {GPIOX_4};
558587839fSJerome Brunet static const unsigned int sdio_cmd_pins[] = {GPIOX_5};
568587839fSJerome Brunet 
578587839fSJerome Brunet /* spi0 */
588587839fSJerome Brunet static const unsigned int spi0_clk_pins[] = {GPIOZ_0};
598587839fSJerome Brunet static const unsigned int spi0_mosi_pins[] = {GPIOZ_1};
608587839fSJerome Brunet static const unsigned int spi0_miso_pins[] = {GPIOZ_2};
618587839fSJerome Brunet static const unsigned int spi0_ss0_pins[] = {GPIOZ_3};
628587839fSJerome Brunet static const unsigned int spi0_ss1_pins[] = {GPIOZ_4};
638587839fSJerome Brunet static const unsigned int spi0_ss2_pins[] = {GPIOZ_5};
648587839fSJerome Brunet 
658587839fSJerome Brunet /* spi1 */
668587839fSJerome Brunet static const unsigned int spi1_clk_x_pins[] = {GPIOX_19};
678587839fSJerome Brunet static const unsigned int spi1_mosi_x_pins[] = {GPIOX_17};
688587839fSJerome Brunet static const unsigned int spi1_miso_x_pins[] = {GPIOX_18};
698587839fSJerome Brunet static const unsigned int spi1_ss0_x_pins[] = {GPIOX_16};
708587839fSJerome Brunet 
718587839fSJerome Brunet static const unsigned int spi1_clk_a_pins[] = {GPIOA_4};
728587839fSJerome Brunet static const unsigned int spi1_mosi_a_pins[] = {GPIOA_2};
738587839fSJerome Brunet static const unsigned int spi1_miso_a_pins[] = {GPIOA_3};
748587839fSJerome Brunet static const unsigned int spi1_ss0_a_pins[] = {GPIOA_5};
758587839fSJerome Brunet static const unsigned int spi1_ss1_pins[] = {GPIOA_6};
768587839fSJerome Brunet 
778587839fSJerome Brunet /* i2c0 */
788587839fSJerome Brunet static const unsigned int i2c0_sck_pins[] = {GPIOZ_6};
798587839fSJerome Brunet static const unsigned int i2c0_sda_pins[] = {GPIOZ_7};
808587839fSJerome Brunet 
818587839fSJerome Brunet /* i2c1 */
828587839fSJerome Brunet static const unsigned int i2c1_sck_z_pins[] = {GPIOZ_8};
838587839fSJerome Brunet static const unsigned int i2c1_sda_z_pins[] = {GPIOZ_9};
848587839fSJerome Brunet 
858587839fSJerome Brunet static const unsigned int i2c1_sck_x_pins[] = {GPIOX_16};
868587839fSJerome Brunet static const unsigned int i2c1_sda_x_pins[] = {GPIOX_17};
878587839fSJerome Brunet 
888587839fSJerome Brunet /* i2c2 */
898587839fSJerome Brunet static const unsigned int i2c2_sck_x_pins[] = {GPIOX_18};
908587839fSJerome Brunet static const unsigned int i2c2_sda_x_pins[] = {GPIOX_19};
918587839fSJerome Brunet 
928587839fSJerome Brunet static const unsigned int i2c2_sda_a_pins[] = {GPIOA_17};
938587839fSJerome Brunet static const unsigned int i2c2_sck_a_pins[] = {GPIOA_18};
948587839fSJerome Brunet 
958587839fSJerome Brunet /* i2c3 */
968587839fSJerome Brunet static const unsigned int i2c3_sda_a6_pins[] = {GPIOA_6};
978587839fSJerome Brunet static const unsigned int i2c3_sck_a7_pins[] = {GPIOA_7};
988587839fSJerome Brunet 
998587839fSJerome Brunet static const unsigned int i2c3_sda_a12_pins[] = {GPIOA_12};
1008587839fSJerome Brunet static const unsigned int i2c3_sck_a13_pins[] = {GPIOA_13};
1018587839fSJerome Brunet 
1028587839fSJerome Brunet static const unsigned int i2c3_sda_a19_pins[] = {GPIOA_19};
1038587839fSJerome Brunet static const unsigned int i2c3_sck_a20_pins[] = {GPIOA_20};
1048587839fSJerome Brunet 
1058587839fSJerome Brunet /* uart_a */
1068587839fSJerome Brunet static const unsigned int uart_rts_a_pins[] = {GPIOX_11};
1078587839fSJerome Brunet static const unsigned int uart_cts_a_pins[] = {GPIOX_10};
1088587839fSJerome Brunet static const unsigned int uart_tx_a_pins[] = {GPIOX_8};
1098587839fSJerome Brunet static const unsigned int uart_rx_a_pins[] = {GPIOX_9};
1108587839fSJerome Brunet 
1118587839fSJerome Brunet /* uart_b */
1128587839fSJerome Brunet static const unsigned int uart_rts_b_z_pins[] = {GPIOZ_0};
1138587839fSJerome Brunet static const unsigned int uart_cts_b_z_pins[] = {GPIOZ_1};
1148587839fSJerome Brunet static const unsigned int uart_tx_b_z_pins[] = {GPIOZ_2};
1158587839fSJerome Brunet static const unsigned int uart_rx_b_z_pins[] = {GPIOZ_3};
1168587839fSJerome Brunet 
1178587839fSJerome Brunet static const unsigned int uart_rts_b_x_pins[] = {GPIOX_18};
1188587839fSJerome Brunet static const unsigned int uart_cts_b_x_pins[] = {GPIOX_19};
1198587839fSJerome Brunet static const unsigned int uart_tx_b_x_pins[] = {GPIOX_16};
1208587839fSJerome Brunet static const unsigned int uart_rx_b_x_pins[] = {GPIOX_17};
1218587839fSJerome Brunet 
1228587839fSJerome Brunet /* uart_ao_b */
1238587839fSJerome Brunet static const unsigned int uart_ao_tx_b_z_pins[] = {GPIOZ_8};
1248587839fSJerome Brunet static const unsigned int uart_ao_rx_b_z_pins[] = {GPIOZ_9};
1258587839fSJerome Brunet static const unsigned int uart_ao_cts_b_z_pins[] = {GPIOZ_6};
1268587839fSJerome Brunet static const unsigned int uart_ao_rts_b_z_pins[] = {GPIOZ_7};
1278587839fSJerome Brunet 
1288587839fSJerome Brunet /* pwm_a */
1298587839fSJerome Brunet static const unsigned int pwm_a_z_pins[] = {GPIOZ_5};
1308587839fSJerome Brunet 
1318587839fSJerome Brunet static const unsigned int pwm_a_x18_pins[] = {GPIOX_18};
1328587839fSJerome Brunet static const unsigned int pwm_a_x20_pins[] = {GPIOX_20};
1338587839fSJerome Brunet 
1348587839fSJerome Brunet static const unsigned int pwm_a_a_pins[] = {GPIOA_14};
1358587839fSJerome Brunet 
1368587839fSJerome Brunet /* pwm_b */
1378587839fSJerome Brunet static const unsigned int pwm_b_z_pins[] = {GPIOZ_4};
1388587839fSJerome Brunet 
1398587839fSJerome Brunet static const unsigned int pwm_b_x_pins[] = {GPIOX_19};
1408587839fSJerome Brunet 
1418587839fSJerome Brunet static const unsigned int pwm_b_a_pins[] = {GPIOA_15};
1428587839fSJerome Brunet 
1438587839fSJerome Brunet /* pwm_c */
1448587839fSJerome Brunet static const unsigned int pwm_c_x10_pins[] = {GPIOX_10};
1458587839fSJerome Brunet static const unsigned int pwm_c_x17_pins[] = {GPIOX_17};
1468587839fSJerome Brunet 
1478587839fSJerome Brunet static const unsigned int pwm_c_a_pins[] = {GPIOA_16};
1488587839fSJerome Brunet 
1498587839fSJerome Brunet /* pwm_d */
1508587839fSJerome Brunet static const unsigned int pwm_d_x11_pins[] = {GPIOX_11};
1518587839fSJerome Brunet static const unsigned int pwm_d_x16_pins[] = {GPIOX_16};
1528587839fSJerome Brunet 
1538587839fSJerome Brunet /* pwm_vs */
1548587839fSJerome Brunet static const unsigned int pwm_vs_pins[] = {GPIOA_0};
1558587839fSJerome Brunet 
1568587839fSJerome Brunet /* spdif_in */
1578587839fSJerome Brunet static const unsigned int spdif_in_z_pins[] = {GPIOZ_4};
1588587839fSJerome Brunet 
1598587839fSJerome Brunet static const unsigned int spdif_in_a1_pins[] = {GPIOA_1};
1608587839fSJerome Brunet static const unsigned int spdif_in_a7_pins[] = {GPIOA_7};
1618587839fSJerome Brunet static const unsigned int spdif_in_a19_pins[] = {GPIOA_19};
1628587839fSJerome Brunet static const unsigned int spdif_in_a20_pins[] = {GPIOA_20};
1638587839fSJerome Brunet 
1648587839fSJerome Brunet /* spdif_out */
1658587839fSJerome Brunet static const unsigned int spdif_out_z_pins[] = {GPIOZ_5};
1668587839fSJerome Brunet 
1678587839fSJerome Brunet static const unsigned int spdif_out_a1_pins[] = {GPIOA_1};
1688587839fSJerome Brunet static const unsigned int spdif_out_a11_pins[] = {GPIOA_11};
1698587839fSJerome Brunet static const unsigned int spdif_out_a19_pins[] = {GPIOA_19};
1708587839fSJerome Brunet static const unsigned int spdif_out_a20_pins[] = {GPIOA_20};
1718587839fSJerome Brunet 
1728587839fSJerome Brunet /* jtag_ee */
1738587839fSJerome Brunet static const unsigned int jtag_tdo_x_pins[] = {GPIOX_0};
1748587839fSJerome Brunet static const unsigned int jtag_tdi_x_pins[] = {GPIOX_1};
1758587839fSJerome Brunet static const unsigned int jtag_clk_x_pins[] = {GPIOX_4};
1768587839fSJerome Brunet static const unsigned int jtag_tms_x_pins[] = {GPIOX_5};
1778587839fSJerome Brunet 
1788587839fSJerome Brunet /* eth */
1798587839fSJerome Brunet static const unsigned int eth_txd0_x_pins[] = {GPIOX_8};
1808587839fSJerome Brunet static const unsigned int eth_txd1_x_pins[] = {GPIOX_9};
1818587839fSJerome Brunet static const unsigned int eth_txen_x_pins[] = {GPIOX_10};
1828587839fSJerome Brunet static const unsigned int eth_rgmii_rx_clk_x_pins[] = {GPIOX_12};
1838587839fSJerome Brunet static const unsigned int eth_rxd0_x_pins[] = {GPIOX_13};
1848587839fSJerome Brunet static const unsigned int eth_rxd1_x_pins[] = {GPIOX_14};
1858587839fSJerome Brunet static const unsigned int eth_rx_dv_x_pins[] = {GPIOX_15};
1868587839fSJerome Brunet static const unsigned int eth_mdio_x_pins[] = {GPIOX_21};
1878587839fSJerome Brunet static const unsigned int eth_mdc_x_pins[] = {GPIOX_22};
1888587839fSJerome Brunet 
1898587839fSJerome Brunet static const unsigned int eth_txd0_y_pins[] = {GPIOY_10};
1908587839fSJerome Brunet static const unsigned int eth_txd1_y_pins[] = {GPIOY_11};
1918587839fSJerome Brunet static const unsigned int eth_txen_y_pins[] = {GPIOY_9};
1928587839fSJerome Brunet static const unsigned int eth_rgmii_rx_clk_y_pins[] = {GPIOY_2};
1938587839fSJerome Brunet static const unsigned int eth_rxd0_y_pins[] = {GPIOY_4};
1948587839fSJerome Brunet static const unsigned int eth_rxd1_y_pins[] = {GPIOY_5};
1958587839fSJerome Brunet static const unsigned int eth_rx_dv_y_pins[] = {GPIOY_3};
1968587839fSJerome Brunet static const unsigned int eth_mdio_y_pins[] = {GPIOY_0};
1978587839fSJerome Brunet static const unsigned int eth_mdc_y_pins[] = {GPIOY_1};
1988587839fSJerome Brunet 
1998587839fSJerome Brunet static const unsigned int eth_rxd2_rgmii_pins[] = {GPIOY_6};
2008587839fSJerome Brunet static const unsigned int eth_rxd3_rgmii_pins[] = {GPIOY_7};
2018587839fSJerome Brunet static const unsigned int eth_rgmii_tx_clk_pins[] = {GPIOY_8};
2028587839fSJerome Brunet static const unsigned int eth_txd2_rgmii_pins[] = {GPIOY_12};
2038587839fSJerome Brunet static const unsigned int eth_txd3_rgmii_pins[] = {GPIOY_13};
2048587839fSJerome Brunet 
2058587839fSJerome Brunet /* pdm */
2068587839fSJerome Brunet static const unsigned int pdm_dclk_a14_pins[] = {GPIOA_14};
2078587839fSJerome Brunet static const unsigned int pdm_dclk_a19_pins[] = {GPIOA_19};
2088587839fSJerome Brunet static const unsigned int pdm_din0_pins[] = {GPIOA_15};
2098587839fSJerome Brunet static const unsigned int pdm_din1_pins[] = {GPIOA_16};
2108587839fSJerome Brunet static const unsigned int pdm_din2_pins[] = {GPIOA_17};
2118587839fSJerome Brunet static const unsigned int pdm_din3_pins[] = {GPIOA_18};
2128587839fSJerome Brunet 
2138587839fSJerome Brunet /* mclk */
2148587839fSJerome Brunet static const unsigned int mclk_c_pins[] = {GPIOA_0};
2158587839fSJerome Brunet static const unsigned int mclk_b_pins[] = {GPIOA_1};
2168587839fSJerome Brunet 
2178587839fSJerome Brunet /* tdm */
2188587839fSJerome Brunet static const unsigned int tdma_sclk_pins[] = {GPIOX_12};
2198587839fSJerome Brunet static const unsigned int tdma_sclk_slv_pins[] = {GPIOX_12};
2208587839fSJerome Brunet static const unsigned int tdma_fs_pins[] = {GPIOX_13};
2218587839fSJerome Brunet static const unsigned int tdma_fs_slv_pins[] = {GPIOX_13};
2228587839fSJerome Brunet static const unsigned int tdma_din0_pins[] = {GPIOX_14};
2238587839fSJerome Brunet static const unsigned int tdma_dout0_x14_pins[] = {GPIOX_14};
2248587839fSJerome Brunet static const unsigned int tdma_dout0_x15_pins[] = {GPIOX_15};
2258587839fSJerome Brunet static const unsigned int tdma_dout1_pins[] = {GPIOX_15};
2268587839fSJerome Brunet static const unsigned int tdma_din1_pins[] = {GPIOX_15};
2278587839fSJerome Brunet 
2288587839fSJerome Brunet static const unsigned int tdmc_sclk_pins[] = {GPIOA_2};
2298587839fSJerome Brunet static const unsigned int tdmc_sclk_slv_pins[] = {GPIOA_2};
2308587839fSJerome Brunet static const unsigned int tdmc_fs_pins[] = {GPIOA_3};
2318587839fSJerome Brunet static const unsigned int tdmc_fs_slv_pins[] = {GPIOA_3};
2328587839fSJerome Brunet static const unsigned int tdmc_din0_pins[] = {GPIOA_4};
2338587839fSJerome Brunet static const unsigned int tdmc_dout0_pins[] = {GPIOA_4};
2348587839fSJerome Brunet static const unsigned int tdmc_din1_pins[] = {GPIOA_5};
2358587839fSJerome Brunet static const unsigned int tdmc_dout1_pins[] = {GPIOA_5};
2368587839fSJerome Brunet static const unsigned int tdmc_din2_pins[] = {GPIOA_6};
2378587839fSJerome Brunet static const unsigned int tdmc_dout2_pins[] = {GPIOA_6};
2388587839fSJerome Brunet static const unsigned int tdmc_din3_pins[] = {GPIOA_7};
2398587839fSJerome Brunet static const unsigned int tdmc_dout3_pins[] = {GPIOA_7};
2408587839fSJerome Brunet 
2418587839fSJerome Brunet static const unsigned int tdmb_sclk_pins[] = {GPIOA_8};
2428587839fSJerome Brunet static const unsigned int tdmb_sclk_slv_pins[] = {GPIOA_8};
2438587839fSJerome Brunet static const unsigned int tdmb_fs_pins[] = {GPIOA_9};
2448587839fSJerome Brunet static const unsigned int tdmb_fs_slv_pins[] = {GPIOA_9};
2458587839fSJerome Brunet static const unsigned int tdmb_din0_pins[] = {GPIOA_10};
2468587839fSJerome Brunet static const unsigned int tdmb_dout0_pins[] = {GPIOA_10};
2478587839fSJerome Brunet static const unsigned int tdmb_din1_pins[] = {GPIOA_11};
2488587839fSJerome Brunet static const unsigned int tdmb_dout1_pins[] = {GPIOA_11};
2498587839fSJerome Brunet static const unsigned int tdmb_din2_pins[] = {GPIOA_12};
2508587839fSJerome Brunet static const unsigned int tdmb_dout2_pins[] = {GPIOA_12};
2518587839fSJerome Brunet static const unsigned int tdmb_din3_pins[] = {GPIOA_13};
2528587839fSJerome Brunet static const unsigned int tdmb_dout3_pins[] = {GPIOA_13};
2538587839fSJerome Brunet 
2548587839fSJerome Brunet static struct meson_pmx_group meson_axg_periphs_groups[] = {
2558587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_0, EE_OFF),
2568587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_1, EE_OFF),
2578587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_2, EE_OFF),
2588587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_3, EE_OFF),
2598587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_4, EE_OFF),
2608587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_5, EE_OFF),
2618587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_6, EE_OFF),
2628587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_7, EE_OFF),
2638587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_8, EE_OFF),
2648587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_9, EE_OFF),
2658587839fSJerome Brunet 	GPIO_GROUP(GPIOZ_10, EE_OFF),
2668587839fSJerome Brunet 
2678587839fSJerome Brunet 	GPIO_GROUP(BOOT_0, EE_OFF),
2688587839fSJerome Brunet 	GPIO_GROUP(BOOT_1, EE_OFF),
2698587839fSJerome Brunet 	GPIO_GROUP(BOOT_2, EE_OFF),
2708587839fSJerome Brunet 	GPIO_GROUP(BOOT_3, EE_OFF),
2718587839fSJerome Brunet 	GPIO_GROUP(BOOT_4, EE_OFF),
2728587839fSJerome Brunet 	GPIO_GROUP(BOOT_5, EE_OFF),
2738587839fSJerome Brunet 	GPIO_GROUP(BOOT_6, EE_OFF),
2748587839fSJerome Brunet 	GPIO_GROUP(BOOT_7, EE_OFF),
2758587839fSJerome Brunet 	GPIO_GROUP(BOOT_8, EE_OFF),
2768587839fSJerome Brunet 	GPIO_GROUP(BOOT_9, EE_OFF),
2778587839fSJerome Brunet 	GPIO_GROUP(BOOT_10, EE_OFF),
2788587839fSJerome Brunet 	GPIO_GROUP(BOOT_11, EE_OFF),
2798587839fSJerome Brunet 	GPIO_GROUP(BOOT_12, EE_OFF),
2808587839fSJerome Brunet 	GPIO_GROUP(BOOT_13, EE_OFF),
2818587839fSJerome Brunet 	GPIO_GROUP(BOOT_14, EE_OFF),
2828587839fSJerome Brunet 
2838587839fSJerome Brunet 	GPIO_GROUP(GPIOA_0, EE_OFF),
2848587839fSJerome Brunet 	GPIO_GROUP(GPIOA_1, EE_OFF),
2858587839fSJerome Brunet 	GPIO_GROUP(GPIOA_2, EE_OFF),
2868587839fSJerome Brunet 	GPIO_GROUP(GPIOA_3, EE_OFF),
2878587839fSJerome Brunet 	GPIO_GROUP(GPIOA_4, EE_OFF),
2888587839fSJerome Brunet 	GPIO_GROUP(GPIOA_5, EE_OFF),
2898587839fSJerome Brunet 	GPIO_GROUP(GPIOA_6, EE_OFF),
2908587839fSJerome Brunet 	GPIO_GROUP(GPIOA_7, EE_OFF),
2918587839fSJerome Brunet 	GPIO_GROUP(GPIOA_8, EE_OFF),
2928587839fSJerome Brunet 	GPIO_GROUP(GPIOA_9, EE_OFF),
2938587839fSJerome Brunet 	GPIO_GROUP(GPIOA_10, EE_OFF),
2948587839fSJerome Brunet 	GPIO_GROUP(GPIOA_11, EE_OFF),
2958587839fSJerome Brunet 	GPIO_GROUP(GPIOA_12, EE_OFF),
2968587839fSJerome Brunet 	GPIO_GROUP(GPIOA_13, EE_OFF),
2978587839fSJerome Brunet 	GPIO_GROUP(GPIOA_14, EE_OFF),
2988587839fSJerome Brunet 	GPIO_GROUP(GPIOA_15, EE_OFF),
2998587839fSJerome Brunet 	GPIO_GROUP(GPIOA_16, EE_OFF),
3008587839fSJerome Brunet 	GPIO_GROUP(GPIOA_17, EE_OFF),
3018587839fSJerome Brunet 	GPIO_GROUP(GPIOA_19, EE_OFF),
3028587839fSJerome Brunet 	GPIO_GROUP(GPIOA_20, EE_OFF),
3038587839fSJerome Brunet 
3048587839fSJerome Brunet 	GPIO_GROUP(GPIOX_0, EE_OFF),
3058587839fSJerome Brunet 	GPIO_GROUP(GPIOX_1, EE_OFF),
3068587839fSJerome Brunet 	GPIO_GROUP(GPIOX_2, EE_OFF),
3078587839fSJerome Brunet 	GPIO_GROUP(GPIOX_3, EE_OFF),
3088587839fSJerome Brunet 	GPIO_GROUP(GPIOX_4, EE_OFF),
3098587839fSJerome Brunet 	GPIO_GROUP(GPIOX_5, EE_OFF),
3108587839fSJerome Brunet 	GPIO_GROUP(GPIOX_6, EE_OFF),
3118587839fSJerome Brunet 	GPIO_GROUP(GPIOX_7, EE_OFF),
3128587839fSJerome Brunet 	GPIO_GROUP(GPIOX_8, EE_OFF),
3138587839fSJerome Brunet 	GPIO_GROUP(GPIOX_9, EE_OFF),
3148587839fSJerome Brunet 	GPIO_GROUP(GPIOX_10, EE_OFF),
3158587839fSJerome Brunet 	GPIO_GROUP(GPIOX_11, EE_OFF),
3168587839fSJerome Brunet 	GPIO_GROUP(GPIOX_12, EE_OFF),
3178587839fSJerome Brunet 	GPIO_GROUP(GPIOX_13, EE_OFF),
3188587839fSJerome Brunet 	GPIO_GROUP(GPIOX_14, EE_OFF),
3198587839fSJerome Brunet 	GPIO_GROUP(GPIOX_15, EE_OFF),
3208587839fSJerome Brunet 	GPIO_GROUP(GPIOX_16, EE_OFF),
3218587839fSJerome Brunet 	GPIO_GROUP(GPIOX_17, EE_OFF),
3228587839fSJerome Brunet 	GPIO_GROUP(GPIOX_18, EE_OFF),
3238587839fSJerome Brunet 	GPIO_GROUP(GPIOX_19, EE_OFF),
3248587839fSJerome Brunet 	GPIO_GROUP(GPIOX_20, EE_OFF),
3258587839fSJerome Brunet 	GPIO_GROUP(GPIOX_21, EE_OFF),
3268587839fSJerome Brunet 	GPIO_GROUP(GPIOX_22, EE_OFF),
3278587839fSJerome Brunet 
3288587839fSJerome Brunet 	GPIO_GROUP(GPIOY_0, EE_OFF),
3298587839fSJerome Brunet 	GPIO_GROUP(GPIOY_1, EE_OFF),
3308587839fSJerome Brunet 	GPIO_GROUP(GPIOY_2, EE_OFF),
3318587839fSJerome Brunet 	GPIO_GROUP(GPIOY_3, EE_OFF),
3328587839fSJerome Brunet 	GPIO_GROUP(GPIOY_4, EE_OFF),
3338587839fSJerome Brunet 	GPIO_GROUP(GPIOY_5, EE_OFF),
3348587839fSJerome Brunet 	GPIO_GROUP(GPIOY_6, EE_OFF),
3358587839fSJerome Brunet 	GPIO_GROUP(GPIOY_7, EE_OFF),
3368587839fSJerome Brunet 	GPIO_GROUP(GPIOY_8, EE_OFF),
3378587839fSJerome Brunet 	GPIO_GROUP(GPIOY_9, EE_OFF),
3388587839fSJerome Brunet 	GPIO_GROUP(GPIOY_10, EE_OFF),
3398587839fSJerome Brunet 	GPIO_GROUP(GPIOY_11, EE_OFF),
3408587839fSJerome Brunet 	GPIO_GROUP(GPIOY_12, EE_OFF),
3418587839fSJerome Brunet 	GPIO_GROUP(GPIOY_13, EE_OFF),
3428587839fSJerome Brunet 	GPIO_GROUP(GPIOY_14, EE_OFF),
3438587839fSJerome Brunet 	GPIO_GROUP(GPIOY_15, EE_OFF),
3448587839fSJerome Brunet 
3458587839fSJerome Brunet 	/* bank BOOT */
3468587839fSJerome Brunet 	GROUP(emmc_nand_d0, 1),
3478587839fSJerome Brunet 	GROUP(emmc_nand_d1, 1),
3488587839fSJerome Brunet 	GROUP(emmc_nand_d2, 1),
3498587839fSJerome Brunet 	GROUP(emmc_nand_d3, 1),
3508587839fSJerome Brunet 	GROUP(emmc_nand_d4, 1),
3518587839fSJerome Brunet 	GROUP(emmc_nand_d5, 1),
3528587839fSJerome Brunet 	GROUP(emmc_nand_d6, 1),
3538587839fSJerome Brunet 	GROUP(emmc_nand_d7, 1),
3548587839fSJerome Brunet 	GROUP(emmc_clk, 1),
3558587839fSJerome Brunet 	GROUP(emmc_cmd, 1),
3568587839fSJerome Brunet 	GROUP(emmc_ds, 1),
3578587839fSJerome Brunet 	GROUP(nand_ce0, 2),
3588587839fSJerome Brunet 	GROUP(nand_ale, 2),
3598587839fSJerome Brunet 	GROUP(nand_cle, 2),
3608587839fSJerome Brunet 	GROUP(nand_wen_clk, 2),
3618587839fSJerome Brunet 	GROUP(nand_ren_wr, 2),
3628587839fSJerome Brunet 	GROUP(nand_rb0, 2),
3638587839fSJerome Brunet 	GROUP(nor_hold, 3),
3648587839fSJerome Brunet 	GROUP(nor_d, 3),
3658587839fSJerome Brunet 	GROUP(nor_q, 3),
3668587839fSJerome Brunet 	GROUP(nor_c, 3),
3678587839fSJerome Brunet 	GROUP(nor_wp, 3),
3688587839fSJerome Brunet 	GROUP(nor_cs, 3),
3698587839fSJerome Brunet 
3708587839fSJerome Brunet 	/* bank GPIOZ */
3718587839fSJerome Brunet 	GROUP(spi0_clk, 1),
3728587839fSJerome Brunet 	GROUP(spi0_mosi, 1),
3738587839fSJerome Brunet 	GROUP(spi0_miso, 1),
3748587839fSJerome Brunet 	GROUP(spi0_ss0, 1),
3758587839fSJerome Brunet 	GROUP(spi0_ss1, 1),
3768587839fSJerome Brunet 	GROUP(spi0_ss2, 1),
3778587839fSJerome Brunet 	GROUP(i2c0_sck, 1),
3788587839fSJerome Brunet 	GROUP(i2c0_sda, 1),
3798587839fSJerome Brunet 	GROUP(i2c1_sck_z, 1),
3808587839fSJerome Brunet 	GROUP(i2c1_sda_z, 1),
3818587839fSJerome Brunet 	GROUP(uart_rts_b_z, 2),
3828587839fSJerome Brunet 	GROUP(uart_cts_b_z, 2),
3838587839fSJerome Brunet 	GROUP(uart_tx_b_z, 2),
3848587839fSJerome Brunet 	GROUP(uart_rx_b_z, 2),
3858587839fSJerome Brunet 	GROUP(pwm_a_z, 2),
3868587839fSJerome Brunet 	GROUP(pwm_b_z, 2),
3878587839fSJerome Brunet 	GROUP(spdif_in_z, 3),
3888587839fSJerome Brunet 	GROUP(spdif_out_z, 3),
3898587839fSJerome Brunet 	GROUP(uart_ao_tx_b_z, 2),
3908587839fSJerome Brunet 	GROUP(uart_ao_rx_b_z, 2),
3918587839fSJerome Brunet 	GROUP(uart_ao_cts_b_z, 2),
3928587839fSJerome Brunet 	GROUP(uart_ao_rts_b_z, 2),
3938587839fSJerome Brunet 
3948587839fSJerome Brunet 	/* bank GPIOX */
3958587839fSJerome Brunet 	GROUP(sdio_d0, 1),
3968587839fSJerome Brunet 	GROUP(sdio_d1, 1),
3978587839fSJerome Brunet 	GROUP(sdio_d2, 1),
3988587839fSJerome Brunet 	GROUP(sdio_d3, 1),
3998587839fSJerome Brunet 	GROUP(sdio_clk, 1),
4008587839fSJerome Brunet 	GROUP(sdio_cmd, 1),
4018587839fSJerome Brunet 	GROUP(i2c1_sck_x, 1),
4028587839fSJerome Brunet 	GROUP(i2c1_sda_x, 1),
4038587839fSJerome Brunet 	GROUP(i2c2_sck_x, 1),
4048587839fSJerome Brunet 	GROUP(i2c2_sda_x, 1),
4058587839fSJerome Brunet 	GROUP(uart_rts_a, 1),
4068587839fSJerome Brunet 	GROUP(uart_cts_a, 1),
4078587839fSJerome Brunet 	GROUP(uart_tx_a, 1),
4088587839fSJerome Brunet 	GROUP(uart_rx_a, 1),
4098587839fSJerome Brunet 	GROUP(uart_rts_b_x, 2),
4108587839fSJerome Brunet 	GROUP(uart_cts_b_x, 2),
4118587839fSJerome Brunet 	GROUP(uart_tx_b_x, 2),
4128587839fSJerome Brunet 	GROUP(uart_rx_b_x, 2),
4138587839fSJerome Brunet 	GROUP(jtag_tdo_x, 2),
4148587839fSJerome Brunet 	GROUP(jtag_tdi_x, 2),
4158587839fSJerome Brunet 	GROUP(jtag_clk_x, 2),
4168587839fSJerome Brunet 	GROUP(jtag_tms_x, 2),
4178587839fSJerome Brunet 	GROUP(spi1_clk_x, 4),
4188587839fSJerome Brunet 	GROUP(spi1_mosi_x, 4),
4198587839fSJerome Brunet 	GROUP(spi1_miso_x, 4),
4208587839fSJerome Brunet 	GROUP(spi1_ss0_x, 4),
4218587839fSJerome Brunet 	GROUP(pwm_a_x18, 3),
4228587839fSJerome Brunet 	GROUP(pwm_a_x20, 1),
4238587839fSJerome Brunet 	GROUP(pwm_b_x, 3),
4248587839fSJerome Brunet 	GROUP(pwm_c_x10, 3),
4258587839fSJerome Brunet 	GROUP(pwm_c_x17, 3),
4268587839fSJerome Brunet 	GROUP(pwm_d_x11, 3),
4278587839fSJerome Brunet 	GROUP(pwm_d_x16, 3),
4288587839fSJerome Brunet 	GROUP(eth_txd0_x, 4),
4298587839fSJerome Brunet 	GROUP(eth_txd1_x, 4),
4308587839fSJerome Brunet 	GROUP(eth_txen_x, 4),
4318587839fSJerome Brunet 	GROUP(eth_rgmii_rx_clk_x, 4),
4328587839fSJerome Brunet 	GROUP(eth_rxd0_x, 4),
4338587839fSJerome Brunet 	GROUP(eth_rxd1_x, 4),
4348587839fSJerome Brunet 	GROUP(eth_rx_dv_x, 4),
4358587839fSJerome Brunet 	GROUP(eth_mdio_x, 4),
4368587839fSJerome Brunet 	GROUP(eth_mdc_x, 4),
4378587839fSJerome Brunet 	GROUP(tdma_sclk, 1),
4388587839fSJerome Brunet 	GROUP(tdma_sclk_slv, 2),
4398587839fSJerome Brunet 	GROUP(tdma_fs, 1),
4408587839fSJerome Brunet 	GROUP(tdma_fs_slv, 2),
4418587839fSJerome Brunet 	GROUP(tdma_din0, 1),
4428587839fSJerome Brunet 	GROUP(tdma_dout0_x14, 2),
4438587839fSJerome Brunet 	GROUP(tdma_dout0_x15, 1),
4448587839fSJerome Brunet 	GROUP(tdma_dout1, 2),
4458587839fSJerome Brunet 	GROUP(tdma_din1, 3),
4468587839fSJerome Brunet 
4478587839fSJerome Brunet 	/* bank GPIOY */
4488587839fSJerome Brunet 	GROUP(eth_txd0_y, 1),
4498587839fSJerome Brunet 	GROUP(eth_txd1_y, 1),
4508587839fSJerome Brunet 	GROUP(eth_txen_y, 1),
4518587839fSJerome Brunet 	GROUP(eth_rgmii_rx_clk_y, 1),
4528587839fSJerome Brunet 	GROUP(eth_rxd0_y, 1),
4538587839fSJerome Brunet 	GROUP(eth_rxd1_y, 1),
4548587839fSJerome Brunet 	GROUP(eth_rx_dv_y, 1),
4558587839fSJerome Brunet 	GROUP(eth_mdio_y, 1),
4568587839fSJerome Brunet 	GROUP(eth_mdc_y, 1),
4578587839fSJerome Brunet 	GROUP(eth_rxd2_rgmii, 1),
4588587839fSJerome Brunet 	GROUP(eth_rxd3_rgmii, 1),
4598587839fSJerome Brunet 	GROUP(eth_rgmii_tx_clk, 1),
4608587839fSJerome Brunet 	GROUP(eth_txd2_rgmii, 1),
4618587839fSJerome Brunet 	GROUP(eth_txd3_rgmii, 1),
4628587839fSJerome Brunet 
4638587839fSJerome Brunet 	/* bank GPIOA */
4648587839fSJerome Brunet 	GROUP(spdif_out_a1, 4),
4658587839fSJerome Brunet 	GROUP(spdif_out_a11, 3),
4668587839fSJerome Brunet 	GROUP(spdif_out_a19, 2),
4678587839fSJerome Brunet 	GROUP(spdif_out_a20, 1),
4688587839fSJerome Brunet 	GROUP(spdif_in_a1, 3),
4698587839fSJerome Brunet 	GROUP(spdif_in_a7, 3),
4708587839fSJerome Brunet 	GROUP(spdif_in_a19, 1),
4718587839fSJerome Brunet 	GROUP(spdif_in_a20, 2),
4728587839fSJerome Brunet 	GROUP(spi1_clk_a, 3),
4738587839fSJerome Brunet 	GROUP(spi1_mosi_a, 3),
4748587839fSJerome Brunet 	GROUP(spi1_miso_a, 3),
4758587839fSJerome Brunet 	GROUP(spi1_ss0_a, 3),
4768587839fSJerome Brunet 	GROUP(spi1_ss1, 3),
4778587839fSJerome Brunet 	GROUP(pwm_a_a, 3),
4788587839fSJerome Brunet 	GROUP(pwm_b_a, 3),
4798587839fSJerome Brunet 	GROUP(pwm_c_a, 3),
4808587839fSJerome Brunet 	GROUP(pwm_vs, 2),
4818587839fSJerome Brunet 	GROUP(i2c2_sda_a, 3),
4828587839fSJerome Brunet 	GROUP(i2c2_sck_a, 3),
4838587839fSJerome Brunet 	GROUP(i2c3_sda_a6, 4),
4848587839fSJerome Brunet 	GROUP(i2c3_sck_a7, 4),
4858587839fSJerome Brunet 	GROUP(i2c3_sda_a12, 4),
4868587839fSJerome Brunet 	GROUP(i2c3_sck_a13, 4),
4878587839fSJerome Brunet 	GROUP(i2c3_sda_a19, 4),
4888587839fSJerome Brunet 	GROUP(i2c3_sck_a20, 4),
4898587839fSJerome Brunet 	GROUP(pdm_dclk_a14, 1),
4908587839fSJerome Brunet 	GROUP(pdm_dclk_a19, 3),
4918587839fSJerome Brunet 	GROUP(pdm_din0, 1),
4928587839fSJerome Brunet 	GROUP(pdm_din1, 1),
4938587839fSJerome Brunet 	GROUP(pdm_din2, 1),
4948587839fSJerome Brunet 	GROUP(pdm_din3, 1),
4958587839fSJerome Brunet 	GROUP(mclk_c, 1),
4968587839fSJerome Brunet 	GROUP(mclk_b, 1),
4978587839fSJerome Brunet 	GROUP(tdmc_sclk, 1),
4988587839fSJerome Brunet 	GROUP(tdmc_sclk_slv, 2),
4998587839fSJerome Brunet 	GROUP(tdmc_fs, 1),
5008587839fSJerome Brunet 	GROUP(tdmc_fs_slv, 2),
5018587839fSJerome Brunet 	GROUP(tdmc_din0, 2),
5028587839fSJerome Brunet 	GROUP(tdmc_dout0, 1),
5038587839fSJerome Brunet 	GROUP(tdmc_din1, 2),
5048587839fSJerome Brunet 	GROUP(tdmc_dout1, 1),
5058587839fSJerome Brunet 	GROUP(tdmc_din2, 2),
5068587839fSJerome Brunet 	GROUP(tdmc_dout2, 1),
5078587839fSJerome Brunet 	GROUP(tdmc_din3, 2),
5088587839fSJerome Brunet 	GROUP(tdmc_dout3, 1),
5098587839fSJerome Brunet 	GROUP(tdmb_sclk, 1),
5108587839fSJerome Brunet 	GROUP(tdmb_sclk_slv, 2),
5118587839fSJerome Brunet 	GROUP(tdmb_fs, 1),
5128587839fSJerome Brunet 	GROUP(tdmb_fs_slv, 2),
5138587839fSJerome Brunet 	GROUP(tdmb_din0, 2),
5148587839fSJerome Brunet 	GROUP(tdmb_dout0, 1),
5158587839fSJerome Brunet 	GROUP(tdmb_din1, 2),
5168587839fSJerome Brunet 	GROUP(tdmb_dout1, 1),
5178587839fSJerome Brunet 	GROUP(tdmb_din2, 2),
5188587839fSJerome Brunet 	GROUP(tdmb_dout2, 1),
5198587839fSJerome Brunet 	GROUP(tdmb_din3, 2),
5208587839fSJerome Brunet 	GROUP(tdmb_dout3, 1),
5218587839fSJerome Brunet };
5228587839fSJerome Brunet 
5238587839fSJerome Brunet /* uart_ao_a */
5248587839fSJerome Brunet static const unsigned int uart_ao_tx_a_pins[] = {GPIOAO_0};
5258587839fSJerome Brunet static const unsigned int uart_ao_rx_a_pins[] = {GPIOAO_1};
5268587839fSJerome Brunet static const unsigned int uart_ao_cts_a_pins[] = {GPIOAO_2};
5278587839fSJerome Brunet static const unsigned int uart_ao_rts_a_pins[] = {GPIOAO_3};
5288587839fSJerome Brunet 
5298587839fSJerome Brunet /* uart_ao_b */
5308587839fSJerome Brunet static const unsigned int uart_ao_tx_b_pins[] = {GPIOAO_4};
5318587839fSJerome Brunet static const unsigned int uart_ao_rx_b_pins[] = {GPIOAO_5};
5328587839fSJerome Brunet static const unsigned int uart_ao_cts_b_pins[] = {GPIOAO_2};
5338587839fSJerome Brunet static const unsigned int uart_ao_rts_b_pins[] = {GPIOAO_3};
5348587839fSJerome Brunet 
5358587839fSJerome Brunet /* i2c_ao */
5368587839fSJerome Brunet static const unsigned int i2c_ao_sck_4_pins[] = {GPIOAO_4};
5378587839fSJerome Brunet static const unsigned int i2c_ao_sda_5_pins[] = {GPIOAO_5};
5388587839fSJerome Brunet static const unsigned int i2c_ao_sck_8_pins[] = {GPIOAO_8};
5398587839fSJerome Brunet static const unsigned int i2c_ao_sda_9_pins[] = {GPIOAO_9};
5408587839fSJerome Brunet static const unsigned int i2c_ao_sck_10_pins[] = {GPIOAO_10};
5418587839fSJerome Brunet static const unsigned int i2c_ao_sda_11_pins[] = {GPIOAO_11};
5428587839fSJerome Brunet 
5438587839fSJerome Brunet /* i2c_ao_slave */
5448587839fSJerome Brunet static const unsigned int i2c_ao_slave_sck_pins[] = {GPIOAO_10};
5458587839fSJerome Brunet static const unsigned int i2c_ao_slave_sda_pins[] = {GPIOAO_11};
5468587839fSJerome Brunet 
5478587839fSJerome Brunet /* ir_in */
5488587839fSJerome Brunet static const unsigned int remote_input_ao_pins[] = {GPIOAO_6};
5498587839fSJerome Brunet 
5508587839fSJerome Brunet /* ir_out */
5518587839fSJerome Brunet static const unsigned int remote_out_ao_pins[] = {GPIOAO_7};
5528587839fSJerome Brunet 
5538587839fSJerome Brunet /* pwm_ao_a */
5548587839fSJerome Brunet static const unsigned int pwm_ao_a_pins[] = {GPIOAO_3};
5558587839fSJerome Brunet 
5568587839fSJerome Brunet /* pwm_ao_b */
5578587839fSJerome Brunet static const unsigned int pwm_ao_b_ao2_pins[] = {GPIOAO_2};
5588587839fSJerome Brunet static const unsigned int pwm_ao_b_ao12_pins[] = {GPIOAO_12};
5598587839fSJerome Brunet 
5608587839fSJerome Brunet /* pwm_ao_c */
5618587839fSJerome Brunet static const unsigned int pwm_ao_c_ao8_pins[] = {GPIOAO_8};
5628587839fSJerome Brunet static const unsigned int pwm_ao_c_ao13_pins[] = {GPIOAO_13};
5638587839fSJerome Brunet 
5648587839fSJerome Brunet /* pwm_ao_d */
5658587839fSJerome Brunet static const unsigned int pwm_ao_d_pins[] = {GPIOAO_9};
5668587839fSJerome Brunet 
5678587839fSJerome Brunet /* jtag_ao */
5688587839fSJerome Brunet static const unsigned int jtag_ao_tdi_pins[] = {GPIOAO_3};
5698587839fSJerome Brunet static const unsigned int jtag_ao_tdo_pins[] = {GPIOAO_4};
5708587839fSJerome Brunet static const unsigned int jtag_ao_clk_pins[] = {GPIOAO_5};
5718587839fSJerome Brunet static const unsigned int jtag_ao_tms_pins[] = {GPIOAO_7};
5728587839fSJerome Brunet 
5738587839fSJerome Brunet static struct meson_pmx_group meson_axg_aobus_groups[] = {
5748587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_0, 0),
5758587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_1, 0),
5768587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_2, 0),
5778587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_3, 0),
5788587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_4, 0),
5798587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_5, 0),
5808587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_6, 0),
5818587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_7, 0),
5828587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_8, 0),
5838587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_9, 0),
5848587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_10, 0),
5858587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_11, 0),
5868587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_12, 0),
5878587839fSJerome Brunet 	GPIO_GROUP(GPIOAO_13, 0),
5888587839fSJerome Brunet 	GPIO_GROUP(GPIO_TEST_N, 0),
5898587839fSJerome Brunet 
5908587839fSJerome Brunet 	/* bank AO */
5918587839fSJerome Brunet 	GROUP(uart_ao_tx_a, 1),
5928587839fSJerome Brunet 	GROUP(uart_ao_rx_a, 1),
5938587839fSJerome Brunet 	GROUP(uart_ao_cts_a, 2),
5948587839fSJerome Brunet 	GROUP(uart_ao_rts_a, 2),
5958587839fSJerome Brunet 	GROUP(uart_ao_tx_b, 1),
5968587839fSJerome Brunet 	GROUP(uart_ao_rx_b, 1),
5978587839fSJerome Brunet 	GROUP(uart_ao_cts_b, 1),
5988587839fSJerome Brunet 	GROUP(uart_ao_rts_b, 1),
5998587839fSJerome Brunet 	GROUP(i2c_ao_sck_4, 2),
6008587839fSJerome Brunet 	GROUP(i2c_ao_sda_5, 2),
6018587839fSJerome Brunet 	GROUP(i2c_ao_sck_8, 2),
6028587839fSJerome Brunet 	GROUP(i2c_ao_sda_9, 2),
6038587839fSJerome Brunet 	GROUP(i2c_ao_sck_10, 2),
6048587839fSJerome Brunet 	GROUP(i2c_ao_sda_11, 2),
6058587839fSJerome Brunet 	GROUP(i2c_ao_slave_sck, 1),
6068587839fSJerome Brunet 	GROUP(i2c_ao_slave_sda, 1),
6078587839fSJerome Brunet 	GROUP(remote_input_ao, 1),
6088587839fSJerome Brunet 	GROUP(remote_out_ao, 1),
6098587839fSJerome Brunet 	GROUP(pwm_ao_a, 3),
6108587839fSJerome Brunet 	GROUP(pwm_ao_b_ao2, 3),
6118587839fSJerome Brunet 	GROUP(pwm_ao_b_ao12, 3),
6128587839fSJerome Brunet 	GROUP(pwm_ao_c_ao8, 3),
6138587839fSJerome Brunet 	GROUP(pwm_ao_c_ao13, 3),
6148587839fSJerome Brunet 	GROUP(pwm_ao_d, 3),
6158587839fSJerome Brunet 	GROUP(jtag_ao_tdi, 4),
6168587839fSJerome Brunet 	GROUP(jtag_ao_tdo, 4),
6178587839fSJerome Brunet 	GROUP(jtag_ao_clk, 4),
6188587839fSJerome Brunet 	GROUP(jtag_ao_tms, 4),
6198587839fSJerome Brunet };
6208587839fSJerome Brunet 
6218587839fSJerome Brunet static const char * const gpio_periphs_groups[] = {
6228587839fSJerome Brunet 	"GPIOZ_0", "GPIOZ_1", "GPIOZ_2", "GPIOZ_3", "GPIOZ_4",
6238587839fSJerome Brunet 	"GPIOZ_5", "GPIOZ_6", "GPIOZ_7", "GPIOZ_8", "GPIOZ_9",
6248587839fSJerome Brunet 	"GPIOZ_10",
6258587839fSJerome Brunet 
6268587839fSJerome Brunet 	"BOOT_0", "BOOT_1", "BOOT_2", "BOOT_3", "BOOT_4",
6278587839fSJerome Brunet 	"BOOT_5", "BOOT_6", "BOOT_7", "BOOT_8", "BOOT_9",
6288587839fSJerome Brunet 	"BOOT_10", "BOOT_11", "BOOT_12", "BOOT_13", "BOOT_14",
6298587839fSJerome Brunet 
6308587839fSJerome Brunet 	"GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4",
6318587839fSJerome Brunet 	"GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9",
6328587839fSJerome Brunet 	"GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14",
6338587839fSJerome Brunet 	"GPIOA_15", "GPIOA_16", "GPIOA_17", "GPIOA_18", "GPIOA_19",
6348587839fSJerome Brunet 	"GPIOA_20",
6358587839fSJerome Brunet 
6368587839fSJerome Brunet 	"GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4",
6378587839fSJerome Brunet 	"GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9",
6388587839fSJerome Brunet 	"GPIOX_10", "GPIOX_11", "GPIOX_12", "GPIOX_13", "GPIOX_14",
6398587839fSJerome Brunet 	"GPIOX_15", "GPIOX_16", "GPIOX_17", "GPIOX_18", "GPIOX_19",
6408587839fSJerome Brunet 	"GPIOX_20", "GPIOX_21", "GPIOX_22",
6418587839fSJerome Brunet 
6428587839fSJerome Brunet 	"GPIOY_0", "GPIOY_1", "GPIOY_2", "GPIOY_3", "GPIOY_4",
6438587839fSJerome Brunet 	"GPIOY_5", "GPIOY_6", "GPIOY_7", "GPIOY_8", "GPIOY_9",
6448587839fSJerome Brunet 	"GPIOY_10", "GPIOY_11", "GPIOY_12", "GPIOY_13", "GPIOY_14",
6458587839fSJerome Brunet 	"GPIOY_15",
6468587839fSJerome Brunet };
6478587839fSJerome Brunet 
6488587839fSJerome Brunet static const char * const emmc_groups[] = {
6498587839fSJerome Brunet 	"emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2",
6508587839fSJerome Brunet 	"emmc_nand_d3", "emmc_nand_d4", "emmc_nand_d5",
6518587839fSJerome Brunet 	"emmc_nand_d6", "emmc_nand_d7",
6528587839fSJerome Brunet 	"emmc_clk", "emmc_cmd", "emmc_ds",
6538587839fSJerome Brunet };
6548587839fSJerome Brunet 
6558587839fSJerome Brunet static const char * const nand_groups[] = {
6568587839fSJerome Brunet 	"emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2",
6578587839fSJerome Brunet 	"emmc_nand_d3", "emmc_nand_d4", "emmc_nand_d5",
6588587839fSJerome Brunet 	"emmc_nand_d6", "emmc_nand_d7",
6598587839fSJerome Brunet 	"nand_ce0", "nand_ale", "nand_cle",
6608587839fSJerome Brunet 	"nand_wen_clk", "nand_ren_wr", "nand_rb0",
6618587839fSJerome Brunet };
6628587839fSJerome Brunet 
6638587839fSJerome Brunet static const char * const nor_groups[] = {
6648587839fSJerome Brunet 	"nor_d", "nor_q", "nor_c", "nor_cs",
6658587839fSJerome Brunet 	"nor_hold", "nor_wp",
6668587839fSJerome Brunet };
6678587839fSJerome Brunet 
6688587839fSJerome Brunet static const char * const sdio_groups[] = {
6698587839fSJerome Brunet 	"sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3",
6708587839fSJerome Brunet 	"sdio_cmd", "sdio_clk",
6718587839fSJerome Brunet };
6728587839fSJerome Brunet 
6738587839fSJerome Brunet static const char * const spi0_groups[] = {
6748587839fSJerome Brunet 	"spi0_clk", "spi0_mosi", "spi0_miso", "spi0_ss0",
6758587839fSJerome Brunet 	"spi0_ss1", "spi0_ss2"
6768587839fSJerome Brunet };
6778587839fSJerome Brunet 
6788587839fSJerome Brunet static const char * const spi1_groups[] = {
6798587839fSJerome Brunet 	"spi1_clk_x", "spi1_mosi_x", "spi1_miso_x", "spi1_ss0_x",
6808587839fSJerome Brunet 	"spi1_clk_a", "spi1_mosi_a", "spi1_miso_a", "spi1_ss0_a",
6818587839fSJerome Brunet 	"spi1_ss1"
6828587839fSJerome Brunet };
6838587839fSJerome Brunet 
6848587839fSJerome Brunet static const char * const uart_a_groups[] = {
6858587839fSJerome Brunet 	"uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a",
6868587839fSJerome Brunet };
6878587839fSJerome Brunet 
6888587839fSJerome Brunet static const char * const uart_b_groups[] = {
6898587839fSJerome Brunet 	"uart_tx_b_z", "uart_rx_b_z", "uart_cts_b_z", "uart_rts_b_z",
6908587839fSJerome Brunet 	"uart_tx_b_x", "uart_rx_b_x", "uart_cts_b_x", "uart_rts_b_x",
6918587839fSJerome Brunet };
6928587839fSJerome Brunet 
6938587839fSJerome Brunet static const char * const uart_ao_b_z_groups[] = {
6948587839fSJerome Brunet 	"uart_ao_tx_b_z", "uart_ao_rx_b_z",
6958587839fSJerome Brunet 	"uart_ao_cts_b_z", "uart_ao_rts_b_z",
6968587839fSJerome Brunet };
6978587839fSJerome Brunet 
6988587839fSJerome Brunet static const char * const i2c0_groups[] = {
6998587839fSJerome Brunet 	"i2c0_sck", "i2c0_sda",
7008587839fSJerome Brunet };
7018587839fSJerome Brunet 
7028587839fSJerome Brunet static const char * const i2c1_groups[] = {
7038587839fSJerome Brunet 	"i2c1_sck_z", "i2c1_sda_z",
7048587839fSJerome Brunet 	"i2c1_sck_x", "i2c1_sda_x",
7058587839fSJerome Brunet };
7068587839fSJerome Brunet 
7078587839fSJerome Brunet static const char * const i2c2_groups[] = {
7088587839fSJerome Brunet 	"i2c2_sck_x", "i2c2_sda_x",
7098587839fSJerome Brunet 	"i2c2_sda_a", "i2c2_sck_a",
7108587839fSJerome Brunet };
7118587839fSJerome Brunet 
7128587839fSJerome Brunet static const char * const i2c3_groups[] = {
7138587839fSJerome Brunet 	"i2c3_sda_a6", "i2c3_sck_a7",
7148587839fSJerome Brunet 	"i2c3_sda_a12", "i2c3_sck_a13",
7158587839fSJerome Brunet 	"i2c3_sda_a19", "i2c3_sck_a20",
7168587839fSJerome Brunet };
7178587839fSJerome Brunet 
7188587839fSJerome Brunet static const char * const eth_groups[] = {
7198587839fSJerome Brunet 	"eth_rxd2_rgmii", "eth_rxd3_rgmii", "eth_rgmii_tx_clk",
7208587839fSJerome Brunet 	"eth_txd2_rgmii", "eth_txd3_rgmii",
7218587839fSJerome Brunet 	"eth_txd0_x", "eth_txd1_x", "eth_txen_x", "eth_rgmii_rx_clk_x",
7228587839fSJerome Brunet 	"eth_rxd0_x", "eth_rxd1_x", "eth_rx_dv_x", "eth_mdio_x",
7238587839fSJerome Brunet 	"eth_mdc_x",
7248587839fSJerome Brunet 	"eth_txd0_y", "eth_txd1_y", "eth_txen_y", "eth_rgmii_rx_clk_y",
7258587839fSJerome Brunet 	"eth_rxd0_y", "eth_rxd1_y", "eth_rx_dv_y", "eth_mdio_y",
7268587839fSJerome Brunet 	"eth_mdc_y",
7278587839fSJerome Brunet };
7288587839fSJerome Brunet 
7298587839fSJerome Brunet static const char * const pwm_a_groups[] = {
7308587839fSJerome Brunet 	"pwm_a_z", "pwm_a_x18", "pwm_a_x20", "pwm_a_a",
7318587839fSJerome Brunet };
7328587839fSJerome Brunet 
7338587839fSJerome Brunet static const char * const pwm_b_groups[] = {
7348587839fSJerome Brunet 	"pwm_b_z", "pwm_b_x", "pwm_b_a",
7358587839fSJerome Brunet };
7368587839fSJerome Brunet 
7378587839fSJerome Brunet static const char * const pwm_c_groups[] = {
7388587839fSJerome Brunet 	"pwm_c_x10", "pwm_c_x17", "pwm_c_a",
7398587839fSJerome Brunet };
7408587839fSJerome Brunet 
7418587839fSJerome Brunet static const char * const pwm_d_groups[] = {
7428587839fSJerome Brunet 	"pwm_d_x11", "pwm_d_x16",
7438587839fSJerome Brunet };
7448587839fSJerome Brunet 
7458587839fSJerome Brunet static const char * const pwm_vs_groups[] = {
7468587839fSJerome Brunet 	"pwm_vs",
7478587839fSJerome Brunet };
7488587839fSJerome Brunet 
7498587839fSJerome Brunet static const char * const spdif_out_groups[] = {
7508587839fSJerome Brunet 	"spdif_out_z", "spdif_out_a1", "spdif_out_a11",
7518587839fSJerome Brunet 	"spdif_out_a19", "spdif_out_a20",
7528587839fSJerome Brunet };
7538587839fSJerome Brunet 
7548587839fSJerome Brunet static const char * const spdif_in_groups[] = {
7558587839fSJerome Brunet 	"spdif_in_z", "spdif_in_a1", "spdif_in_a7",
7568587839fSJerome Brunet 	"spdif_in_a19", "spdif_in_a20",
7578587839fSJerome Brunet };
7588587839fSJerome Brunet 
7598587839fSJerome Brunet static const char * const jtag_ee_groups[] = {
7608587839fSJerome Brunet 	"jtag_tdo_x", "jtag_tdi_x", "jtag_clk_x",
7618587839fSJerome Brunet 	"jtag_tms_x",
7628587839fSJerome Brunet };
7638587839fSJerome Brunet 
7648587839fSJerome Brunet static const char * const pdm_groups[] = {
7658587839fSJerome Brunet 	"pdm_din0", "pdm_din1", "pdm_din2", "pdm_din3",
7668587839fSJerome Brunet 	"pdm_dclk_a14", "pdm_dclk_a19",
7678587839fSJerome Brunet };
7688587839fSJerome Brunet 
7698587839fSJerome Brunet static const char * const gpio_aobus_groups[] = {
7708587839fSJerome Brunet 	"GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4",
7718587839fSJerome Brunet 	"GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9",
7728587839fSJerome Brunet 	"GPIOAO_10", "GPIOAO_11", "GPIOAO_12", "GPIOAO_13",
7738587839fSJerome Brunet 	"GPIO_TEST_N",
7748587839fSJerome Brunet };
7758587839fSJerome Brunet 
7768587839fSJerome Brunet static const char * const uart_ao_a_groups[] = {
7778587839fSJerome Brunet 	"uart_ao_tx_a", "uart_ao_rx_a", "uart_ao_cts_a", "uart_ao_rts_a",
7788587839fSJerome Brunet };
7798587839fSJerome Brunet 
7808587839fSJerome Brunet static const char * const uart_ao_b_groups[] = {
7818587839fSJerome Brunet 	"uart_ao_tx_b", "uart_ao_rx_b", "uart_ao_cts_b", "uart_ao_rts_b",
7828587839fSJerome Brunet };
7838587839fSJerome Brunet 
7848587839fSJerome Brunet static const char * const i2c_ao_groups[] = {
7858587839fSJerome Brunet 	"i2c_ao_sck_4", "i2c_ao_sda_5",
7868587839fSJerome Brunet 	"i2c_ao_sck_8", "i2c_ao_sda_9",
7878587839fSJerome Brunet 	"i2c_ao_sck_10", "i2c_ao_sda_11",
7888587839fSJerome Brunet };
7898587839fSJerome Brunet 
7908587839fSJerome Brunet static const char * const i2c_ao_slave_groups[] = {
7918587839fSJerome Brunet 	"i2c_ao_slave_sck", "i2c_ao_slave_sda",
7928587839fSJerome Brunet };
7938587839fSJerome Brunet 
7948587839fSJerome Brunet static const char * const remote_input_ao_groups[] = {
7958587839fSJerome Brunet 	"remote_input_ao",
7968587839fSJerome Brunet };
7978587839fSJerome Brunet 
7988587839fSJerome Brunet static const char * const remote_out_ao_groups[] = {
7998587839fSJerome Brunet 	"remote_out_ao",
8008587839fSJerome Brunet };
8018587839fSJerome Brunet 
8028587839fSJerome Brunet static const char * const pwm_ao_a_groups[] = {
8038587839fSJerome Brunet 	"pwm_ao_a",
8048587839fSJerome Brunet };
8058587839fSJerome Brunet 
8068587839fSJerome Brunet static const char * const pwm_ao_b_groups[] = {
8078587839fSJerome Brunet 	"pwm_ao_b_ao2", "pwm_ao_b_ao12",
8088587839fSJerome Brunet };
8098587839fSJerome Brunet 
8108587839fSJerome Brunet static const char * const pwm_ao_c_groups[] = {
8118587839fSJerome Brunet 	"pwm_ao_c_ao8", "pwm_ao_c_ao13",
8128587839fSJerome Brunet };
8138587839fSJerome Brunet 
8148587839fSJerome Brunet static const char * const pwm_ao_d_groups[] = {
8158587839fSJerome Brunet 	"pwm_ao_d",
8168587839fSJerome Brunet };
8178587839fSJerome Brunet 
8188587839fSJerome Brunet static const char * const jtag_ao_groups[] = {
8198587839fSJerome Brunet 	"jtag_ao_tdi", "jtag_ao_tdo", "jtag_ao_clk", "jtag_ao_tms",
8208587839fSJerome Brunet };
8218587839fSJerome Brunet 
8228587839fSJerome Brunet static const char * const mclk_c_groups[] = {
8238587839fSJerome Brunet 	"mclk_c",
8248587839fSJerome Brunet };
8258587839fSJerome Brunet 
8268587839fSJerome Brunet static const char * const mclk_b_groups[] = {
8278587839fSJerome Brunet 	"mclk_b",
8288587839fSJerome Brunet };
8298587839fSJerome Brunet 
8308587839fSJerome Brunet static const char * const tdma_groups[] = {
8318587839fSJerome Brunet 	"tdma_sclk", "tdma_sclk_slv", "tdma_fs", "tdma_fs_slv",
8328587839fSJerome Brunet 	"tdma_din0", "tdma_dout0_x14", "tdma_dout0_x15", "tdma_dout1",
8338587839fSJerome Brunet 	"tdma_din1",
8348587839fSJerome Brunet };
8358587839fSJerome Brunet 
8368587839fSJerome Brunet static const char * const tdmc_groups[] = {
8378587839fSJerome Brunet 	"tdmc_sclk", "tdmc_sclk_slv", "tdmc_fs", "tdmc_fs_slv",
8388587839fSJerome Brunet 	"tdmc_din0", "tdmc_dout0", "tdmc_din1",	"tdmc_dout1",
8398587839fSJerome Brunet 	"tdmc_din2", "tdmc_dout2", "tdmc_din3",	"tdmc_dout3",
8408587839fSJerome Brunet };
8418587839fSJerome Brunet 
8428587839fSJerome Brunet static const char * const tdmb_groups[] = {
8438587839fSJerome Brunet 	"tdmb_sclk", "tdmb_sclk_slv", "tdmb_fs", "tdmb_fs_slv",
8448587839fSJerome Brunet 	"tdmb_din0", "tdmb_dout0", "tdmb_din1",	"tdmb_dout1",
8458587839fSJerome Brunet 	"tdmb_din2", "tdmb_dout2", "tdmb_din3",	"tdmb_dout3",
8468587839fSJerome Brunet };
8478587839fSJerome Brunet 
8488587839fSJerome Brunet static struct meson_pmx_func meson_axg_periphs_functions[] = {
8498587839fSJerome Brunet 	FUNCTION(gpio_periphs),
8508587839fSJerome Brunet 	FUNCTION(emmc),
8518587839fSJerome Brunet 	FUNCTION(nor),
8528587839fSJerome Brunet 	FUNCTION(spi0),
8538587839fSJerome Brunet 	FUNCTION(spi1),
8548587839fSJerome Brunet 	FUNCTION(sdio),
8558587839fSJerome Brunet 	FUNCTION(nand),
8568587839fSJerome Brunet 	FUNCTION(uart_a),
8578587839fSJerome Brunet 	FUNCTION(uart_b),
8588587839fSJerome Brunet 	FUNCTION(uart_ao_b_z),
8598587839fSJerome Brunet 	FUNCTION(i2c0),
8608587839fSJerome Brunet 	FUNCTION(i2c1),
8618587839fSJerome Brunet 	FUNCTION(i2c2),
8628587839fSJerome Brunet 	FUNCTION(i2c3),
8638587839fSJerome Brunet 	FUNCTION(eth),
8648587839fSJerome Brunet 	FUNCTION(pwm_a),
8658587839fSJerome Brunet 	FUNCTION(pwm_b),
8668587839fSJerome Brunet 	FUNCTION(pwm_c),
8678587839fSJerome Brunet 	FUNCTION(pwm_d),
8688587839fSJerome Brunet 	FUNCTION(pwm_vs),
8698587839fSJerome Brunet 	FUNCTION(spdif_out),
8708587839fSJerome Brunet 	FUNCTION(spdif_in),
8718587839fSJerome Brunet 	FUNCTION(jtag_ee),
8728587839fSJerome Brunet 	FUNCTION(pdm),
8738587839fSJerome Brunet 	FUNCTION(mclk_b),
8748587839fSJerome Brunet 	FUNCTION(mclk_c),
8758587839fSJerome Brunet 	FUNCTION(tdma),
8768587839fSJerome Brunet 	FUNCTION(tdmb),
8778587839fSJerome Brunet 	FUNCTION(tdmc),
8788587839fSJerome Brunet };
8798587839fSJerome Brunet 
8808587839fSJerome Brunet static struct meson_pmx_func meson_axg_aobus_functions[] = {
8818587839fSJerome Brunet 	FUNCTION(gpio_aobus),
8828587839fSJerome Brunet 	FUNCTION(uart_ao_a),
8838587839fSJerome Brunet 	FUNCTION(uart_ao_b),
8848587839fSJerome Brunet 	FUNCTION(i2c_ao),
8858587839fSJerome Brunet 	FUNCTION(i2c_ao_slave),
8868587839fSJerome Brunet 	FUNCTION(remote_input_ao),
8878587839fSJerome Brunet 	FUNCTION(remote_out_ao),
8888587839fSJerome Brunet 	FUNCTION(pwm_ao_a),
8898587839fSJerome Brunet 	FUNCTION(pwm_ao_b),
8908587839fSJerome Brunet 	FUNCTION(pwm_ao_c),
8918587839fSJerome Brunet 	FUNCTION(pwm_ao_d),
8928587839fSJerome Brunet 	FUNCTION(jtag_ao),
8938587839fSJerome Brunet };
8948587839fSJerome Brunet 
8958587839fSJerome Brunet static struct meson_bank meson_axg_periphs_banks[] = {
8968587839fSJerome Brunet 	/*   name    first                      last                    pullen  pull    dir     out     in  */
897*139ebe9eSCarlo Caione 	BANK("Z",    PIN(GPIOZ_0, EE_OFF),	PIN(GPIOZ_10, EE_OFF), 3,  0,  3,  0,  9,  0,  10, 0,  11, 0),
898*139ebe9eSCarlo Caione 	BANK("BOOT", PIN(BOOT_0, EE_OFF),	PIN(BOOT_14, EE_OFF),  4,  0,  4,  0,  12, 0,  13, 0,  14, 0),
899*139ebe9eSCarlo Caione 	BANK("A",    PIN(GPIOA_0, EE_OFF),	PIN(GPIOA_20, EE_OFF), 0,  0,  0,  0,  0,  0,  1,  0,  2,  0),
900*139ebe9eSCarlo Caione 	BANK("X",    PIN(GPIOX_0, EE_OFF),	PIN(GPIOX_22, EE_OFF), 2,  0,  2,  0,  6,  0,  7,  0,  8,  0),
901*139ebe9eSCarlo Caione 	BANK("Y",    PIN(GPIOY_0, EE_OFF),	PIN(GPIOY_15, EE_OFF), 1,  0,  1,  0,  3,  0,  4,  0,  5,  0),
9028587839fSJerome Brunet };
9038587839fSJerome Brunet 
9048587839fSJerome Brunet static struct meson_bank meson_axg_aobus_banks[] = {
9058587839fSJerome Brunet 	/*   name    first              last              pullen  pull    dir     out     in  */
906*139ebe9eSCarlo Caione 	BANK("AO",   PIN(GPIOAO_0, 0),  PIN(GPIOAO_13, 0), 0,  16,  0, 0,  0,  0,  0, 16,  1,  0),
9078587839fSJerome Brunet };
9088587839fSJerome Brunet 
9098587839fSJerome Brunet static struct meson_pmx_bank meson_axg_periphs_pmx_banks[] = {
9108587839fSJerome Brunet 	/*	 name	 first		lask	   reg	offset  */
9118587839fSJerome Brunet 	BANK_PMX("Z",	 GPIOZ_0, GPIOZ_10, 0x2, 0),
9128587839fSJerome Brunet 	BANK_PMX("BOOT", BOOT_0,  BOOT_14,  0x0, 0),
9138587839fSJerome Brunet 	BANK_PMX("A",	 GPIOA_0, GPIOA_20, 0xb, 0),
9148587839fSJerome Brunet 	BANK_PMX("X",	 GPIOX_0, GPIOX_22, 0x4, 0),
9158587839fSJerome Brunet 	BANK_PMX("Y",	 GPIOY_0, GPIOY_15, 0x8, 0),
9168587839fSJerome Brunet };
9178587839fSJerome Brunet 
9188587839fSJerome Brunet static struct meson_axg_pmx_data meson_axg_periphs_pmx_banks_data = {
9198587839fSJerome Brunet 	.pmx_banks	= meson_axg_periphs_pmx_banks,
9208587839fSJerome Brunet 	.num_pmx_banks = ARRAY_SIZE(meson_axg_periphs_pmx_banks),
9218587839fSJerome Brunet };
9228587839fSJerome Brunet 
9238587839fSJerome Brunet static struct meson_pmx_bank meson_axg_aobus_pmx_banks[] = {
9248587839fSJerome Brunet 	BANK_PMX("AO", GPIOAO_0, GPIOAO_13, 0x0, 0),
9258587839fSJerome Brunet };
9268587839fSJerome Brunet 
9278587839fSJerome Brunet static struct meson_axg_pmx_data meson_axg_aobus_pmx_banks_data = {
9288587839fSJerome Brunet 	.pmx_banks	= meson_axg_aobus_pmx_banks,
9298587839fSJerome Brunet 	.num_pmx_banks = ARRAY_SIZE(meson_axg_aobus_pmx_banks),
9308587839fSJerome Brunet };
9318587839fSJerome Brunet 
9328587839fSJerome Brunet struct meson_pinctrl_data meson_axg_periphs_pinctrl_data = {
9338587839fSJerome Brunet 	.name		= "periphs-banks",
934*139ebe9eSCarlo Caione 	.pin_base	= 15,
9358587839fSJerome Brunet 	.groups		= meson_axg_periphs_groups,
9368587839fSJerome Brunet 	.funcs		= meson_axg_periphs_functions,
9378587839fSJerome Brunet 	.banks		= meson_axg_periphs_banks,
938*139ebe9eSCarlo Caione 	.num_pins	= 86,
9398587839fSJerome Brunet 	.num_groups	= ARRAY_SIZE(meson_axg_periphs_groups),
9408587839fSJerome Brunet 	.num_funcs	= ARRAY_SIZE(meson_axg_periphs_functions),
9418587839fSJerome Brunet 	.num_banks	= ARRAY_SIZE(meson_axg_periphs_banks),
9428587839fSJerome Brunet 	.gpio_driver	= &meson_axg_gpio_driver,
9438587839fSJerome Brunet 	.pmx_data	= &meson_axg_periphs_pmx_banks_data,
9448587839fSJerome Brunet };
9458587839fSJerome Brunet 
9468587839fSJerome Brunet struct meson_pinctrl_data meson_axg_aobus_pinctrl_data = {
9478587839fSJerome Brunet 	.name		= "aobus-banks",
9488587839fSJerome Brunet 	.pin_base	= 0,
9498587839fSJerome Brunet 	.groups		= meson_axg_aobus_groups,
9508587839fSJerome Brunet 	.funcs		= meson_axg_aobus_functions,
9518587839fSJerome Brunet 	.banks		= meson_axg_aobus_banks,
9528587839fSJerome Brunet 	.num_pins	= 14,
9538587839fSJerome Brunet 	.num_groups	= ARRAY_SIZE(meson_axg_aobus_groups),
9548587839fSJerome Brunet 	.num_funcs	= ARRAY_SIZE(meson_axg_aobus_functions),
9558587839fSJerome Brunet 	.num_banks	= ARRAY_SIZE(meson_axg_aobus_banks),
9568587839fSJerome Brunet 	.gpio_driver	= &meson_axg_gpio_driver,
9578587839fSJerome Brunet 	.pmx_data	= &meson_axg_aobus_pmx_banks_data,
9588587839fSJerome Brunet };
9598587839fSJerome Brunet 
9608587839fSJerome Brunet static const struct udevice_id meson_axg_pinctrl_match[] = {
9618587839fSJerome Brunet 	{
9628587839fSJerome Brunet 		.compatible = "amlogic,meson-axg-periphs-pinctrl",
9638587839fSJerome Brunet 		.data = (ulong)&meson_axg_periphs_pinctrl_data,
9648587839fSJerome Brunet 	},
9658587839fSJerome Brunet 	{
9668587839fSJerome Brunet 		.compatible = "amlogic,meson-axg-aobus-pinctrl",
9678587839fSJerome Brunet 		.data = (ulong)&meson_axg_aobus_pinctrl_data,
9688587839fSJerome Brunet 	},
9698587839fSJerome Brunet 	{ /* sentinel */ }
9708587839fSJerome Brunet };
9718587839fSJerome Brunet 
9728587839fSJerome Brunet U_BOOT_DRIVER(meson_axg_pinctrl) = {
9738587839fSJerome Brunet 	.name = "meson-axg-pinctrl",
9748587839fSJerome Brunet 	.id = UCLASS_PINCTRL,
9758587839fSJerome Brunet 	.of_match = of_match_ptr(meson_axg_pinctrl_match),
9768587839fSJerome Brunet 	.probe = meson_pinctrl_probe,
9778587839fSJerome Brunet 	.priv_auto_alloc_size = sizeof(struct meson_pinctrl),
9788587839fSJerome Brunet 	.ops = &meson_axg_pinctrl_ops,
9798587839fSJerome Brunet };
980