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