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), 920f15f500SNeil Armstrong MESON_PIN(GPIODV_19, EE_OFF), 930f15f500SNeil Armstrong MESON_PIN(GPIODV_20, EE_OFF), 940f15f500SNeil Armstrong MESON_PIN(GPIODV_21, EE_OFF), 950f15f500SNeil Armstrong MESON_PIN(GPIODV_22, EE_OFF), 960f15f500SNeil Armstrong MESON_PIN(GPIODV_23, EE_OFF), 970f15f500SNeil Armstrong MESON_PIN(GPIODV_24, EE_OFF), 980f15f500SNeil Armstrong MESON_PIN(GPIODV_25, EE_OFF), 990f15f500SNeil Armstrong MESON_PIN(GPIODV_26, EE_OFF), 1000f15f500SNeil Armstrong MESON_PIN(GPIODV_27, EE_OFF), 1010f15f500SNeil Armstrong MESON_PIN(GPIODV_28, EE_OFF), 1020f15f500SNeil Armstrong MESON_PIN(GPIODV_29, EE_OFF), 1030f15f500SNeil Armstrong 1040f15f500SNeil Armstrong MESON_PIN(GPIOX_0, EE_OFF), 1050f15f500SNeil Armstrong MESON_PIN(GPIOX_1, EE_OFF), 1060f15f500SNeil Armstrong MESON_PIN(GPIOX_2, EE_OFF), 1070f15f500SNeil Armstrong MESON_PIN(GPIOX_3, EE_OFF), 1080f15f500SNeil Armstrong MESON_PIN(GPIOX_4, EE_OFF), 1090f15f500SNeil Armstrong MESON_PIN(GPIOX_5, EE_OFF), 1100f15f500SNeil Armstrong MESON_PIN(GPIOX_6, EE_OFF), 1110f15f500SNeil Armstrong MESON_PIN(GPIOX_7, EE_OFF), 1120f15f500SNeil Armstrong MESON_PIN(GPIOX_8, EE_OFF), 1130f15f500SNeil Armstrong MESON_PIN(GPIOX_9, EE_OFF), 1140f15f500SNeil Armstrong MESON_PIN(GPIOX_10, EE_OFF), 1150f15f500SNeil Armstrong MESON_PIN(GPIOX_11, EE_OFF), 1160f15f500SNeil Armstrong MESON_PIN(GPIOX_12, EE_OFF), 1170f15f500SNeil Armstrong MESON_PIN(GPIOX_13, EE_OFF), 1180f15f500SNeil Armstrong MESON_PIN(GPIOX_14, EE_OFF), 1190f15f500SNeil Armstrong MESON_PIN(GPIOX_15, EE_OFF), 1200f15f500SNeil Armstrong MESON_PIN(GPIOX_16, EE_OFF), 1210f15f500SNeil Armstrong MESON_PIN(GPIOX_17, EE_OFF), 1220f15f500SNeil Armstrong MESON_PIN(GPIOX_18, EE_OFF), 1230f15f500SNeil Armstrong 1240f15f500SNeil Armstrong MESON_PIN(GPIOCLK_0, EE_OFF), 1250f15f500SNeil Armstrong MESON_PIN(GPIOCLK_1, EE_OFF), 1260f15f500SNeil Armstrong 1270f15f500SNeil Armstrong MESON_PIN(GPIO_TEST_N, EE_OFF), 1280f15f500SNeil Armstrong }; 1290f15f500SNeil Armstrong 1300f15f500SNeil Armstrong static const unsigned int emmc_nand_d07_pins[] = { 1310f15f500SNeil Armstrong PIN(BOOT_0, EE_OFF), PIN(BOOT_1, EE_OFF), PIN(BOOT_2, EE_OFF), 1320f15f500SNeil Armstrong PIN(BOOT_3, EE_OFF), PIN(BOOT_4, EE_OFF), PIN(BOOT_5, EE_OFF), 1330f15f500SNeil Armstrong PIN(BOOT_6, EE_OFF), PIN(BOOT_7, EE_OFF), 1340f15f500SNeil Armstrong }; 1350f15f500SNeil Armstrong static const unsigned int emmc_clk_pins[] = { PIN(BOOT_8, EE_OFF) }; 1360f15f500SNeil Armstrong static const unsigned int emmc_cmd_pins[] = { PIN(BOOT_10, EE_OFF) }; 1370f15f500SNeil Armstrong static const unsigned int emmc_ds_pins[] = { PIN(BOOT_15, EE_OFF) }; 1380f15f500SNeil Armstrong 1390f15f500SNeil Armstrong static const unsigned int sdcard_d0_pins[] = { PIN(CARD_1, EE_OFF) }; 1400f15f500SNeil Armstrong static const unsigned int sdcard_d1_pins[] = { PIN(CARD_0, EE_OFF) }; 1410f15f500SNeil Armstrong static const unsigned int sdcard_d2_pins[] = { PIN(CARD_5, EE_OFF) }; 1420f15f500SNeil Armstrong static const unsigned int sdcard_d3_pins[] = { PIN(CARD_4, EE_OFF) }; 1430f15f500SNeil Armstrong static const unsigned int sdcard_cmd_pins[] = { PIN(CARD_3, EE_OFF) }; 1440f15f500SNeil Armstrong static const unsigned int sdcard_clk_pins[] = { PIN(CARD_2, EE_OFF) }; 1450f15f500SNeil Armstrong 1460f15f500SNeil Armstrong static const unsigned int sdio_d0_pins[] = { PIN(GPIOX_0, EE_OFF) }; 1470f15f500SNeil Armstrong static const unsigned int sdio_d1_pins[] = { PIN(GPIOX_1, EE_OFF) }; 1480f15f500SNeil Armstrong static const unsigned int sdio_d2_pins[] = { PIN(GPIOX_2, EE_OFF) }; 1490f15f500SNeil Armstrong static const unsigned int sdio_d3_pins[] = { PIN(GPIOX_3, EE_OFF) }; 1500f15f500SNeil Armstrong static const unsigned int sdio_cmd_pins[] = { PIN(GPIOX_4, EE_OFF) }; 1510f15f500SNeil Armstrong static const unsigned int sdio_clk_pins[] = { PIN(GPIOX_5, EE_OFF) }; 1520f15f500SNeil Armstrong static const unsigned int sdio_irq_pins[] = { PIN(GPIOX_7, EE_OFF) }; 1530f15f500SNeil Armstrong 1540f15f500SNeil Armstrong static const unsigned int nand_ce0_pins[] = { PIN(BOOT_8, EE_OFF) }; 1550f15f500SNeil Armstrong static const unsigned int nand_ce1_pins[] = { PIN(BOOT_9, EE_OFF) }; 1560f15f500SNeil Armstrong static const unsigned int nand_rb0_pins[] = { PIN(BOOT_10, EE_OFF) }; 1570f15f500SNeil Armstrong static const unsigned int nand_ale_pins[] = { PIN(BOOT_11, EE_OFF) }; 1580f15f500SNeil Armstrong static const unsigned int nand_cle_pins[] = { PIN(BOOT_12, EE_OFF) }; 1590f15f500SNeil Armstrong static const unsigned int nand_wen_clk_pins[] = { PIN(BOOT_13, EE_OFF) }; 1600f15f500SNeil Armstrong static const unsigned int nand_ren_wr_pins[] = { PIN(BOOT_14, EE_OFF) }; 1610f15f500SNeil Armstrong static const unsigned int nand_dqs_pins[] = { PIN(BOOT_15, EE_OFF) }; 1620f15f500SNeil Armstrong 1630f15f500SNeil Armstrong static const unsigned int uart_tx_a_pins[] = { PIN(GPIOX_12, EE_OFF) }; 1640f15f500SNeil Armstrong static const unsigned int uart_rx_a_pins[] = { PIN(GPIOX_13, EE_OFF) }; 1650f15f500SNeil Armstrong static const unsigned int uart_cts_a_pins[] = { PIN(GPIOX_14, EE_OFF) }; 1660f15f500SNeil Armstrong static const unsigned int uart_rts_a_pins[] = { PIN(GPIOX_15, EE_OFF) }; 1670f15f500SNeil Armstrong 1680f15f500SNeil Armstrong static const unsigned int uart_tx_b_pins[] = { PIN(GPIODV_24, EE_OFF) }; 1690f15f500SNeil Armstrong static const unsigned int uart_rx_b_pins[] = { PIN(GPIODV_25, EE_OFF) }; 1700f15f500SNeil Armstrong 1710f15f500SNeil Armstrong static const unsigned int uart_tx_c_pins[] = { PIN(GPIOX_8, EE_OFF) }; 1720f15f500SNeil Armstrong static const unsigned int uart_rx_c_pins[] = { PIN(GPIOX_9, EE_OFF) }; 1730f15f500SNeil Armstrong 1740f15f500SNeil Armstrong static const unsigned int i2c_sck_a_pins[] = { PIN(GPIODV_25, EE_OFF) }; 1750f15f500SNeil Armstrong static const unsigned int i2c_sda_a_pins[] = { PIN(GPIODV_24, EE_OFF) }; 1760f15f500SNeil Armstrong 1770f15f500SNeil Armstrong static const unsigned int i2c_sck_b_pins[] = { PIN(GPIODV_27, EE_OFF) }; 1780f15f500SNeil Armstrong static const unsigned int i2c_sda_b_pins[] = { PIN(GPIODV_26, EE_OFF) }; 1790f15f500SNeil Armstrong 1800f15f500SNeil Armstrong static const unsigned int i2c_sck_c_pins[] = { PIN(GPIODV_29, EE_OFF) }; 1810f15f500SNeil Armstrong static const unsigned int i2c_sda_c_pins[] = { PIN(GPIODV_28, EE_OFF) }; 1820f15f500SNeil Armstrong 1830f15f500SNeil Armstrong static const unsigned int eth_mdio_pins[] = { PIN(GPIOZ_0, EE_OFF) }; 1840f15f500SNeil Armstrong static const unsigned int eth_mdc_pins[] = { PIN(GPIOZ_1, EE_OFF) }; 1850f15f500SNeil Armstrong static const unsigned int eth_clk_rx_clk_pins[] = { PIN(GPIOZ_2, EE_OFF) }; 1860f15f500SNeil Armstrong static const unsigned int eth_rx_dv_pins[] = { PIN(GPIOZ_3, EE_OFF) }; 1870f15f500SNeil Armstrong static const unsigned int eth_rxd0_pins[] = { PIN(GPIOZ_4, EE_OFF) }; 1880f15f500SNeil Armstrong static const unsigned int eth_rxd1_pins[] = { PIN(GPIOZ_5, EE_OFF) }; 1890f15f500SNeil Armstrong static const unsigned int eth_rxd2_pins[] = { PIN(GPIOZ_6, EE_OFF) }; 1900f15f500SNeil Armstrong static const unsigned int eth_rxd3_pins[] = { PIN(GPIOZ_7, EE_OFF) }; 1910f15f500SNeil Armstrong static const unsigned int eth_rgmii_tx_clk_pins[] = { PIN(GPIOZ_8, EE_OFF) }; 1920f15f500SNeil Armstrong static const unsigned int eth_tx_en_pins[] = { PIN(GPIOZ_9, EE_OFF) }; 1930f15f500SNeil Armstrong static const unsigned int eth_txd0_pins[] = { PIN(GPIOZ_10, EE_OFF) }; 1940f15f500SNeil Armstrong static const unsigned int eth_txd1_pins[] = { PIN(GPIOZ_11, EE_OFF) }; 1950f15f500SNeil Armstrong static const unsigned int eth_txd2_pins[] = { PIN(GPIOZ_12, EE_OFF) }; 1960f15f500SNeil Armstrong static const unsigned int eth_txd3_pins[] = { PIN(GPIOZ_13, EE_OFF) }; 1970f15f500SNeil Armstrong 198cc97a95fSMartin Blumenstingl static const unsigned int pwm_a_pins[] = { PIN(GPIOX_6, EE_OFF) }; 199cc97a95fSMartin Blumenstingl 200cc97a95fSMartin Blumenstingl static const unsigned int pwm_b_pins[] = { PIN(GPIODV_29, EE_OFF) }; 201cc97a95fSMartin Blumenstingl 202cc97a95fSMartin Blumenstingl static const unsigned int pwm_c_pins[] = { PIN(GPIOZ_15, EE_OFF) }; 203cc97a95fSMartin Blumenstingl 204cc97a95fSMartin Blumenstingl static const unsigned int pwm_d_pins[] = { PIN(GPIODV_28, EE_OFF) }; 205cc97a95fSMartin Blumenstingl 2060f15f500SNeil Armstrong static const unsigned int pwm_e_pins[] = { PIN(GPIOX_16, EE_OFF) }; 2070f15f500SNeil Armstrong 208cc97a95fSMartin Blumenstingl static const unsigned int pwm_f_clk_pins[] = { PIN(GPIOCLK_1, EE_OFF) }; 209cc97a95fSMartin Blumenstingl static const unsigned int pwm_f_x_pins[] = { PIN(GPIOX_7, EE_OFF) }; 210cc97a95fSMartin Blumenstingl 2111fe8d6cbSNeil Armstrong static const unsigned int hdmi_hpd_pins[] = { PIN(GPIOH_0, EE_OFF) }; 2121fe8d6cbSNeil Armstrong static const unsigned int hdmi_sda_pins[] = { PIN(GPIOH_1, EE_OFF) }; 2131fe8d6cbSNeil Armstrong static const unsigned int hdmi_scl_pins[] = { PIN(GPIOH_2, EE_OFF) }; 2141fe8d6cbSNeil Armstrong 2150f15f500SNeil Armstrong static const struct pinctrl_pin_desc meson_gxl_aobus_pins[] = { 2160f15f500SNeil Armstrong MESON_PIN(GPIOAO_0, 0), 2170f15f500SNeil Armstrong MESON_PIN(GPIOAO_1, 0), 2180f15f500SNeil Armstrong MESON_PIN(GPIOAO_2, 0), 2190f15f500SNeil Armstrong MESON_PIN(GPIOAO_3, 0), 2200f15f500SNeil Armstrong MESON_PIN(GPIOAO_4, 0), 2210f15f500SNeil Armstrong MESON_PIN(GPIOAO_5, 0), 2220f15f500SNeil Armstrong MESON_PIN(GPIOAO_6, 0), 2230f15f500SNeil Armstrong MESON_PIN(GPIOAO_7, 0), 2240f15f500SNeil Armstrong MESON_PIN(GPIOAO_8, 0), 2250f15f500SNeil Armstrong MESON_PIN(GPIOAO_9, 0), 2260f15f500SNeil Armstrong }; 2270f15f500SNeil Armstrong 2280f15f500SNeil Armstrong static const unsigned int uart_tx_ao_a_pins[] = { PIN(GPIOAO_0, 0) }; 2290f15f500SNeil Armstrong static const unsigned int uart_rx_ao_a_pins[] = { PIN(GPIOAO_1, 0) }; 2300f15f500SNeil Armstrong static const unsigned int uart_cts_ao_a_pins[] = { PIN(GPIOAO_2, 0) }; 2310f15f500SNeil Armstrong static const unsigned int uart_rts_ao_a_pins[] = { PIN(GPIOAO_3, 0) }; 232b27e3648SMartin Blumenstingl static const unsigned int uart_tx_ao_b_pins[] = { PIN(GPIOAO_4, 0) }; 233b27e3648SMartin Blumenstingl static const unsigned int uart_rx_ao_b_pins[] = { PIN(GPIOAO_5, 0) }; 2340f15f500SNeil Armstrong static const unsigned int uart_cts_ao_b_pins[] = { PIN(GPIOAO_2, 0) }; 2350f15f500SNeil Armstrong static const unsigned int uart_rts_ao_b_pins[] = { PIN(GPIOAO_3, 0) }; 2360f15f500SNeil Armstrong 2370f15f500SNeil Armstrong static const unsigned int remote_input_ao_pins[] = {PIN(GPIOAO_7, 0) }; 2380f15f500SNeil Armstrong 239cc97a95fSMartin Blumenstingl static const unsigned int pwm_ao_a_3_pins[] = { PIN(GPIOAO_3, 0) }; 240cc97a95fSMartin Blumenstingl static const unsigned int pwm_ao_a_8_pins[] = { PIN(GPIOAO_8, 0) }; 241cc97a95fSMartin Blumenstingl 242cff2b010SMartin Blumenstingl static const unsigned int pwm_ao_b_pins[] = { PIN(GPIOAO_9, 0) }; 243cff2b010SMartin Blumenstingl 2440f15f500SNeil Armstrong static struct meson_pmx_group meson_gxl_periphs_groups[] = { 2450f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_0, EE_OFF), 2460f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_1, EE_OFF), 2470f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_2, EE_OFF), 2480f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_3, EE_OFF), 2490f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_4, EE_OFF), 2500f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_5, EE_OFF), 2510f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_6, EE_OFF), 2520f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_7, EE_OFF), 2530f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_8, EE_OFF), 2540f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_9, EE_OFF), 2550f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_10, EE_OFF), 2560f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_11, EE_OFF), 2570f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_12, EE_OFF), 2580f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_13, EE_OFF), 2590f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_14, EE_OFF), 2600f15f500SNeil Armstrong GPIO_GROUP(GPIOZ_15, EE_OFF), 2610f15f500SNeil Armstrong 2620f15f500SNeil Armstrong GPIO_GROUP(GPIOH_0, EE_OFF), 2630f15f500SNeil Armstrong GPIO_GROUP(GPIOH_1, EE_OFF), 2640f15f500SNeil Armstrong GPIO_GROUP(GPIOH_2, EE_OFF), 2650f15f500SNeil Armstrong GPIO_GROUP(GPIOH_3, EE_OFF), 2660f15f500SNeil Armstrong GPIO_GROUP(GPIOH_4, EE_OFF), 2670f15f500SNeil Armstrong GPIO_GROUP(GPIOH_5, EE_OFF), 2680f15f500SNeil Armstrong GPIO_GROUP(GPIOH_6, EE_OFF), 2690f15f500SNeil Armstrong GPIO_GROUP(GPIOH_7, EE_OFF), 2700f15f500SNeil Armstrong GPIO_GROUP(GPIOH_8, EE_OFF), 2710f15f500SNeil Armstrong GPIO_GROUP(GPIOH_9, EE_OFF), 2720f15f500SNeil Armstrong 2730f15f500SNeil Armstrong GPIO_GROUP(BOOT_0, EE_OFF), 2740f15f500SNeil Armstrong GPIO_GROUP(BOOT_1, EE_OFF), 2750f15f500SNeil Armstrong GPIO_GROUP(BOOT_2, EE_OFF), 2760f15f500SNeil Armstrong GPIO_GROUP(BOOT_3, EE_OFF), 2770f15f500SNeil Armstrong GPIO_GROUP(BOOT_4, EE_OFF), 2780f15f500SNeil Armstrong GPIO_GROUP(BOOT_5, EE_OFF), 2790f15f500SNeil Armstrong GPIO_GROUP(BOOT_6, EE_OFF), 2800f15f500SNeil Armstrong GPIO_GROUP(BOOT_7, EE_OFF), 2810f15f500SNeil Armstrong GPIO_GROUP(BOOT_8, EE_OFF), 2820f15f500SNeil Armstrong GPIO_GROUP(BOOT_9, EE_OFF), 2830f15f500SNeil Armstrong GPIO_GROUP(BOOT_10, EE_OFF), 2840f15f500SNeil Armstrong GPIO_GROUP(BOOT_11, EE_OFF), 2850f15f500SNeil Armstrong GPIO_GROUP(BOOT_12, EE_OFF), 2860f15f500SNeil Armstrong GPIO_GROUP(BOOT_13, EE_OFF), 2870f15f500SNeil Armstrong GPIO_GROUP(BOOT_14, EE_OFF), 2880f15f500SNeil Armstrong GPIO_GROUP(BOOT_15, EE_OFF), 2890f15f500SNeil Armstrong 2900f15f500SNeil Armstrong GPIO_GROUP(CARD_0, EE_OFF), 2910f15f500SNeil Armstrong GPIO_GROUP(CARD_1, EE_OFF), 2920f15f500SNeil Armstrong GPIO_GROUP(CARD_2, EE_OFF), 2930f15f500SNeil Armstrong GPIO_GROUP(CARD_3, EE_OFF), 2940f15f500SNeil Armstrong GPIO_GROUP(CARD_4, EE_OFF), 2950f15f500SNeil Armstrong GPIO_GROUP(CARD_5, EE_OFF), 2960f15f500SNeil Armstrong GPIO_GROUP(CARD_6, EE_OFF), 2970f15f500SNeil Armstrong 2980f15f500SNeil Armstrong GPIO_GROUP(GPIODV_0, EE_OFF), 2990f15f500SNeil Armstrong GPIO_GROUP(GPIODV_1, EE_OFF), 3000f15f500SNeil Armstrong GPIO_GROUP(GPIODV_2, EE_OFF), 3010f15f500SNeil Armstrong GPIO_GROUP(GPIODV_3, EE_OFF), 3020f15f500SNeil Armstrong GPIO_GROUP(GPIODV_4, EE_OFF), 3030f15f500SNeil Armstrong GPIO_GROUP(GPIODV_5, EE_OFF), 3040f15f500SNeil Armstrong GPIO_GROUP(GPIODV_6, EE_OFF), 3050f15f500SNeil Armstrong GPIO_GROUP(GPIODV_7, EE_OFF), 3060f15f500SNeil Armstrong GPIO_GROUP(GPIODV_8, EE_OFF), 3070f15f500SNeil Armstrong GPIO_GROUP(GPIODV_9, EE_OFF), 3080f15f500SNeil Armstrong GPIO_GROUP(GPIODV_10, EE_OFF), 3090f15f500SNeil Armstrong GPIO_GROUP(GPIODV_11, EE_OFF), 3100f15f500SNeil Armstrong GPIO_GROUP(GPIODV_12, EE_OFF), 3110f15f500SNeil Armstrong GPIO_GROUP(GPIODV_13, EE_OFF), 3120f15f500SNeil Armstrong GPIO_GROUP(GPIODV_14, EE_OFF), 3130f15f500SNeil Armstrong GPIO_GROUP(GPIODV_15, EE_OFF), 3140f15f500SNeil Armstrong GPIO_GROUP(GPIODV_16, EE_OFF), 3150f15f500SNeil Armstrong GPIO_GROUP(GPIODV_17, EE_OFF), 3160f15f500SNeil Armstrong GPIO_GROUP(GPIODV_19, EE_OFF), 3170f15f500SNeil Armstrong GPIO_GROUP(GPIODV_20, EE_OFF), 3180f15f500SNeil Armstrong GPIO_GROUP(GPIODV_21, EE_OFF), 3190f15f500SNeil Armstrong GPIO_GROUP(GPIODV_22, EE_OFF), 3200f15f500SNeil Armstrong GPIO_GROUP(GPIODV_23, EE_OFF), 3210f15f500SNeil Armstrong GPIO_GROUP(GPIODV_24, EE_OFF), 3220f15f500SNeil Armstrong GPIO_GROUP(GPIODV_25, EE_OFF), 3230f15f500SNeil Armstrong GPIO_GROUP(GPIODV_26, EE_OFF), 3240f15f500SNeil Armstrong GPIO_GROUP(GPIODV_27, EE_OFF), 3250f15f500SNeil Armstrong GPIO_GROUP(GPIODV_28, EE_OFF), 3260f15f500SNeil Armstrong GPIO_GROUP(GPIODV_29, EE_OFF), 3270f15f500SNeil Armstrong 3280f15f500SNeil Armstrong GPIO_GROUP(GPIOX_0, EE_OFF), 3290f15f500SNeil Armstrong GPIO_GROUP(GPIOX_1, EE_OFF), 3300f15f500SNeil Armstrong GPIO_GROUP(GPIOX_2, EE_OFF), 3310f15f500SNeil Armstrong GPIO_GROUP(GPIOX_3, EE_OFF), 3320f15f500SNeil Armstrong GPIO_GROUP(GPIOX_4, EE_OFF), 3330f15f500SNeil Armstrong GPIO_GROUP(GPIOX_5, EE_OFF), 3340f15f500SNeil Armstrong GPIO_GROUP(GPIOX_6, EE_OFF), 3350f15f500SNeil Armstrong GPIO_GROUP(GPIOX_7, EE_OFF), 3360f15f500SNeil Armstrong GPIO_GROUP(GPIOX_8, EE_OFF), 3370f15f500SNeil Armstrong GPIO_GROUP(GPIOX_9, EE_OFF), 3380f15f500SNeil Armstrong GPIO_GROUP(GPIOX_10, EE_OFF), 3390f15f500SNeil Armstrong GPIO_GROUP(GPIOX_11, EE_OFF), 3400f15f500SNeil Armstrong GPIO_GROUP(GPIOX_12, EE_OFF), 3410f15f500SNeil Armstrong GPIO_GROUP(GPIOX_13, EE_OFF), 3420f15f500SNeil Armstrong GPIO_GROUP(GPIOX_14, EE_OFF), 3430f15f500SNeil Armstrong GPIO_GROUP(GPIOX_15, EE_OFF), 3440f15f500SNeil Armstrong GPIO_GROUP(GPIOX_16, EE_OFF), 3450f15f500SNeil Armstrong GPIO_GROUP(GPIOX_17, EE_OFF), 3460f15f500SNeil Armstrong GPIO_GROUP(GPIOX_18, EE_OFF), 3470f15f500SNeil Armstrong 3480f15f500SNeil Armstrong GPIO_GROUP(GPIOCLK_0, EE_OFF), 3490f15f500SNeil Armstrong GPIO_GROUP(GPIOCLK_1, EE_OFF), 3500f15f500SNeil Armstrong 3510f15f500SNeil Armstrong GPIO_GROUP(GPIO_TEST_N, EE_OFF), 3520f15f500SNeil Armstrong 3530f15f500SNeil Armstrong /* Bank X */ 3540f15f500SNeil Armstrong GROUP(sdio_d0, 5, 31), 3550f15f500SNeil Armstrong GROUP(sdio_d1, 5, 30), 3560f15f500SNeil Armstrong GROUP(sdio_d2, 5, 29), 3570f15f500SNeil Armstrong GROUP(sdio_d3, 5, 28), 3580f15f500SNeil Armstrong GROUP(sdio_cmd, 5, 27), 3590f15f500SNeil Armstrong GROUP(sdio_clk, 5, 26), 3600f15f500SNeil Armstrong GROUP(sdio_irq, 5, 24), 3610f15f500SNeil Armstrong GROUP(uart_tx_a, 5, 19), 3620f15f500SNeil Armstrong GROUP(uart_rx_a, 5, 18), 3630f15f500SNeil Armstrong GROUP(uart_cts_a, 5, 17), 3640f15f500SNeil Armstrong GROUP(uart_rts_a, 5, 16), 3650f15f500SNeil Armstrong GROUP(uart_tx_c, 5, 13), 3660f15f500SNeil Armstrong GROUP(uart_rx_c, 5, 12), 367cc97a95fSMartin Blumenstingl GROUP(pwm_a, 5, 25), 3680f15f500SNeil Armstrong GROUP(pwm_e, 5, 15), 369cc97a95fSMartin Blumenstingl GROUP(pwm_f_x, 5, 14), 3700f15f500SNeil Armstrong 3710f15f500SNeil Armstrong /* Bank Z */ 3720f15f500SNeil Armstrong GROUP(eth_mdio, 4, 22), 3730f15f500SNeil Armstrong GROUP(eth_mdc, 4, 23), 3740f15f500SNeil Armstrong GROUP(eth_clk_rx_clk, 4, 21), 3750f15f500SNeil Armstrong GROUP(eth_rx_dv, 4, 20), 3760f15f500SNeil Armstrong GROUP(eth_rxd0, 4, 19), 3770f15f500SNeil Armstrong GROUP(eth_rxd1, 4, 18), 3780f15f500SNeil Armstrong GROUP(eth_rxd2, 4, 17), 3790f15f500SNeil Armstrong GROUP(eth_rxd3, 4, 16), 3800f15f500SNeil Armstrong GROUP(eth_rgmii_tx_clk, 4, 15), 3810f15f500SNeil Armstrong GROUP(eth_tx_en, 4, 14), 3820f15f500SNeil Armstrong GROUP(eth_txd0, 4, 13), 3830f15f500SNeil Armstrong GROUP(eth_txd1, 4, 12), 3840f15f500SNeil Armstrong GROUP(eth_txd2, 4, 11), 3850f15f500SNeil Armstrong GROUP(eth_txd3, 4, 10), 386cc97a95fSMartin Blumenstingl GROUP(pwm_c, 3, 20), 3870f15f500SNeil Armstrong 3881fe8d6cbSNeil Armstrong /* Bank H */ 3891fe8d6cbSNeil Armstrong GROUP(hdmi_hpd, 6, 31), 3901fe8d6cbSNeil Armstrong GROUP(hdmi_sda, 6, 30), 3911fe8d6cbSNeil Armstrong GROUP(hdmi_scl, 6, 29), 3921fe8d6cbSNeil Armstrong 3930f15f500SNeil Armstrong /* Bank DV */ 3940f15f500SNeil Armstrong GROUP(uart_tx_b, 2, 16), 3950f15f500SNeil Armstrong GROUP(uart_rx_b, 2, 15), 3960f15f500SNeil Armstrong GROUP(i2c_sck_a, 1, 15), 3970f15f500SNeil Armstrong GROUP(i2c_sda_a, 1, 14), 3980f15f500SNeil Armstrong GROUP(i2c_sck_b, 1, 13), 3990f15f500SNeil Armstrong GROUP(i2c_sda_b, 1, 12), 4000f15f500SNeil Armstrong GROUP(i2c_sck_c, 1, 11), 4010f15f500SNeil Armstrong GROUP(i2c_sda_c, 1, 10), 402cc97a95fSMartin Blumenstingl GROUP(pwm_b, 2, 11), 403cc97a95fSMartin Blumenstingl GROUP(pwm_d, 2, 12), 4040f15f500SNeil Armstrong 4050f15f500SNeil Armstrong /* Bank BOOT */ 4060f15f500SNeil Armstrong GROUP(emmc_nand_d07, 7, 31), 4070f15f500SNeil Armstrong GROUP(emmc_clk, 7, 30), 4080f15f500SNeil Armstrong GROUP(emmc_cmd, 7, 29), 4090f15f500SNeil Armstrong GROUP(emmc_ds, 7, 28), 4100f15f500SNeil Armstrong GROUP(nand_ce0, 7, 7), 4110f15f500SNeil Armstrong GROUP(nand_ce1, 7, 6), 4120f15f500SNeil Armstrong GROUP(nand_rb0, 7, 5), 4130f15f500SNeil Armstrong GROUP(nand_ale, 7, 4), 4140f15f500SNeil Armstrong GROUP(nand_cle, 7, 3), 4150f15f500SNeil Armstrong GROUP(nand_wen_clk, 7, 2), 4160f15f500SNeil Armstrong GROUP(nand_ren_wr, 7, 1), 4170f15f500SNeil Armstrong GROUP(nand_dqs, 7, 0), 4180f15f500SNeil Armstrong 4190f15f500SNeil Armstrong /* Bank CARD */ 4200f15f500SNeil Armstrong GROUP(sdcard_d1, 6, 5), 4210f15f500SNeil Armstrong GROUP(sdcard_d0, 6, 4), 4220f15f500SNeil Armstrong GROUP(sdcard_d3, 6, 1), 4230f15f500SNeil Armstrong GROUP(sdcard_d2, 6, 0), 4240f15f500SNeil Armstrong GROUP(sdcard_cmd, 6, 2), 4250f15f500SNeil Armstrong GROUP(sdcard_clk, 6, 3), 426cc97a95fSMartin Blumenstingl 427cc97a95fSMartin Blumenstingl /* Bank CLK */ 428cc97a95fSMartin Blumenstingl GROUP(pwm_f_clk, 8, 30), 4290f15f500SNeil Armstrong }; 4300f15f500SNeil Armstrong 4310f15f500SNeil Armstrong static struct meson_pmx_group meson_gxl_aobus_groups[] = { 4320f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_0, 0), 4330f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_1, 0), 4340f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_2, 0), 4350f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_3, 0), 4360f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_4, 0), 4370f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_5, 0), 4380f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_6, 0), 4390f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_7, 0), 4400f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_8, 0), 4410f15f500SNeil Armstrong GPIO_GROUP(GPIOAO_9, 0), 4420f15f500SNeil Armstrong 4430f15f500SNeil Armstrong /* bank AO */ 444b27e3648SMartin Blumenstingl GROUP(uart_tx_ao_b, 0, 24), 4450f15f500SNeil Armstrong GROUP(uart_rx_ao_b, 0, 25), 4460f15f500SNeil Armstrong GROUP(uart_tx_ao_a, 0, 12), 4470f15f500SNeil Armstrong GROUP(uart_rx_ao_a, 0, 11), 4480f15f500SNeil Armstrong GROUP(uart_cts_ao_a, 0, 10), 4490f15f500SNeil Armstrong GROUP(uart_rts_ao_a, 0, 9), 4500f15f500SNeil Armstrong GROUP(uart_cts_ao_b, 0, 8), 4510f15f500SNeil Armstrong GROUP(uart_rts_ao_b, 0, 7), 4520f15f500SNeil Armstrong GROUP(remote_input_ao, 0, 0), 453cc97a95fSMartin Blumenstingl GROUP(pwm_ao_a_3, 0, 22), 454cc97a95fSMartin Blumenstingl GROUP(pwm_ao_a_8, 0, 17), 455cff2b010SMartin Blumenstingl GROUP(pwm_ao_b, 0, 3), 4560f15f500SNeil Armstrong }; 4570f15f500SNeil Armstrong 4580f15f500SNeil Armstrong static const char * const gpio_periphs_groups[] = { 4590f15f500SNeil Armstrong "GPIOZ_0", "GPIOZ_1", "GPIOZ_2", "GPIOZ_3", "GPIOZ_4", 4600f15f500SNeil Armstrong "GPIOZ_5", "GPIOZ_6", "GPIOZ_7", "GPIOZ_8", "GPIOZ_9", 4610f15f500SNeil Armstrong "GPIOZ_10", "GPIOZ_11", "GPIOZ_12", "GPIOZ_13", "GPIOZ_14", 4620f15f500SNeil Armstrong "GPIOZ_15", 4630f15f500SNeil Armstrong 4640f15f500SNeil Armstrong "GPIOH_0", "GPIOH_1", "GPIOH_2", "GPIOH_3", "GPIOH_4", 4650f15f500SNeil Armstrong "GPIOH_5", "GPIOH_6", "GPIOH_7", "GPIOH_8", "GPIOH_9", 4660f15f500SNeil Armstrong 4670f15f500SNeil Armstrong "BOOT_0", "BOOT_1", "BOOT_2", "BOOT_3", "BOOT_4", 4680f15f500SNeil Armstrong "BOOT_5", "BOOT_6", "BOOT_7", "BOOT_8", "BOOT_9", 4690f15f500SNeil Armstrong "BOOT_10", "BOOT_11", "BOOT_12", "BOOT_13", "BOOT_14", 4700f15f500SNeil Armstrong "BOOT_15", 4710f15f500SNeil Armstrong 4720f15f500SNeil Armstrong "CARD_0", "CARD_1", "CARD_2", "CARD_3", "CARD_4", 4730f15f500SNeil Armstrong "CARD_5", "CARD_6", 4740f15f500SNeil Armstrong 4750f15f500SNeil Armstrong "GPIODV_0", "GPIODV_1", "GPIODV_2", "GPIODV_3", "GPIODV_4", 4760f15f500SNeil Armstrong "GPIODV_5", "GPIODV_6", "GPIODV_7", "GPIODV_8", "GPIODV_9", 4770f15f500SNeil Armstrong "GPIODV_10", "GPIODV_11", "GPIODV_12", "GPIODV_13", "GPIODV_14", 4780f15f500SNeil Armstrong "GPIODV_15", "GPIODV_16", "GPIODV_17", "GPIODV_18", "GPIODV_19", 4790f15f500SNeil Armstrong "GPIODV_20", "GPIODV_21", "GPIODV_22", "GPIODV_23", "GPIODV_24", 4800f15f500SNeil Armstrong "GPIODV_25", "GPIODV_26", "GPIODV_27", "GPIODV_28", "GPIODV_29", 4810f15f500SNeil Armstrong 4820f15f500SNeil Armstrong "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4", 4830f15f500SNeil Armstrong "GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9", 4840f15f500SNeil Armstrong "GPIOX_10", "GPIOX_11", "GPIOX_12", "GPIOX_13", "GPIOX_14", 4850f15f500SNeil Armstrong "GPIOX_15", "GPIOX_16", "GPIOX_17", "GPIOX_18", 4860f15f500SNeil Armstrong 4870f15f500SNeil Armstrong "GPIO_TEST_N", 4880f15f500SNeil Armstrong }; 4890f15f500SNeil Armstrong 4900f15f500SNeil Armstrong static const char * const emmc_groups[] = { 4910f15f500SNeil Armstrong "emmc_nand_d07", "emmc_clk", "emmc_cmd", "emmc_ds", 4920f15f500SNeil Armstrong }; 4930f15f500SNeil Armstrong 4940f15f500SNeil Armstrong static const char * const sdcard_groups[] = { 4950f15f500SNeil Armstrong "sdcard_d0", "sdcard_d1", "sdcard_d2", "sdcard_d3", 4960f15f500SNeil Armstrong "sdcard_cmd", "sdcard_clk", 4970f15f500SNeil Armstrong }; 4980f15f500SNeil Armstrong 4990f15f500SNeil Armstrong static const char * const sdio_groups[] = { 5000f15f500SNeil Armstrong "sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3", 5010f15f500SNeil Armstrong "sdio_cmd", "sdio_clk", "sdio_irq", 5020f15f500SNeil Armstrong }; 5030f15f500SNeil Armstrong 5040f15f500SNeil Armstrong static const char * const nand_groups[] = { 5050f15f500SNeil Armstrong "nand_ce0", "nand_ce1", "nand_rb0", "nand_ale", "nand_cle", 5060f15f500SNeil Armstrong "nand_wen_clk", "nand_ren_wr", "nand_dqs", 5070f15f500SNeil Armstrong }; 5080f15f500SNeil Armstrong 5090f15f500SNeil Armstrong static const char * const uart_a_groups[] = { 5100f15f500SNeil Armstrong "uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a", 5110f15f500SNeil Armstrong }; 5120f15f500SNeil Armstrong 5130f15f500SNeil Armstrong static const char * const uart_b_groups[] = { 5140f15f500SNeil Armstrong "uart_tx_b", "uart_rx_b", 5150f15f500SNeil Armstrong }; 5160f15f500SNeil Armstrong 5170f15f500SNeil Armstrong static const char * const uart_c_groups[] = { 5180f15f500SNeil Armstrong "uart_tx_c", "uart_rx_c", 5190f15f500SNeil Armstrong }; 5200f15f500SNeil Armstrong 5210f15f500SNeil Armstrong static const char * const i2c_a_groups[] = { 5220f15f500SNeil Armstrong "i2c_sck_a", "i2c_sda_a", 5230f15f500SNeil Armstrong }; 5240f15f500SNeil Armstrong 5250f15f500SNeil Armstrong static const char * const i2c_b_groups[] = { 5260f15f500SNeil Armstrong "i2c_sck_b", "i2c_sda_b", 5270f15f500SNeil Armstrong }; 5280f15f500SNeil Armstrong 5290f15f500SNeil Armstrong static const char * const i2c_c_groups[] = { 5300f15f500SNeil Armstrong "i2c_sck_c", "i2c_sda_c", 5310f15f500SNeil Armstrong }; 5320f15f500SNeil Armstrong 5330f15f500SNeil Armstrong static const char * const eth_groups[] = { 5340f15f500SNeil Armstrong "eth_mdio", "eth_mdc", "eth_clk_rx_clk", "eth_rx_dv", 5350f15f500SNeil Armstrong "eth_rxd0", "eth_rxd1", "eth_rxd2", "eth_rxd3", 5360f15f500SNeil Armstrong "eth_rgmii_tx_clk", "eth_tx_en", 5370f15f500SNeil Armstrong "eth_txd0", "eth_txd1", "eth_txd2", "eth_txd3", 5380f15f500SNeil Armstrong }; 5390f15f500SNeil Armstrong 540cc97a95fSMartin Blumenstingl static const char * const pwm_a_groups[] = { 541cc97a95fSMartin Blumenstingl "pwm_a", 542cc97a95fSMartin Blumenstingl }; 543cc97a95fSMartin Blumenstingl 544cc97a95fSMartin Blumenstingl static const char * const pwm_b_groups[] = { 545cc97a95fSMartin Blumenstingl "pwm_b", 546cc97a95fSMartin Blumenstingl }; 547cc97a95fSMartin Blumenstingl 548cc97a95fSMartin Blumenstingl static const char * const pwm_c_groups[] = { 549cc97a95fSMartin Blumenstingl "pwm_c", 550cc97a95fSMartin Blumenstingl }; 551cc97a95fSMartin Blumenstingl 552cc97a95fSMartin Blumenstingl static const char * const pwm_d_groups[] = { 553cc97a95fSMartin Blumenstingl "pwm_d", 554cc97a95fSMartin Blumenstingl }; 555cc97a95fSMartin Blumenstingl 5560f15f500SNeil Armstrong static const char * const pwm_e_groups[] = { 5570f15f500SNeil Armstrong "pwm_e", 5580f15f500SNeil Armstrong }; 5590f15f500SNeil Armstrong 560cc97a95fSMartin Blumenstingl static const char * const pwm_f_groups[] = { 561cc97a95fSMartin Blumenstingl "pwm_f_clk", "pwm_f_x", 562cc97a95fSMartin Blumenstingl }; 563cc97a95fSMartin Blumenstingl 5641fe8d6cbSNeil Armstrong static const char * const hdmi_hpd_groups[] = { 5651fe8d6cbSNeil Armstrong "hdmi_hpd", 5661fe8d6cbSNeil Armstrong }; 5671fe8d6cbSNeil Armstrong 5681fe8d6cbSNeil Armstrong static const char * const hdmi_i2c_groups[] = { 5691fe8d6cbSNeil Armstrong "hdmi_sda", "hdmi_scl", 5701fe8d6cbSNeil Armstrong }; 5711fe8d6cbSNeil Armstrong 5720f15f500SNeil Armstrong static const char * const gpio_aobus_groups[] = { 5730f15f500SNeil Armstrong "GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4", 5740f15f500SNeil Armstrong "GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9", 5750f15f500SNeil Armstrong }; 5760f15f500SNeil Armstrong 5770f15f500SNeil Armstrong static const char * const uart_ao_groups[] = { 5780f15f500SNeil Armstrong "uart_tx_ao_a", "uart_rx_ao_a", "uart_cts_ao_a", "uart_rts_ao_a", 5790f15f500SNeil Armstrong }; 5800f15f500SNeil Armstrong 5810f15f500SNeil Armstrong static const char * const uart_ao_b_groups[] = { 5820f15f500SNeil Armstrong "uart_tx_ao_b", "uart_rx_ao_b", "uart_cts_ao_b", "uart_rts_ao_b", 5830f15f500SNeil Armstrong }; 5840f15f500SNeil Armstrong 5850f15f500SNeil Armstrong static const char * const remote_input_ao_groups[] = { 5860f15f500SNeil Armstrong "remote_input_ao", 5870f15f500SNeil Armstrong }; 5880f15f500SNeil Armstrong 589cc97a95fSMartin Blumenstingl static const char * const pwm_ao_a_groups[] = { 590cc97a95fSMartin Blumenstingl "pwm_ao_a_3", "pwm_ao_a_8", 591cc97a95fSMartin Blumenstingl }; 592cc97a95fSMartin Blumenstingl 593cff2b010SMartin Blumenstingl static const char * const pwm_ao_b_groups[] = { 594cff2b010SMartin Blumenstingl "pwm_ao_b", 595cff2b010SMartin Blumenstingl }; 596cff2b010SMartin Blumenstingl 5970f15f500SNeil Armstrong static struct meson_pmx_func meson_gxl_periphs_functions[] = { 5980f15f500SNeil Armstrong FUNCTION(gpio_periphs), 5990f15f500SNeil Armstrong FUNCTION(emmc), 6000f15f500SNeil Armstrong FUNCTION(sdcard), 6010f15f500SNeil Armstrong FUNCTION(sdio), 6020f15f500SNeil Armstrong FUNCTION(nand), 6030f15f500SNeil Armstrong FUNCTION(uart_a), 6040f15f500SNeil Armstrong FUNCTION(uart_b), 6050f15f500SNeil Armstrong FUNCTION(uart_c), 6060f15f500SNeil Armstrong FUNCTION(i2c_a), 6070f15f500SNeil Armstrong FUNCTION(i2c_b), 6080f15f500SNeil Armstrong FUNCTION(i2c_c), 6090f15f500SNeil Armstrong FUNCTION(eth), 610cc97a95fSMartin Blumenstingl FUNCTION(pwm_a), 611cc97a95fSMartin Blumenstingl FUNCTION(pwm_b), 612cc97a95fSMartin Blumenstingl FUNCTION(pwm_c), 613cc97a95fSMartin Blumenstingl FUNCTION(pwm_d), 6140f15f500SNeil Armstrong FUNCTION(pwm_e), 615cc97a95fSMartin Blumenstingl FUNCTION(pwm_f), 6161fe8d6cbSNeil Armstrong FUNCTION(hdmi_hpd), 6171fe8d6cbSNeil Armstrong FUNCTION(hdmi_i2c), 6180f15f500SNeil Armstrong }; 6190f15f500SNeil Armstrong 6200f15f500SNeil Armstrong static struct meson_pmx_func meson_gxl_aobus_functions[] = { 6210f15f500SNeil Armstrong FUNCTION(gpio_aobus), 6220f15f500SNeil Armstrong FUNCTION(uart_ao), 6230f15f500SNeil Armstrong FUNCTION(uart_ao_b), 6240f15f500SNeil Armstrong FUNCTION(remote_input_ao), 625cc97a95fSMartin Blumenstingl FUNCTION(pwm_ao_a), 626cff2b010SMartin Blumenstingl FUNCTION(pwm_ao_b), 6270f15f500SNeil Armstrong }; 6280f15f500SNeil Armstrong 6290f15f500SNeil Armstrong static struct meson_bank meson_gxl_periphs_banks[] = { 6300f15f500SNeil Armstrong /* name first last pullen pull dir out in */ 6310f15f500SNeil Armstrong BANK("X", PIN(GPIOX_0, EE_OFF), PIN(GPIOX_18, EE_OFF), 4, 0, 4, 0, 12, 0, 13, 0, 14, 0), 6320f15f500SNeil Armstrong BANK("DV", PIN(GPIODV_0, EE_OFF), PIN(GPIODV_29, EE_OFF), 0, 0, 0, 0, 0, 0, 1, 0, 2, 0), 6330f15f500SNeil Armstrong BANK("H", PIN(GPIOH_0, EE_OFF), PIN(GPIOH_9, EE_OFF), 1, 20, 1, 20, 3, 20, 4, 20, 5, 20), 6340f15f500SNeil Armstrong BANK("Z", PIN(GPIOZ_0, EE_OFF), PIN(GPIOZ_15, EE_OFF), 3, 0, 3, 0, 9, 0, 10, 0, 11, 0), 6350f15f500SNeil Armstrong BANK("CARD", PIN(CARD_0, EE_OFF), PIN(CARD_6, EE_OFF), 2, 20, 2, 20, 6, 20, 7, 20, 8, 20), 6360f15f500SNeil Armstrong BANK("BOOT", PIN(BOOT_0, EE_OFF), PIN(BOOT_15, EE_OFF), 2, 0, 2, 0, 6, 0, 7, 0, 8, 0), 6370f15f500SNeil Armstrong BANK("CLK", PIN(GPIOCLK_0, EE_OFF), PIN(GPIOCLK_1, EE_OFF), 3, 28, 3, 28, 9, 28, 10, 28, 11, 28), 6380f15f500SNeil Armstrong }; 6390f15f500SNeil Armstrong 6400f15f500SNeil Armstrong static struct meson_bank meson_gxl_aobus_banks[] = { 6410f15f500SNeil Armstrong /* name first last pullen pull dir out in */ 6420f15f500SNeil Armstrong BANK("AO", PIN(GPIOAO_0, 0), PIN(GPIOAO_9, 0), 0, 0, 0, 16, 0, 0, 0, 16, 1, 0), 6430f15f500SNeil Armstrong }; 6440f15f500SNeil Armstrong 6450f15f500SNeil Armstrong struct meson_pinctrl_data meson_gxl_periphs_pinctrl_data = { 6460f15f500SNeil Armstrong .name = "periphs-banks", 6470f15f500SNeil Armstrong .pin_base = 10, 6480f15f500SNeil Armstrong .pins = meson_gxl_periphs_pins, 6490f15f500SNeil Armstrong .groups = meson_gxl_periphs_groups, 6500f15f500SNeil Armstrong .funcs = meson_gxl_periphs_functions, 6510f15f500SNeil Armstrong .banks = meson_gxl_periphs_banks, 6520f15f500SNeil Armstrong .num_pins = ARRAY_SIZE(meson_gxl_periphs_pins), 6530f15f500SNeil Armstrong .num_groups = ARRAY_SIZE(meson_gxl_periphs_groups), 6540f15f500SNeil Armstrong .num_funcs = ARRAY_SIZE(meson_gxl_periphs_functions), 6550f15f500SNeil Armstrong .num_banks = ARRAY_SIZE(meson_gxl_periphs_banks), 6560f15f500SNeil Armstrong }; 6570f15f500SNeil Armstrong 6580f15f500SNeil Armstrong struct meson_pinctrl_data meson_gxl_aobus_pinctrl_data = { 6590f15f500SNeil Armstrong .name = "aobus-banks", 6600f15f500SNeil Armstrong .pin_base = 0, 6610f15f500SNeil Armstrong .pins = meson_gxl_aobus_pins, 6620f15f500SNeil Armstrong .groups = meson_gxl_aobus_groups, 6630f15f500SNeil Armstrong .funcs = meson_gxl_aobus_functions, 6640f15f500SNeil Armstrong .banks = meson_gxl_aobus_banks, 6650f15f500SNeil Armstrong .num_pins = ARRAY_SIZE(meson_gxl_aobus_pins), 6660f15f500SNeil Armstrong .num_groups = ARRAY_SIZE(meson_gxl_aobus_groups), 6670f15f500SNeil Armstrong .num_funcs = ARRAY_SIZE(meson_gxl_aobus_functions), 6680f15f500SNeil Armstrong .num_banks = ARRAY_SIZE(meson_gxl_aobus_banks), 6690f15f500SNeil Armstrong }; 670