10f15f500SNeil Armstrong /* 20f15f500SNeil Armstrong * Pin controller and GPIO driver for Amlogic Meson GXL. 30f15f500SNeil Armstrong * 40f15f500SNeil Armstrong * Copyright (C) 2016 Endless Mobile, Inc. 50f15f500SNeil Armstrong * Author: Carlo Caione <carlo@endlessm.com> 60f15f500SNeil Armstrong * 70f15f500SNeil Armstrong * This program is free software; you can redistribute it and/or 80f15f500SNeil Armstrong * modify it under the terms of the GNU General Public License 90f15f500SNeil Armstrong * version 2 as published by the Free Software Foundation. 100f15f500SNeil Armstrong * 110f15f500SNeil Armstrong * You should have received a copy of the GNU General Public License 120f15f500SNeil Armstrong * along with this program. If not, see <http://www.gnu.org/licenses/>. 130f15f500SNeil Armstrong */ 140f15f500SNeil Armstrong 150f15f500SNeil Armstrong #include <dt-bindings/gpio/meson-gxl-gpio.h> 160f15f500SNeil Armstrong #include "pinctrl-meson.h" 170f15f500SNeil Armstrong 180f15f500SNeil Armstrong #define EE_OFF 10 190f15f500SNeil Armstrong 200f15f500SNeil Armstrong static const struct pinctrl_pin_desc meson_gxl_periphs_pins[] = { 210f15f500SNeil Armstrong MESON_PIN(GPIOZ_0, EE_OFF), 220f15f500SNeil Armstrong MESON_PIN(GPIOZ_1, EE_OFF), 230f15f500SNeil Armstrong MESON_PIN(GPIOZ_2, EE_OFF), 240f15f500SNeil Armstrong MESON_PIN(GPIOZ_3, EE_OFF), 250f15f500SNeil Armstrong MESON_PIN(GPIOZ_4, EE_OFF), 260f15f500SNeil Armstrong MESON_PIN(GPIOZ_5, EE_OFF), 270f15f500SNeil Armstrong MESON_PIN(GPIOZ_6, EE_OFF), 280f15f500SNeil Armstrong MESON_PIN(GPIOZ_7, EE_OFF), 290f15f500SNeil Armstrong MESON_PIN(GPIOZ_8, EE_OFF), 300f15f500SNeil Armstrong MESON_PIN(GPIOZ_9, EE_OFF), 310f15f500SNeil Armstrong MESON_PIN(GPIOZ_10, EE_OFF), 320f15f500SNeil Armstrong MESON_PIN(GPIOZ_11, EE_OFF), 330f15f500SNeil Armstrong MESON_PIN(GPIOZ_12, EE_OFF), 340f15f500SNeil Armstrong MESON_PIN(GPIOZ_13, EE_OFF), 350f15f500SNeil Armstrong MESON_PIN(GPIOZ_14, EE_OFF), 360f15f500SNeil Armstrong MESON_PIN(GPIOZ_15, EE_OFF), 370f15f500SNeil Armstrong 380f15f500SNeil Armstrong MESON_PIN(GPIOH_0, EE_OFF), 390f15f500SNeil Armstrong MESON_PIN(GPIOH_1, EE_OFF), 400f15f500SNeil Armstrong MESON_PIN(GPIOH_2, EE_OFF), 410f15f500SNeil Armstrong MESON_PIN(GPIOH_3, EE_OFF), 420f15f500SNeil Armstrong MESON_PIN(GPIOH_4, EE_OFF), 430f15f500SNeil Armstrong MESON_PIN(GPIOH_5, EE_OFF), 440f15f500SNeil Armstrong MESON_PIN(GPIOH_6, EE_OFF), 450f15f500SNeil Armstrong MESON_PIN(GPIOH_7, EE_OFF), 460f15f500SNeil Armstrong MESON_PIN(GPIOH_8, EE_OFF), 470f15f500SNeil Armstrong MESON_PIN(GPIOH_9, EE_OFF), 480f15f500SNeil Armstrong 490f15f500SNeil Armstrong MESON_PIN(BOOT_0, EE_OFF), 500f15f500SNeil Armstrong MESON_PIN(BOOT_1, EE_OFF), 510f15f500SNeil Armstrong MESON_PIN(BOOT_2, EE_OFF), 520f15f500SNeil Armstrong MESON_PIN(BOOT_3, EE_OFF), 530f15f500SNeil Armstrong MESON_PIN(BOOT_4, EE_OFF), 540f15f500SNeil Armstrong MESON_PIN(BOOT_5, EE_OFF), 550f15f500SNeil Armstrong MESON_PIN(BOOT_6, EE_OFF), 560f15f500SNeil Armstrong MESON_PIN(BOOT_7, EE_OFF), 570f15f500SNeil Armstrong MESON_PIN(BOOT_8, EE_OFF), 580f15f500SNeil Armstrong MESON_PIN(BOOT_9, EE_OFF), 590f15f500SNeil Armstrong MESON_PIN(BOOT_10, EE_OFF), 600f15f500SNeil Armstrong MESON_PIN(BOOT_11, EE_OFF), 610f15f500SNeil Armstrong MESON_PIN(BOOT_12, EE_OFF), 620f15f500SNeil Armstrong MESON_PIN(BOOT_13, EE_OFF), 630f15f500SNeil Armstrong MESON_PIN(BOOT_14, EE_OFF), 640f15f500SNeil Armstrong MESON_PIN(BOOT_15, EE_OFF), 650f15f500SNeil Armstrong 660f15f500SNeil Armstrong MESON_PIN(CARD_0, EE_OFF), 670f15f500SNeil Armstrong MESON_PIN(CARD_1, EE_OFF), 680f15f500SNeil Armstrong MESON_PIN(CARD_2, EE_OFF), 690f15f500SNeil Armstrong MESON_PIN(CARD_3, EE_OFF), 700f15f500SNeil Armstrong MESON_PIN(CARD_4, EE_OFF), 710f15f500SNeil Armstrong MESON_PIN(CARD_5, EE_OFF), 720f15f500SNeil Armstrong MESON_PIN(CARD_6, EE_OFF), 730f15f500SNeil Armstrong 740f15f500SNeil Armstrong MESON_PIN(GPIODV_0, EE_OFF), 750f15f500SNeil Armstrong MESON_PIN(GPIODV_1, EE_OFF), 760f15f500SNeil Armstrong MESON_PIN(GPIODV_2, EE_OFF), 770f15f500SNeil Armstrong MESON_PIN(GPIODV_3, EE_OFF), 780f15f500SNeil Armstrong MESON_PIN(GPIODV_4, EE_OFF), 790f15f500SNeil Armstrong MESON_PIN(GPIODV_5, EE_OFF), 800f15f500SNeil Armstrong MESON_PIN(GPIODV_6, EE_OFF), 810f15f500SNeil Armstrong MESON_PIN(GPIODV_7, EE_OFF), 820f15f500SNeil Armstrong MESON_PIN(GPIODV_8, EE_OFF), 830f15f500SNeil Armstrong MESON_PIN(GPIODV_9, EE_OFF), 840f15f500SNeil Armstrong MESON_PIN(GPIODV_10, EE_OFF), 850f15f500SNeil Armstrong MESON_PIN(GPIODV_11, EE_OFF), 860f15f500SNeil Armstrong MESON_PIN(GPIODV_12, EE_OFF), 870f15f500SNeil Armstrong MESON_PIN(GPIODV_13, EE_OFF), 880f15f500SNeil Armstrong MESON_PIN(GPIODV_14, EE_OFF), 890f15f500SNeil Armstrong MESON_PIN(GPIODV_15, EE_OFF), 900f15f500SNeil Armstrong MESON_PIN(GPIODV_16, EE_OFF), 910f15f500SNeil Armstrong MESON_PIN(GPIODV_17, EE_OFF), 92aa955695SNeil Armstrong MESON_PIN(GPIODV_18, EE_OFF), 930f15f500SNeil Armstrong MESON_PIN(GPIODV_19, EE_OFF), 940f15f500SNeil Armstrong MESON_PIN(GPIODV_20, EE_OFF), 950f15f500SNeil Armstrong MESON_PIN(GPIODV_21, EE_OFF), 960f15f500SNeil Armstrong MESON_PIN(GPIODV_22, EE_OFF), 970f15f500SNeil Armstrong MESON_PIN(GPIODV_23, EE_OFF), 980f15f500SNeil Armstrong MESON_PIN(GPIODV_24, EE_OFF), 990f15f500SNeil Armstrong MESON_PIN(GPIODV_25, EE_OFF), 1000f15f500SNeil Armstrong MESON_PIN(GPIODV_26, EE_OFF), 1010f15f500SNeil Armstrong MESON_PIN(GPIODV_27, EE_OFF), 1020f15f500SNeil Armstrong MESON_PIN(GPIODV_28, EE_OFF), 1030f15f500SNeil Armstrong MESON_PIN(GPIODV_29, EE_OFF), 1040f15f500SNeil Armstrong 1050f15f500SNeil Armstrong MESON_PIN(GPIOX_0, EE_OFF), 1060f15f500SNeil Armstrong MESON_PIN(GPIOX_1, EE_OFF), 1070f15f500SNeil Armstrong MESON_PIN(GPIOX_2, EE_OFF), 1080f15f500SNeil Armstrong MESON_PIN(GPIOX_3, EE_OFF), 1090f15f500SNeil Armstrong MESON_PIN(GPIOX_4, EE_OFF), 1100f15f500SNeil Armstrong MESON_PIN(GPIOX_5, EE_OFF), 1110f15f500SNeil Armstrong MESON_PIN(GPIOX_6, EE_OFF), 1120f15f500SNeil Armstrong MESON_PIN(GPIOX_7, EE_OFF), 1130f15f500SNeil Armstrong MESON_PIN(GPIOX_8, EE_OFF), 1140f15f500SNeil Armstrong MESON_PIN(GPIOX_9, EE_OFF), 1150f15f500SNeil Armstrong MESON_PIN(GPIOX_10, EE_OFF), 1160f15f500SNeil Armstrong MESON_PIN(GPIOX_11, EE_OFF), 1170f15f500SNeil Armstrong MESON_PIN(GPIOX_12, EE_OFF), 1180f15f500SNeil Armstrong MESON_PIN(GPIOX_13, EE_OFF), 1190f15f500SNeil Armstrong MESON_PIN(GPIOX_14, EE_OFF), 1200f15f500SNeil Armstrong MESON_PIN(GPIOX_15, EE_OFF), 1210f15f500SNeil Armstrong MESON_PIN(GPIOX_16, EE_OFF), 1220f15f500SNeil Armstrong MESON_PIN(GPIOX_17, EE_OFF), 1230f15f500SNeil Armstrong MESON_PIN(GPIOX_18, EE_OFF), 1240f15f500SNeil Armstrong 1250f15f500SNeil Armstrong MESON_PIN(GPIOCLK_0, EE_OFF), 1260f15f500SNeil Armstrong MESON_PIN(GPIOCLK_1, EE_OFF), 1270f15f500SNeil Armstrong 1280f15f500SNeil Armstrong MESON_PIN(GPIO_TEST_N, EE_OFF), 1290f15f500SNeil Armstrong }; 1300f15f500SNeil Armstrong 1310f15f500SNeil Armstrong static const unsigned int emmc_nand_d07_pins[] = { 1320f15f500SNeil Armstrong PIN(BOOT_0, EE_OFF), PIN(BOOT_1, EE_OFF), PIN(BOOT_2, EE_OFF), 1330f15f500SNeil Armstrong PIN(BOOT_3, EE_OFF), PIN(BOOT_4, EE_OFF), PIN(BOOT_5, EE_OFF), 1340f15f500SNeil Armstrong PIN(BOOT_6, EE_OFF), PIN(BOOT_7, EE_OFF), 1350f15f500SNeil Armstrong }; 1360f15f500SNeil Armstrong static const unsigned int emmc_clk_pins[] = { PIN(BOOT_8, EE_OFF) }; 1370f15f500SNeil Armstrong static const unsigned int emmc_cmd_pins[] = { PIN(BOOT_10, EE_OFF) }; 1380f15f500SNeil Armstrong static const unsigned int emmc_ds_pins[] = { PIN(BOOT_15, EE_OFF) }; 1390f15f500SNeil Armstrong 1406a0ab255SNeil Armstrong static const unsigned int nor_d_pins[] = { PIN(BOOT_11, EE_OFF) }; 1416a0ab255SNeil Armstrong static const unsigned int nor_q_pins[] = { PIN(BOOT_12, EE_OFF) }; 1426a0ab255SNeil Armstrong static const unsigned int nor_c_pins[] = { PIN(BOOT_13, EE_OFF) }; 1436a0ab255SNeil Armstrong static const unsigned int nor_cs_pins[] = { PIN(BOOT_15, EE_OFF) }; 1446a0ab255SNeil Armstrong 145477fa24eSNeil Armstrong static const unsigned int spi_mosi_pins[] = { PIN(GPIOX_8, EE_OFF) }; 146477fa24eSNeil Armstrong static const unsigned int spi_miso_pins[] = { PIN(GPIOX_9, EE_OFF) }; 147477fa24eSNeil Armstrong static const unsigned int spi_ss0_pins[] = { PIN(GPIOX_10, EE_OFF) }; 148477fa24eSNeil Armstrong static const unsigned int spi_sclk_pins[] = { PIN(GPIOX_11, EE_OFF) }; 149477fa24eSNeil Armstrong 1500f15f500SNeil Armstrong static const unsigned int sdcard_d0_pins[] = { PIN(CARD_1, EE_OFF) }; 1510f15f500SNeil Armstrong static const unsigned int sdcard_d1_pins[] = { PIN(CARD_0, EE_OFF) }; 1520f15f500SNeil Armstrong static const unsigned int sdcard_d2_pins[] = { PIN(CARD_5, EE_OFF) }; 1530f15f500SNeil Armstrong static const unsigned int sdcard_d3_pins[] = { PIN(CARD_4, EE_OFF) }; 1540f15f500SNeil Armstrong static const unsigned int sdcard_cmd_pins[] = { PIN(CARD_3, EE_OFF) }; 1550f15f500SNeil Armstrong static const unsigned int sdcard_clk_pins[] = { PIN(CARD_2, EE_OFF) }; 1560f15f500SNeil Armstrong 1570f15f500SNeil Armstrong static const unsigned int sdio_d0_pins[] = { PIN(GPIOX_0, EE_OFF) }; 1580f15f500SNeil Armstrong static const unsigned int sdio_d1_pins[] = { PIN(GPIOX_1, EE_OFF) }; 1590f15f500SNeil Armstrong static const unsigned int sdio_d2_pins[] = { PIN(GPIOX_2, EE_OFF) }; 1600f15f500SNeil Armstrong static const unsigned int sdio_d3_pins[] = { PIN(GPIOX_3, EE_OFF) }; 1610f15f500SNeil Armstrong static const unsigned int sdio_cmd_pins[] = { PIN(GPIOX_4, EE_OFF) }; 1620f15f500SNeil Armstrong static const unsigned int sdio_clk_pins[] = { PIN(GPIOX_5, EE_OFF) }; 1630f15f500SNeil Armstrong static const unsigned int sdio_irq_pins[] = { PIN(GPIOX_7, EE_OFF) }; 1640f15f500SNeil Armstrong 1650f15f500SNeil Armstrong static const unsigned int nand_ce0_pins[] = { PIN(BOOT_8, EE_OFF) }; 1660f15f500SNeil Armstrong static const unsigned int nand_ce1_pins[] = { PIN(BOOT_9, EE_OFF) }; 1670f15f500SNeil Armstrong static const unsigned int nand_rb0_pins[] = { PIN(BOOT_10, EE_OFF) }; 1680f15f500SNeil Armstrong static const unsigned int nand_ale_pins[] = { PIN(BOOT_11, EE_OFF) }; 1690f15f500SNeil Armstrong static const unsigned int nand_cle_pins[] = { PIN(BOOT_12, EE_OFF) }; 1700f15f500SNeil Armstrong static const unsigned int nand_wen_clk_pins[] = { PIN(BOOT_13, EE_OFF) }; 1710f15f500SNeil Armstrong static const unsigned int nand_ren_wr_pins[] = { PIN(BOOT_14, EE_OFF) }; 1720f15f500SNeil Armstrong static const unsigned int nand_dqs_pins[] = { PIN(BOOT_15, EE_OFF) }; 1730f15f500SNeil Armstrong 1740f15f500SNeil Armstrong static const unsigned int uart_tx_a_pins[] = { PIN(GPIOX_12, EE_OFF) }; 1750f15f500SNeil Armstrong static const unsigned int uart_rx_a_pins[] = { PIN(GPIOX_13, EE_OFF) }; 1760f15f500SNeil Armstrong static const unsigned int uart_cts_a_pins[] = { PIN(GPIOX_14, EE_OFF) }; 1770f15f500SNeil Armstrong static const unsigned int uart_rts_a_pins[] = { PIN(GPIOX_15, EE_OFF) }; 1780f15f500SNeil Armstrong 1790f15f500SNeil Armstrong static const unsigned int uart_tx_b_pins[] = { PIN(GPIODV_24, EE_OFF) }; 1800f15f500SNeil Armstrong static const unsigned int uart_rx_b_pins[] = { PIN(GPIODV_25, EE_OFF) }; 1816a0ab255SNeil Armstrong static const unsigned int uart_cts_b_pins[] = { PIN(GPIODV_26, EE_OFF) }; 1826a0ab255SNeil Armstrong static const unsigned int uart_rts_b_pins[] = { PIN(GPIODV_27, EE_OFF) }; 1830f15f500SNeil Armstrong 1840f15f500SNeil Armstrong static const unsigned int uart_tx_c_pins[] = { PIN(GPIOX_8, EE_OFF) }; 1850f15f500SNeil Armstrong static const unsigned int uart_rx_c_pins[] = { PIN(GPIOX_9, EE_OFF) }; 1866a0ab255SNeil Armstrong static const unsigned int uart_cts_c_pins[] = { PIN(GPIOX_10, EE_OFF) }; 1876a0ab255SNeil Armstrong static const unsigned int uart_rts_c_pins[] = { PIN(GPIOX_11, EE_OFF) }; 1880f15f500SNeil Armstrong 1890f15f500SNeil Armstrong static const unsigned int i2c_sck_a_pins[] = { PIN(GPIODV_25, EE_OFF) }; 1900f15f500SNeil Armstrong static const unsigned int i2c_sda_a_pins[] = { PIN(GPIODV_24, EE_OFF) }; 1910f15f500SNeil Armstrong 1920f15f500SNeil Armstrong static const unsigned int i2c_sck_b_pins[] = { PIN(GPIODV_27, EE_OFF) }; 1930f15f500SNeil Armstrong static const unsigned int i2c_sda_b_pins[] = { PIN(GPIODV_26, EE_OFF) }; 1940f15f500SNeil Armstrong 1950f15f500SNeil Armstrong static const unsigned int i2c_sck_c_pins[] = { PIN(GPIODV_29, EE_OFF) }; 1960f15f500SNeil Armstrong static const unsigned int i2c_sda_c_pins[] = { PIN(GPIODV_28, EE_OFF) }; 1970f15f500SNeil Armstrong 1986a0ab255SNeil Armstrong static const unsigned int i2c_sck_c_dv19_pins[] = { PIN(GPIODV_19, EE_OFF) }; 1996a0ab255SNeil Armstrong static const unsigned int i2c_sda_c_dv18_pins[] = { PIN(GPIODV_18, EE_OFF) }; 2006a0ab255SNeil Armstrong 2010f15f500SNeil Armstrong static const unsigned int eth_mdio_pins[] = { PIN(GPIOZ_0, EE_OFF) }; 2020f15f500SNeil Armstrong static const unsigned int eth_mdc_pins[] = { PIN(GPIOZ_1, EE_OFF) }; 2030f15f500SNeil Armstrong static const unsigned int eth_clk_rx_clk_pins[] = { PIN(GPIOZ_2, EE_OFF) }; 2040f15f500SNeil Armstrong static const unsigned int eth_rx_dv_pins[] = { PIN(GPIOZ_3, EE_OFF) }; 2050f15f500SNeil Armstrong static const unsigned int eth_rxd0_pins[] = { PIN(GPIOZ_4, EE_OFF) }; 2060f15f500SNeil Armstrong static const unsigned int eth_rxd1_pins[] = { PIN(GPIOZ_5, EE_OFF) }; 2070f15f500SNeil Armstrong static const unsigned int eth_rxd2_pins[] = { PIN(GPIOZ_6, EE_OFF) }; 2080f15f500SNeil Armstrong static const unsigned int eth_rxd3_pins[] = { PIN(GPIOZ_7, EE_OFF) }; 2090f15f500SNeil Armstrong static const unsigned int eth_rgmii_tx_clk_pins[] = { PIN(GPIOZ_8, EE_OFF) }; 2100f15f500SNeil Armstrong static const unsigned int eth_tx_en_pins[] = { PIN(GPIOZ_9, EE_OFF) }; 2110f15f500SNeil Armstrong static const unsigned int eth_txd0_pins[] = { PIN(GPIOZ_10, EE_OFF) }; 2120f15f500SNeil Armstrong static const unsigned int eth_txd1_pins[] = { PIN(GPIOZ_11, EE_OFF) }; 2130f15f500SNeil Armstrong static const unsigned int eth_txd2_pins[] = { PIN(GPIOZ_12, EE_OFF) }; 2140f15f500SNeil Armstrong static const unsigned int eth_txd3_pins[] = { PIN(GPIOZ_13, EE_OFF) }; 2150f15f500SNeil Armstrong 216cc97a95fSMartin Blumenstingl static const unsigned int pwm_a_pins[] = { PIN(GPIOX_6, EE_OFF) }; 217cc97a95fSMartin Blumenstingl 218cc97a95fSMartin Blumenstingl static const unsigned int pwm_b_pins[] = { PIN(GPIODV_29, EE_OFF) }; 219cc97a95fSMartin Blumenstingl 220cc97a95fSMartin Blumenstingl static const unsigned int pwm_c_pins[] = { PIN(GPIOZ_15, EE_OFF) }; 221cc97a95fSMartin Blumenstingl 222cc97a95fSMartin Blumenstingl static const unsigned int pwm_d_pins[] = { PIN(GPIODV_28, EE_OFF) }; 223cc97a95fSMartin Blumenstingl 2240f15f500SNeil Armstrong static const unsigned int pwm_e_pins[] = { PIN(GPIOX_16, EE_OFF) }; 2250f15f500SNeil Armstrong 226cc97a95fSMartin Blumenstingl static const unsigned int pwm_f_clk_pins[] = { PIN(GPIOCLK_1, EE_OFF) }; 227cc97a95fSMartin Blumenstingl static const unsigned int pwm_f_x_pins[] = { PIN(GPIOX_7, EE_OFF) }; 228cc97a95fSMartin Blumenstingl 2291fe8d6cbSNeil Armstrong static const unsigned int hdmi_hpd_pins[] = { PIN(GPIOH_0, EE_OFF) }; 2301fe8d6cbSNeil Armstrong static const unsigned int hdmi_sda_pins[] = { PIN(GPIOH_1, EE_OFF) }; 2311fe8d6cbSNeil Armstrong static const unsigned int hdmi_scl_pins[] = { PIN(GPIOH_2, EE_OFF) }; 2321fe8d6cbSNeil Armstrong 2332899adf0SJerome Brunet static const unsigned int i2s_am_clk_pins[] = { PIN(GPIOH_6, EE_OFF) }; 2342899adf0SJerome Brunet static const unsigned int i2s_out_ao_clk_pins[] = { PIN(GPIOH_7, EE_OFF) }; 2352899adf0SJerome Brunet static const unsigned int i2s_out_lr_clk_pins[] = { PIN(GPIOH_8, EE_OFF) }; 2362899adf0SJerome Brunet static const unsigned int i2s_out_ch01_pins[] = { PIN(GPIOH_9, EE_OFF) }; 2372899adf0SJerome Brunet static const unsigned int i2s_out_ch23_z_pins[] = { PIN(GPIOZ_5, EE_OFF) }; 2382899adf0SJerome Brunet static const unsigned int i2s_out_ch45_z_pins[] = { PIN(GPIOZ_6, EE_OFF) }; 2392899adf0SJerome Brunet static const unsigned int i2s_out_ch67_z_pins[] = { PIN(GPIOZ_7, EE_OFF) }; 2402899adf0SJerome Brunet 241b840d649SJerome Brunet static const unsigned int spdif_out_h_pins[] = { PIN(GPIOH_4, EE_OFF) }; 242b840d649SJerome Brunet 24382e1e5cdSNeil Armstrong static const unsigned int eth_link_led_pins[] = { PIN(GPIOZ_14, EE_OFF) }; 24482e1e5cdSNeil Armstrong static const unsigned int eth_act_led_pins[] = { PIN(GPIOZ_15, EE_OFF) }; 24582e1e5cdSNeil Armstrong 2460f15f500SNeil Armstrong static const struct pinctrl_pin_desc meson_gxl_aobus_pins[] = { 2470f15f500SNeil Armstrong MESON_PIN(GPIOAO_0, 0), 2480f15f500SNeil Armstrong MESON_PIN(GPIOAO_1, 0), 2490f15f500SNeil Armstrong MESON_PIN(GPIOAO_2, 0), 2500f15f500SNeil Armstrong MESON_PIN(GPIOAO_3, 0), 2510f15f500SNeil Armstrong MESON_PIN(GPIOAO_4, 0), 2520f15f500SNeil Armstrong MESON_PIN(GPIOAO_5, 0), 2530f15f500SNeil Armstrong MESON_PIN(GPIOAO_6, 0), 2540f15f500SNeil Armstrong MESON_PIN(GPIOAO_7, 0), 2550f15f500SNeil Armstrong MESON_PIN(GPIOAO_8, 0), 2560f15f500SNeil Armstrong MESON_PIN(GPIOAO_9, 0), 2570f15f500SNeil Armstrong }; 2580f15f500SNeil Armstrong 2590f15f500SNeil Armstrong static const unsigned int uart_tx_ao_a_pins[] = { PIN(GPIOAO_0, 0) }; 2600f15f500SNeil Armstrong static const unsigned int uart_rx_ao_a_pins[] = { PIN(GPIOAO_1, 0) }; 2616a0ab255SNeil Armstrong static const unsigned int uart_tx_ao_b_0_pins[] = { PIN(GPIOAO_0, 0) }; 2626a0ab255SNeil Armstrong static const unsigned int uart_rx_ao_b_1_pins[] = { PIN(GPIOAO_1, 0) }; 2630f15f500SNeil Armstrong static const unsigned int uart_cts_ao_a_pins[] = { PIN(GPIOAO_2, 0) }; 2640f15f500SNeil Armstrong static const unsigned int uart_rts_ao_a_pins[] = { PIN(GPIOAO_3, 0) }; 265b27e3648SMartin Blumenstingl static const unsigned int uart_tx_ao_b_pins[] = { PIN(GPIOAO_4, 0) }; 266b27e3648SMartin Blumenstingl static const unsigned int uart_rx_ao_b_pins[] = { PIN(GPIOAO_5, 0) }; 2670f15f500SNeil Armstrong static const unsigned int uart_cts_ao_b_pins[] = { PIN(GPIOAO_2, 0) }; 2680f15f500SNeil Armstrong static const unsigned int uart_rts_ao_b_pins[] = { PIN(GPIOAO_3, 0) }; 2690f15f500SNeil Armstrong 2706a0ab255SNeil Armstrong static const unsigned int i2c_sck_ao_pins[] = {PIN(GPIOAO_4, 0) }; 2716a0ab255SNeil Armstrong static const unsigned int i2c_sda_ao_pins[] = {PIN(GPIOAO_5, 0) }; 2726a0ab255SNeil Armstrong static const unsigned int i2c_slave_sck_ao_pins[] = {PIN(GPIOAO_4, 0) }; 2736a0ab255SNeil Armstrong static const unsigned int i2c_slave_sda_ao_pins[] = {PIN(GPIOAO_5, 0) }; 2746a0ab255SNeil Armstrong 2750f15f500SNeil Armstrong static const unsigned int remote_input_ao_pins[] = {PIN(GPIOAO_7, 0) }; 2760f15f500SNeil Armstrong 277cc97a95fSMartin Blumenstingl static const unsigned int pwm_ao_a_3_pins[] = { PIN(GPIOAO_3, 0) }; 278cc97a95fSMartin Blumenstingl static const unsigned int pwm_ao_a_8_pins[] = { PIN(GPIOAO_8, 0) }; 279cc97a95fSMartin Blumenstingl 280cff2b010SMartin Blumenstingl static const unsigned int pwm_ao_b_pins[] = { PIN(GPIOAO_9, 0) }; 2816a0ab255SNeil Armstrong static const unsigned int pwm_ao_b_6_pins[] = { PIN(GPIOAO_6, 0) }; 282cff2b010SMartin Blumenstingl 28313586b31SNeil Armstrong static const unsigned int i2s_out_ch23_ao_pins[] = { PIN(GPIOAO_8, 0) }; 28413586b31SNeil Armstrong static const unsigned int i2s_out_ch45_ao_pins[] = { PIN(GPIOAO_9, 0) }; 2852899adf0SJerome Brunet 286b11ec68fSNeil Armstrong static const unsigned int spdif_out_ao_6_pins[] = { PIN(GPIOAO_6, 0) }; 287b11ec68fSNeil Armstrong static const unsigned int spdif_out_ao_9_pins[] = { PIN(GPIOAO_9, 0) }; 288b840d649SJerome Brunet 289690dead2SNeil Armstrong static const unsigned int ao_cec_pins[] = { PIN(GPIOAO_8, 0) }; 290690dead2SNeil Armstrong static const unsigned int ee_cec_pins[] = { PIN(GPIOAO_8, 0) }; 291690dead2SNeil Armstrong 2920f15f500SNeil Armstrong static struct meson_pmx_group meson_gxl_periphs_groups[] = { 2930f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_0, EE_OFF), 2940f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_1, EE_OFF), 2950f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_2, EE_OFF), 2960f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_3, EE_OFF), 2970f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_4, EE_OFF), 2980f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_5, EE_OFF), 2990f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_6, EE_OFF), 3000f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_7, EE_OFF), 3010f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_8, EE_OFF), 3020f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_9, EE_OFF), 3030f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_10, EE_OFF), 3040f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_11, EE_OFF), 3050f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_12, EE_OFF), 3060f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_13, EE_OFF), 3070f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_14, EE_OFF), 3080f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_15, EE_OFF), 3090f15f500SNeil Armstrong 3100f15f500SNeil Armstrong GPIO_GROUP(GPIOH_0, EE_OFF), 3110f15f500SNeil Armstrong GPIO_GROUP(GPIOH_1, EE_OFF), 3120f15f500SNeil Armstrong GPIO_GROUP(GPIOH_2, EE_OFF), 3130f15f500SNeil Armstrong GPIO_GROUP(GPIOH_3, EE_OFF), 3140f15f500SNeil Armstrong GPIO_GROUP(GPIOH_4, EE_OFF), 3150f15f500SNeil Armstrong GPIO_GROUP(GPIOH_5, EE_OFF), 3160f15f500SNeil Armstrong GPIO_GROUP(GPIOH_6, EE_OFF), 3170f15f500SNeil Armstrong GPIO_GROUP(GPIOH_7, EE_OFF), 3180f15f500SNeil Armstrong GPIO_GROUP(GPIOH_8, EE_OFF), 3190f15f500SNeil Armstrong GPIO_GROUP(GPIOH_9, EE_OFF), 3200f15f500SNeil Armstrong 3210f15f500SNeil Armstrong GPIO_GROUP(BOOT_0, EE_OFF), 3220f15f500SNeil Armstrong GPIO_GROUP(BOOT_1, EE_OFF), 3230f15f500SNeil Armstrong GPIO_GROUP(BOOT_2, EE_OFF), 3240f15f500SNeil Armstrong GPIO_GROUP(BOOT_3, EE_OFF), 3250f15f500SNeil Armstrong GPIO_GROUP(BOOT_4, EE_OFF), 3260f15f500SNeil Armstrong GPIO_GROUP(BOOT_5, EE_OFF), 3270f15f500SNeil Armstrong GPIO_GROUP(BOOT_6, EE_OFF), 3280f15f500SNeil Armstrong GPIO_GROUP(BOOT_7, EE_OFF), 3290f15f500SNeil Armstrong GPIO_GROUP(BOOT_8, EE_OFF), 3300f15f500SNeil Armstrong GPIO_GROUP(BOOT_9, EE_OFF), 3310f15f500SNeil Armstrong GPIO_GROUP(BOOT_10, EE_OFF), 3320f15f500SNeil Armstrong GPIO_GROUP(BOOT_11, EE_OFF), 3330f15f500SNeil Armstrong GPIO_GROUP(BOOT_12, EE_OFF), 3340f15f500SNeil Armstrong GPIO_GROUP(BOOT_13, EE_OFF), 3350f15f500SNeil Armstrong GPIO_GROUP(BOOT_14, EE_OFF), 3360f15f500SNeil Armstrong GPIO_GROUP(BOOT_15, EE_OFF), 3370f15f500SNeil Armstrong 3380f15f500SNeil Armstrong GPIO_GROUP(CARD_0, EE_OFF), 3390f15f500SNeil Armstrong GPIO_GROUP(CARD_1, EE_OFF), 3400f15f500SNeil Armstrong GPIO_GROUP(CARD_2, EE_OFF), 3410f15f500SNeil Armstrong GPIO_GROUP(CARD_3, EE_OFF), 3420f15f500SNeil Armstrong GPIO_GROUP(CARD_4, EE_OFF), 3430f15f500SNeil Armstrong GPIO_GROUP(CARD_5, EE_OFF), 3440f15f500SNeil Armstrong GPIO_GROUP(CARD_6, EE_OFF), 3450f15f500SNeil Armstrong 3460f15f500SNeil Armstrong GPIO_GROUP(GPIODV_0, EE_OFF), 3470f15f500SNeil Armstrong GPIO_GROUP(GPIODV_1, EE_OFF), 3480f15f500SNeil Armstrong GPIO_GROUP(GPIODV_2, EE_OFF), 3490f15f500SNeil Armstrong GPIO_GROUP(GPIODV_3, EE_OFF), 3500f15f500SNeil Armstrong GPIO_GROUP(GPIODV_4, EE_OFF), 3510f15f500SNeil Armstrong GPIO_GROUP(GPIODV_5, EE_OFF), 3520f15f500SNeil Armstrong GPIO_GROUP(GPIODV_6, EE_OFF), 3530f15f500SNeil Armstrong GPIO_GROUP(GPIODV_7, EE_OFF), 3540f15f500SNeil Armstrong GPIO_GROUP(GPIODV_8, EE_OFF), 3550f15f500SNeil Armstrong GPIO_GROUP(GPIODV_9, EE_OFF), 3560f15f500SNeil Armstrong GPIO_GROUP(GPIODV_10, EE_OFF), 3570f15f500SNeil Armstrong GPIO_GROUP(GPIODV_11, EE_OFF), 3580f15f500SNeil Armstrong GPIO_GROUP(GPIODV_12, EE_OFF), 3590f15f500SNeil Armstrong GPIO_GROUP(GPIODV_13, EE_OFF), 3600f15f500SNeil Armstrong GPIO_GROUP(GPIODV_14, EE_OFF), 3610f15f500SNeil Armstrong GPIO_GROUP(GPIODV_15, EE_OFF), 3620f15f500SNeil Armstrong GPIO_GROUP(GPIODV_16, EE_OFF), 3630f15f500SNeil Armstrong GPIO_GROUP(GPIODV_17, EE_OFF), 3640f15f500SNeil Armstrong GPIO_GROUP(GPIODV_19, EE_OFF), 3650f15f500SNeil Armstrong GPIO_GROUP(GPIODV_20, EE_OFF), 3660f15f500SNeil Armstrong GPIO_GROUP(GPIODV_21, EE_OFF), 3670f15f500SNeil Armstrong GPIO_GROUP(GPIODV_22, EE_OFF), 3680f15f500SNeil Armstrong GPIO_GROUP(GPIODV_23, EE_OFF), 3690f15f500SNeil Armstrong GPIO_GROUP(GPIODV_24, EE_OFF), 3700f15f500SNeil Armstrong GPIO_GROUP(GPIODV_25, EE_OFF), 3710f15f500SNeil Armstrong GPIO_GROUP(GPIODV_26, EE_OFF), 3720f15f500SNeil Armstrong GPIO_GROUP(GPIODV_27, EE_OFF), 3730f15f500SNeil Armstrong GPIO_GROUP(GPIODV_28, EE_OFF), 3740f15f500SNeil Armstrong GPIO_GROUP(GPIODV_29, EE_OFF), 3750f15f500SNeil Armstrong 3760f15f500SNeil Armstrong GPIO_GROUP(GPIOX_0, EE_OFF), 3770f15f500SNeil Armstrong GPIO_GROUP(GPIOX_1, EE_OFF), 3780f15f500SNeil Armstrong GPIO_GROUP(GPIOX_2, EE_OFF), 3790f15f500SNeil Armstrong GPIO_GROUP(GPIOX_3, EE_OFF), 3800f15f500SNeil Armstrong GPIO_GROUP(GPIOX_4, EE_OFF), 3810f15f500SNeil Armstrong GPIO_GROUP(GPIOX_5, EE_OFF), 3820f15f500SNeil Armstrong GPIO_GROUP(GPIOX_6, EE_OFF), 3830f15f500SNeil Armstrong GPIO_GROUP(GPIOX_7, EE_OFF), 3840f15f500SNeil Armstrong GPIO_GROUP(GPIOX_8, EE_OFF), 3850f15f500SNeil Armstrong GPIO_GROUP(GPIOX_9, EE_OFF), 3860f15f500SNeil Armstrong GPIO_GROUP(GPIOX_10, EE_OFF), 3870f15f500SNeil Armstrong GPIO_GROUP(GPIOX_11, EE_OFF), 3880f15f500SNeil Armstrong GPIO_GROUP(GPIOX_12, EE_OFF), 3890f15f500SNeil Armstrong GPIO_GROUP(GPIOX_13, EE_OFF), 3900f15f500SNeil Armstrong GPIO_GROUP(GPIOX_14, EE_OFF), 3910f15f500SNeil Armstrong GPIO_GROUP(GPIOX_15, EE_OFF), 3920f15f500SNeil Armstrong GPIO_GROUP(GPIOX_16, EE_OFF), 3930f15f500SNeil Armstrong GPIO_GROUP(GPIOX_17, EE_OFF), 3940f15f500SNeil Armstrong GPIO_GROUP(GPIOX_18, EE_OFF), 3950f15f500SNeil Armstrong 3960f15f500SNeil Armstrong GPIO_GROUP(GPIOCLK_0, EE_OFF), 3970f15f500SNeil Armstrong GPIO_GROUP(GPIOCLK_1, EE_OFF), 3980f15f500SNeil Armstrong 3990f15f500SNeil Armstrong GPIO_GROUP(GPIO_TEST_N, EE_OFF), 4000f15f500SNeil Armstrong 4010f15f500SNeil Armstrong /* Bank X */ 4020f15f500SNeil Armstrong GROUP(sdio_d0, 5, 31), 4030f15f500SNeil Armstrong GROUP(sdio_d1, 5, 30), 4040f15f500SNeil Armstrong GROUP(sdio_d2, 5, 29), 4050f15f500SNeil Armstrong GROUP(sdio_d3, 5, 28), 4066a0ab255SNeil Armstrong GROUP(sdio_clk, 5, 27), 4076a0ab255SNeil Armstrong GROUP(sdio_cmd, 5, 26), 4080f15f500SNeil Armstrong GROUP(sdio_irq, 5, 24), 4090f15f500SNeil Armstrong GROUP(uart_tx_a, 5, 19), 4100f15f500SNeil Armstrong GROUP(uart_rx_a, 5, 18), 4110f15f500SNeil Armstrong GROUP(uart_cts_a, 5, 17), 4120f15f500SNeil Armstrong GROUP(uart_rts_a, 5, 16), 4130f15f500SNeil Armstrong GROUP(uart_tx_c, 5, 13), 4140f15f500SNeil Armstrong GROUP(uart_rx_c, 5, 12), 4156a0ab255SNeil Armstrong GROUP(uart_cts_c, 5, 11), 4166a0ab255SNeil Armstrong GROUP(uart_rts_c, 5, 10), 417cc97a95fSMartin Blumenstingl GROUP(pwm_a, 5, 25), 4180f15f500SNeil Armstrong GROUP(pwm_e, 5, 15), 419cc97a95fSMartin Blumenstingl GROUP(pwm_f_x, 5, 14), 420477fa24eSNeil Armstrong GROUP(spi_mosi, 5, 3), 421477fa24eSNeil Armstrong GROUP(spi_miso, 5, 2), 422477fa24eSNeil Armstrong GROUP(spi_ss0, 5, 1), 423477fa24eSNeil Armstrong GROUP(spi_sclk, 5, 0), 4240f15f500SNeil Armstrong 4250f15f500SNeil Armstrong /* Bank Z */ 4266a0ab255SNeil Armstrong GROUP(eth_mdio, 4, 23), 4276a0ab255SNeil Armstrong GROUP(eth_mdc, 4, 22), 4280f15f500SNeil Armstrong GROUP(eth_clk_rx_clk, 4, 21), 4290f15f500SNeil Armstrong GROUP(eth_rx_dv, 4, 20), 4300f15f500SNeil Armstrong GROUP(eth_rxd0, 4, 19), 4310f15f500SNeil Armstrong GROUP(eth_rxd1, 4, 18), 4320f15f500SNeil Armstrong GROUP(eth_rxd2, 4, 17), 4330f15f500SNeil Armstrong GROUP(eth_rxd3, 4, 16), 4340f15f500SNeil Armstrong GROUP(eth_rgmii_tx_clk, 4, 15), 4350f15f500SNeil Armstrong GROUP(eth_tx_en, 4, 14), 4360f15f500SNeil Armstrong GROUP(eth_txd0, 4, 13), 4370f15f500SNeil Armstrong GROUP(eth_txd1, 4, 12), 4380f15f500SNeil Armstrong GROUP(eth_txd2, 4, 11), 4390f15f500SNeil Armstrong GROUP(eth_txd3, 4, 10), 440cc97a95fSMartin Blumenstingl GROUP(pwm_c, 3, 20), 4412899adf0SJerome Brunet GROUP(i2s_out_ch23_z, 3, 26), 4422899adf0SJerome Brunet GROUP(i2s_out_ch45_z, 3, 25), 4432899adf0SJerome Brunet GROUP(i2s_out_ch67_z, 3, 24), 44482e1e5cdSNeil Armstrong GROUP(eth_link_led, 4, 25), 44582e1e5cdSNeil Armstrong GROUP(eth_act_led, 4, 24), 4460f15f500SNeil Armstrong 4471fe8d6cbSNeil Armstrong /* Bank H */ 4481fe8d6cbSNeil Armstrong GROUP(hdmi_hpd, 6, 31), 4491fe8d6cbSNeil Armstrong GROUP(hdmi_sda, 6, 30), 4501fe8d6cbSNeil Armstrong GROUP(hdmi_scl, 6, 29), 4512899adf0SJerome Brunet GROUP(i2s_am_clk, 6, 26), 4522899adf0SJerome Brunet GROUP(i2s_out_ao_clk, 6, 25), 4532899adf0SJerome Brunet GROUP(i2s_out_lr_clk, 6, 24), 4542899adf0SJerome Brunet GROUP(i2s_out_ch01, 6, 23), 455b840d649SJerome Brunet GROUP(spdif_out_h, 6, 28), 4561fe8d6cbSNeil Armstrong 4570f15f500SNeil Armstrong /* Bank DV */ 4580f15f500SNeil Armstrong GROUP(uart_tx_b, 2, 16), 4590f15f500SNeil Armstrong GROUP(uart_rx_b, 2, 15), 4606a0ab255SNeil Armstrong GROUP(uart_cts_b, 2, 14), 4616a0ab255SNeil Armstrong GROUP(uart_rts_b, 2, 13), 4626a0ab255SNeil Armstrong GROUP(i2c_sda_c_dv18, 1, 17), 4636a0ab255SNeil Armstrong GROUP(i2c_sck_c_dv19, 1, 16), 4646a0ab255SNeil Armstrong GROUP(i2c_sda_a, 1, 15), 4656a0ab255SNeil Armstrong GROUP(i2c_sck_a, 1, 14), 4666a0ab255SNeil Armstrong GROUP(i2c_sda_b, 1, 13), 4676a0ab255SNeil Armstrong GROUP(i2c_sck_b, 1, 12), 4686a0ab255SNeil Armstrong GROUP(i2c_sda_c, 1, 11), 4696a0ab255SNeil Armstrong GROUP(i2c_sck_c, 1, 10), 470cc97a95fSMartin Blumenstingl GROUP(pwm_b, 2, 11), 471cc97a95fSMartin Blumenstingl GROUP(pwm_d, 2, 12), 4720f15f500SNeil Armstrong 4730f15f500SNeil Armstrong /* Bank BOOT */ 4740f15f500SNeil Armstrong GROUP(emmc_nand_d07, 7, 31), 4750f15f500SNeil Armstrong GROUP(emmc_clk, 7, 30), 4760f15f500SNeil Armstrong GROUP(emmc_cmd, 7, 29), 4770f15f500SNeil Armstrong GROUP(emmc_ds, 7, 28), 4786a0ab255SNeil Armstrong GROUP(nor_d, 7, 13), 4796a0ab255SNeil Armstrong GROUP(nor_q, 7, 12), 4806a0ab255SNeil Armstrong GROUP(nor_c, 7, 11), 4816a0ab255SNeil Armstrong GROUP(nor_cs, 7, 10), 4820f15f500SNeil Armstrong GROUP(nand_ce0, 7, 7), 4830f15f500SNeil Armstrong GROUP(nand_ce1, 7, 6), 4840f15f500SNeil Armstrong GROUP(nand_rb0, 7, 5), 4850f15f500SNeil Armstrong GROUP(nand_ale, 7, 4), 4860f15f500SNeil Armstrong GROUP(nand_cle, 7, 3), 4870f15f500SNeil Armstrong GROUP(nand_wen_clk, 7, 2), 4880f15f500SNeil Armstrong GROUP(nand_ren_wr, 7, 1), 4890f15f500SNeil Armstrong GROUP(nand_dqs, 7, 0), 4900f15f500SNeil Armstrong 4910f15f500SNeil Armstrong /* Bank CARD */ 4920f15f500SNeil Armstrong GROUP(sdcard_d1, 6, 5), 4930f15f500SNeil Armstrong GROUP(sdcard_d0, 6, 4), 4940f15f500SNeil Armstrong GROUP(sdcard_d3, 6, 1), 4950f15f500SNeil Armstrong GROUP(sdcard_d2, 6, 0), 4960f15f500SNeil Armstrong GROUP(sdcard_cmd, 6, 2), 4970f15f500SNeil Armstrong GROUP(sdcard_clk, 6, 3), 498cc97a95fSMartin Blumenstingl 499cc97a95fSMartin Blumenstingl /* Bank CLK */ 500cc97a95fSMartin Blumenstingl GROUP(pwm_f_clk, 8, 30), 5010f15f500SNeil Armstrong }; 5020f15f500SNeil Armstrong 5030f15f500SNeil Armstrong static struct meson_pmx_group meson_gxl_aobus_groups[] = { 5040f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_0, 0), 5050f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_1, 0), 5060f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_2, 0), 5070f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_3, 0), 5080f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_4, 0), 5090f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_5, 0), 5100f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_6, 0), 5110f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_7, 0), 5120f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_8, 0), 5130f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_9, 0), 5140f15f500SNeil Armstrong 5150f15f500SNeil Armstrong /* bank AO */ 5166a0ab255SNeil Armstrong GROUP(uart_tx_ao_b_0, 0, 26), 5176a0ab255SNeil Armstrong GROUP(uart_rx_ao_b_1, 0, 25), 518b27e3648SMartin Blumenstingl GROUP(uart_tx_ao_b, 0, 24), 5196a0ab255SNeil Armstrong GROUP(uart_rx_ao_b, 0, 23), 5200f15f500SNeil Armstrong GROUP(uart_tx_ao_a, 0, 12), 5210f15f500SNeil Armstrong GROUP(uart_rx_ao_a, 0, 11), 5220f15f500SNeil Armstrong GROUP(uart_cts_ao_a, 0, 10), 5230f15f500SNeil Armstrong GROUP(uart_rts_ao_a, 0, 9), 5240f15f500SNeil Armstrong GROUP(uart_cts_ao_b, 0, 8), 5250f15f500SNeil Armstrong GROUP(uart_rts_ao_b, 0, 7), 5266a0ab255SNeil Armstrong GROUP(i2c_sck_ao, 0, 6), 5276a0ab255SNeil Armstrong GROUP(i2c_sda_ao, 0, 5), 5286a0ab255SNeil Armstrong GROUP(i2c_slave_sck_ao, 0, 2), 5296a0ab255SNeil Armstrong GROUP(i2c_slave_sda_ao, 0, 1), 5300f15f500SNeil Armstrong GROUP(remote_input_ao, 0, 0), 531cc97a95fSMartin Blumenstingl GROUP(pwm_ao_a_3, 0, 22), 5326a0ab255SNeil Armstrong GROUP(pwm_ao_b_6, 0, 18), 533cc97a95fSMartin Blumenstingl GROUP(pwm_ao_a_8, 0, 17), 534cff2b010SMartin Blumenstingl GROUP(pwm_ao_b, 0, 3), 5352899adf0SJerome Brunet GROUP(i2s_out_ch23_ao, 1, 0), 5362899adf0SJerome Brunet GROUP(i2s_out_ch45_ao, 1, 1), 537b840d649SJerome Brunet GROUP(spdif_out_ao_6, 0, 16), 538b840d649SJerome Brunet GROUP(spdif_out_ao_9, 0, 4), 539690dead2SNeil Armstrong GROUP(ao_cec, 0, 15), 540690dead2SNeil Armstrong GROUP(ee_cec, 0, 14), 5410f15f500SNeil Armstrong }; 5420f15f500SNeil Armstrong 5430f15f500SNeil Armstrong static const char * const gpio_periphs_groups[] = { 5440f15f500SNeil Armstrong "GPIOZ_0", "GPIOZ_1", "GPIOZ_2", "GPIOZ_3", "GPIOZ_4", 5450f15f500SNeil Armstrong "GPIOZ_5", "GPIOZ_6", "GPIOZ_7", "GPIOZ_8", "GPIOZ_9", 5460f15f500SNeil Armstrong "GPIOZ_10", "GPIOZ_11", "GPIOZ_12", "GPIOZ_13", "GPIOZ_14", 5470f15f500SNeil Armstrong "GPIOZ_15", 5480f15f500SNeil Armstrong 5490f15f500SNeil Armstrong "GPIOH_0", "GPIOH_1", "GPIOH_2", "GPIOH_3", "GPIOH_4", 5500f15f500SNeil Armstrong "GPIOH_5", "GPIOH_6", "GPIOH_7", "GPIOH_8", "GPIOH_9", 5510f15f500SNeil Armstrong 5520f15f500SNeil Armstrong "BOOT_0", "BOOT_1", "BOOT_2", "BOOT_3", "BOOT_4", 5530f15f500SNeil Armstrong "BOOT_5", "BOOT_6", "BOOT_7", "BOOT_8", "BOOT_9", 5540f15f500SNeil Armstrong "BOOT_10", "BOOT_11", "BOOT_12", "BOOT_13", "BOOT_14", 5550f15f500SNeil Armstrong "BOOT_15", 5560f15f500SNeil Armstrong 5570f15f500SNeil Armstrong "CARD_0", "CARD_1", "CARD_2", "CARD_3", "CARD_4", 5580f15f500SNeil Armstrong "CARD_5", "CARD_6", 5590f15f500SNeil Armstrong 5600f15f500SNeil Armstrong "GPIODV_0", "GPIODV_1", "GPIODV_2", "GPIODV_3", "GPIODV_4", 5610f15f500SNeil Armstrong "GPIODV_5", "GPIODV_6", "GPIODV_7", "GPIODV_8", "GPIODV_9", 5620f15f500SNeil Armstrong "GPIODV_10", "GPIODV_11", "GPIODV_12", "GPIODV_13", "GPIODV_14", 5630f15f500SNeil Armstrong "GPIODV_15", "GPIODV_16", "GPIODV_17", "GPIODV_18", "GPIODV_19", 5640f15f500SNeil Armstrong "GPIODV_20", "GPIODV_21", "GPIODV_22", "GPIODV_23", "GPIODV_24", 5650f15f500SNeil Armstrong "GPIODV_25", "GPIODV_26", "GPIODV_27", "GPIODV_28", "GPIODV_29", 5660f15f500SNeil Armstrong 5670f15f500SNeil Armstrong "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4", 5680f15f500SNeil Armstrong "GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9", 5690f15f500SNeil Armstrong "GPIOX_10", "GPIOX_11", "GPIOX_12", "GPIOX_13", "GPIOX_14", 5700f15f500SNeil Armstrong "GPIOX_15", "GPIOX_16", "GPIOX_17", "GPIOX_18", 5710f15f500SNeil Armstrong 5720f15f500SNeil Armstrong "GPIO_TEST_N", 5730f15f500SNeil Armstrong }; 5740f15f500SNeil Armstrong 5750f15f500SNeil Armstrong static const char * const emmc_groups[] = { 5760f15f500SNeil Armstrong "emmc_nand_d07", "emmc_clk", "emmc_cmd", "emmc_ds", 5770f15f500SNeil Armstrong }; 5780f15f500SNeil Armstrong 5796a0ab255SNeil Armstrong static const char * const nor_groups[] = { 5806a0ab255SNeil Armstrong "nor_d", "nor_q", "nor_c", "nor_cs", 5816a0ab255SNeil Armstrong }; 5826a0ab255SNeil Armstrong 583477fa24eSNeil Armstrong static const char * const spi_groups[] = { 584477fa24eSNeil Armstrong "spi_mosi", "spi_miso", "spi_ss0", "spi_sclk", 585477fa24eSNeil Armstrong }; 586477fa24eSNeil Armstrong 5870f15f500SNeil Armstrong static const char * const sdcard_groups[] = { 5880f15f500SNeil Armstrong "sdcard_d0", "sdcard_d1", "sdcard_d2", "sdcard_d3", 5890f15f500SNeil Armstrong "sdcard_cmd", "sdcard_clk", 5900f15f500SNeil Armstrong }; 5910f15f500SNeil Armstrong 5920f15f500SNeil Armstrong static const char * const sdio_groups[] = { 5930f15f500SNeil Armstrong "sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3", 5940f15f500SNeil Armstrong "sdio_cmd", "sdio_clk", "sdio_irq", 5950f15f500SNeil Armstrong }; 5960f15f500SNeil Armstrong 5970f15f500SNeil Armstrong static const char * const nand_groups[] = { 5980f15f500SNeil Armstrong "nand_ce0", "nand_ce1", "nand_rb0", "nand_ale", "nand_cle", 5990f15f500SNeil Armstrong "nand_wen_clk", "nand_ren_wr", "nand_dqs", 6000f15f500SNeil Armstrong }; 6010f15f500SNeil Armstrong 6020f15f500SNeil Armstrong static const char * const uart_a_groups[] = { 6030f15f500SNeil Armstrong "uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a", 6040f15f500SNeil Armstrong }; 6050f15f500SNeil Armstrong 6060f15f500SNeil Armstrong static const char * const uart_b_groups[] = { 6076a0ab255SNeil Armstrong "uart_tx_b", "uart_rx_b", "uart_cts_b", "uart_rts_b", 6080f15f500SNeil Armstrong }; 6090f15f500SNeil Armstrong 6100f15f500SNeil Armstrong static const char * const uart_c_groups[] = { 6116a0ab255SNeil Armstrong "uart_tx_c", "uart_rx_c", "uart_cts_c", "uart_rts_c", 6120f15f500SNeil Armstrong }; 6130f15f500SNeil Armstrong 6140f15f500SNeil Armstrong static const char * const i2c_a_groups[] = { 6150f15f500SNeil Armstrong "i2c_sck_a", "i2c_sda_a", 6160f15f500SNeil Armstrong }; 6170f15f500SNeil Armstrong 6180f15f500SNeil Armstrong static const char * const i2c_b_groups[] = { 6190f15f500SNeil Armstrong "i2c_sck_b", "i2c_sda_b", 6200f15f500SNeil Armstrong }; 6210f15f500SNeil Armstrong 6220f15f500SNeil Armstrong static const char * const i2c_c_groups[] = { 6236a0ab255SNeil Armstrong "i2c_sck_c", "i2c_sda_c", "i2c_sda_c_dv18", "i2c_sck_c_dv19", 6240f15f500SNeil Armstrong }; 6250f15f500SNeil Armstrong 6260f15f500SNeil Armstrong static const char * const eth_groups[] = { 6270f15f500SNeil Armstrong "eth_mdio", "eth_mdc", "eth_clk_rx_clk", "eth_rx_dv", 6280f15f500SNeil Armstrong "eth_rxd0", "eth_rxd1", "eth_rxd2", "eth_rxd3", 6290f15f500SNeil Armstrong "eth_rgmii_tx_clk", "eth_tx_en", 6300f15f500SNeil Armstrong "eth_txd0", "eth_txd1", "eth_txd2", "eth_txd3", 6310f15f500SNeil Armstrong }; 6320f15f500SNeil Armstrong 633cc97a95fSMartin Blumenstingl static const char * const pwm_a_groups[] = { 634cc97a95fSMartin Blumenstingl "pwm_a", 635cc97a95fSMartin Blumenstingl }; 636cc97a95fSMartin Blumenstingl 637cc97a95fSMartin Blumenstingl static const char * const pwm_b_groups[] = { 638cc97a95fSMartin Blumenstingl "pwm_b", 639cc97a95fSMartin Blumenstingl }; 640cc97a95fSMartin Blumenstingl 641cc97a95fSMartin Blumenstingl static const char * const pwm_c_groups[] = { 642cc97a95fSMartin Blumenstingl "pwm_c", 643cc97a95fSMartin Blumenstingl }; 644cc97a95fSMartin Blumenstingl 645cc97a95fSMartin Blumenstingl static const char * const pwm_d_groups[] = { 646cc97a95fSMartin Blumenstingl "pwm_d", 647cc97a95fSMartin Blumenstingl }; 648cc97a95fSMartin Blumenstingl 6490f15f500SNeil Armstrong static const char * const pwm_e_groups[] = { 6500f15f500SNeil Armstrong "pwm_e", 6510f15f500SNeil Armstrong }; 6520f15f500SNeil Armstrong 653cc97a95fSMartin Blumenstingl static const char * const pwm_f_groups[] = { 654cc97a95fSMartin Blumenstingl "pwm_f_clk", "pwm_f_x", 655cc97a95fSMartin Blumenstingl }; 656cc97a95fSMartin Blumenstingl 6571fe8d6cbSNeil Armstrong static const char * const hdmi_hpd_groups[] = { 6581fe8d6cbSNeil Armstrong "hdmi_hpd", 6591fe8d6cbSNeil Armstrong }; 6601fe8d6cbSNeil Armstrong 6611fe8d6cbSNeil Armstrong static const char * const hdmi_i2c_groups[] = { 6621fe8d6cbSNeil Armstrong "hdmi_sda", "hdmi_scl", 6631fe8d6cbSNeil Armstrong }; 6641fe8d6cbSNeil Armstrong 6652899adf0SJerome Brunet static const char * const i2s_out_groups[] = { 6662899adf0SJerome Brunet "i2s_am_clk", "i2s_out_ao_clk", "i2s_out_lr_clk", 6672899adf0SJerome Brunet "i2s_out_ch01", "i2s_out_ch23_z", "i2s_out_ch45_z", "i2s_out_ch67_z", 6682899adf0SJerome Brunet }; 6692899adf0SJerome Brunet 670b840d649SJerome Brunet static const char * const spdif_out_groups[] = { 671b840d649SJerome Brunet "spdif_out_h", 672b840d649SJerome Brunet }; 673b840d649SJerome Brunet 67482e1e5cdSNeil Armstrong static const char * const eth_led_groups[] = { 67582e1e5cdSNeil Armstrong "eth_link_led", "eth_act_led", 67682e1e5cdSNeil Armstrong }; 67782e1e5cdSNeil Armstrong 6780f15f500SNeil Armstrong static const char * const gpio_aobus_groups[] = { 6790f15f500SNeil Armstrong "GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4", 6800f15f500SNeil Armstrong "GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9", 6810f15f500SNeil Armstrong }; 6820f15f500SNeil Armstrong 6830f15f500SNeil Armstrong static const char * const uart_ao_groups[] = { 6840f15f500SNeil Armstrong "uart_tx_ao_a", "uart_rx_ao_a", "uart_cts_ao_a", "uart_rts_ao_a", 6850f15f500SNeil Armstrong }; 6860f15f500SNeil Armstrong 6870f15f500SNeil Armstrong static const char * const uart_ao_b_groups[] = { 6880f15f500SNeil Armstrong "uart_tx_ao_b", "uart_rx_ao_b", "uart_cts_ao_b", "uart_rts_ao_b", 6896a0ab255SNeil Armstrong "uart_tx_ao_b_0", "uart_rx_ao_b_1", 6906a0ab255SNeil Armstrong }; 6916a0ab255SNeil Armstrong 6926a0ab255SNeil Armstrong static const char * const i2c_ao_groups[] = { 6936a0ab255SNeil Armstrong "i2c_sck_ao", "i2c_sda_ao", 6946a0ab255SNeil Armstrong }; 6956a0ab255SNeil Armstrong 6966a0ab255SNeil Armstrong static const char * const i2c_slave_ao_groups[] = { 6976a0ab255SNeil Armstrong "i2c_slave_sck_ao", "i2c_slave_sda_ao", 6980f15f500SNeil Armstrong }; 6990f15f500SNeil Armstrong 7000f15f500SNeil Armstrong static const char * const remote_input_ao_groups[] = { 7010f15f500SNeil Armstrong "remote_input_ao", 7020f15f500SNeil Armstrong }; 7030f15f500SNeil Armstrong 704cc97a95fSMartin Blumenstingl static const char * const pwm_ao_a_groups[] = { 705cc97a95fSMartin Blumenstingl "pwm_ao_a_3", "pwm_ao_a_8", 706cc97a95fSMartin Blumenstingl }; 707cc97a95fSMartin Blumenstingl 708cff2b010SMartin Blumenstingl static const char * const pwm_ao_b_groups[] = { 7096a0ab255SNeil Armstrong "pwm_ao_b", "pwm_ao_b_6", 710cff2b010SMartin Blumenstingl }; 711cff2b010SMartin Blumenstingl 7122899adf0SJerome Brunet static const char * const i2s_out_ao_groups[] = { 7132899adf0SJerome Brunet "i2s_out_ch23_ao", "i2s_out_ch45_ao", 7142899adf0SJerome Brunet }; 7152899adf0SJerome Brunet 716b840d649SJerome Brunet static const char * const spdif_out_ao_groups[] = { 717b840d649SJerome Brunet "spdif_out_ao_6", "spdif_out_ao_9", 718b840d649SJerome Brunet }; 719b840d649SJerome Brunet 720690dead2SNeil Armstrong static const char * const cec_ao_groups[] = { 721690dead2SNeil Armstrong "ao_cec", "ee_cec", 722690dead2SNeil Armstrong }; 723690dead2SNeil Armstrong 7240f15f500SNeil Armstrong static struct meson_pmx_func meson_gxl_periphs_functions[] = { 7250f15f500SNeil Armstrong FUNCTION(gpio_periphs), 7260f15f500SNeil Armstrong FUNCTION(emmc), 7276a0ab255SNeil Armstrong FUNCTION(nor), 728477fa24eSNeil Armstrong FUNCTION(spi), 7290f15f500SNeil Armstrong FUNCTION(sdcard), 7300f15f500SNeil Armstrong FUNCTION(sdio), 7310f15f500SNeil Armstrong FUNCTION(nand), 7320f15f500SNeil Armstrong FUNCTION(uart_a), 7330f15f500SNeil Armstrong FUNCTION(uart_b), 7340f15f500SNeil Armstrong FUNCTION(uart_c), 7350f15f500SNeil Armstrong FUNCTION(i2c_a), 7360f15f500SNeil Armstrong FUNCTION(i2c_b), 7370f15f500SNeil Armstrong FUNCTION(i2c_c), 7380f15f500SNeil Armstrong FUNCTION(eth), 739cc97a95fSMartin Blumenstingl FUNCTION(pwm_a), 740cc97a95fSMartin Blumenstingl FUNCTION(pwm_b), 741cc97a95fSMartin Blumenstingl FUNCTION(pwm_c), 742cc97a95fSMartin Blumenstingl FUNCTION(pwm_d), 7430f15f500SNeil Armstrong FUNCTION(pwm_e), 744cc97a95fSMartin Blumenstingl FUNCTION(pwm_f), 7451fe8d6cbSNeil Armstrong FUNCTION(hdmi_hpd), 7461fe8d6cbSNeil Armstrong FUNCTION(hdmi_i2c), 7472899adf0SJerome Brunet FUNCTION(i2s_out), 748b840d649SJerome Brunet FUNCTION(spdif_out), 74982e1e5cdSNeil Armstrong FUNCTION(eth_led), 7500f15f500SNeil Armstrong }; 7510f15f500SNeil Armstrong 7520f15f500SNeil Armstrong static struct meson_pmx_func meson_gxl_aobus_functions[] = { 7530f15f500SNeil Armstrong FUNCTION(gpio_aobus), 7540f15f500SNeil Armstrong FUNCTION(uart_ao), 7550f15f500SNeil Armstrong FUNCTION(uart_ao_b), 7566a0ab255SNeil Armstrong FUNCTION(i2c_ao), 7576a0ab255SNeil Armstrong FUNCTION(i2c_slave_ao), 7580f15f500SNeil Armstrong FUNCTION(remote_input_ao), 759cc97a95fSMartin Blumenstingl FUNCTION(pwm_ao_a), 760cff2b010SMartin Blumenstingl FUNCTION(pwm_ao_b), 7612899adf0SJerome Brunet FUNCTION(i2s_out_ao), 762b840d649SJerome Brunet FUNCTION(spdif_out_ao), 763690dead2SNeil Armstrong FUNCTION(cec_ao), 7640f15f500SNeil Armstrong }; 7650f15f500SNeil Armstrong 7660f15f500SNeil Armstrong static struct meson_bank meson_gxl_periphs_banks[] = { 7670f15f500SNeil Armstrong /* name first last pullen pull dir out in */ 7680f15f500SNeil Armstrong BANK("X", PIN(GPIOX_0, EE_OFF), PIN(GPIOX_18, EE_OFF), 4, 0, 4, 0, 12, 0, 13, 0, 14, 0), 7690f15f500SNeil Armstrong BANK("DV", PIN(GPIODV_0, EE_OFF), PIN(GPIODV_29, EE_OFF), 0, 0, 0, 0, 0, 0, 1, 0, 2, 0), 7700f15f500SNeil Armstrong BANK("H", PIN(GPIOH_0, EE_OFF), PIN(GPIOH_9, EE_OFF), 1, 20, 1, 20, 3, 20, 4, 20, 5, 20), 7710f15f500SNeil Armstrong BANK("Z", PIN(GPIOZ_0, EE_OFF), PIN(GPIOZ_15, EE_OFF), 3, 0, 3, 0, 9, 0, 10, 0, 11, 0), 7720f15f500SNeil Armstrong BANK("CARD", PIN(CARD_0, EE_OFF), PIN(CARD_6, EE_OFF), 2, 20, 2, 20, 6, 20, 7, 20, 8, 20), 7730f15f500SNeil Armstrong BANK("BOOT", PIN(BOOT_0, EE_OFF), PIN(BOOT_15, EE_OFF), 2, 0, 2, 0, 6, 0, 7, 0, 8, 0), 7740f15f500SNeil Armstrong BANK("CLK", PIN(GPIOCLK_0, EE_OFF), PIN(GPIOCLK_1, EE_OFF), 3, 28, 3, 28, 9, 28, 10, 28, 11, 28), 7750f15f500SNeil Armstrong }; 7760f15f500SNeil Armstrong 7770f15f500SNeil Armstrong static struct meson_bank meson_gxl_aobus_banks[] = { 7780f15f500SNeil Armstrong /* name first last pullen pull dir out in */ 7790f15f500SNeil Armstrong BANK("AO", PIN(GPIOAO_0, 0), PIN(GPIOAO_9, 0), 0, 0, 0, 16, 0, 0, 0, 16, 1, 0), 7800f15f500SNeil Armstrong }; 7810f15f500SNeil Armstrong 7820f15f500SNeil Armstrong struct meson_pinctrl_data meson_gxl_periphs_pinctrl_data = { 7830f15f500SNeil Armstrong .name = "periphs-banks", 7840f15f500SNeil Armstrong .pin_base = 10, 7850f15f500SNeil Armstrong .pins = meson_gxl_periphs_pins, 7860f15f500SNeil Armstrong .groups = meson_gxl_periphs_groups, 7870f15f500SNeil Armstrong .funcs = meson_gxl_periphs_functions, 7880f15f500SNeil Armstrong .banks = meson_gxl_periphs_banks, 7890f15f500SNeil Armstrong .num_pins = ARRAY_SIZE(meson_gxl_periphs_pins), 7900f15f500SNeil Armstrong .num_groups = ARRAY_SIZE(meson_gxl_periphs_groups), 7910f15f500SNeil Armstrong .num_funcs = ARRAY_SIZE(meson_gxl_periphs_functions), 7920f15f500SNeil Armstrong .num_banks = ARRAY_SIZE(meson_gxl_periphs_banks), 7930f15f500SNeil Armstrong }; 7940f15f500SNeil Armstrong 7950f15f500SNeil Armstrong struct meson_pinctrl_data meson_gxl_aobus_pinctrl_data = { 7960f15f500SNeil Armstrong .name = "aobus-banks", 7970f15f500SNeil Armstrong .pin_base = 0, 7980f15f500SNeil Armstrong .pins = meson_gxl_aobus_pins, 7990f15f500SNeil Armstrong .groups = meson_gxl_aobus_groups, 8000f15f500SNeil Armstrong .funcs = meson_gxl_aobus_functions, 8010f15f500SNeil Armstrong .banks = meson_gxl_aobus_banks, 8020f15f500SNeil Armstrong .num_pins = ARRAY_SIZE(meson_gxl_aobus_pins), 8030f15f500SNeil Armstrong .num_groups = ARRAY_SIZE(meson_gxl_aobus_groups), 8040f15f500SNeil Armstrong .num_funcs = ARRAY_SIZE(meson_gxl_aobus_functions), 8050f15f500SNeil Armstrong .num_banks = ARRAY_SIZE(meson_gxl_aobus_banks), 8060f15f500SNeil Armstrong }; 807