1*ea90ca10SHuqiang Qin // SPDX-License-Identifier: (GPL-2.0-only OR MIT) 2*ea90ca10SHuqiang Qin /* 3*ea90ca10SHuqiang Qin * Pin controller and GPIO driver for Amlogic C3 SoC. 4*ea90ca10SHuqiang Qin * 5*ea90ca10SHuqiang Qin * Copyright (c) 2021 Amlogic, Inc. All rights reserved. 6*ea90ca10SHuqiang Qin * Author: Huqiang Qin <huqiang.qin@amlogic.com> 7*ea90ca10SHuqiang Qin */ 8*ea90ca10SHuqiang Qin 9*ea90ca10SHuqiang Qin #include <dt-bindings/gpio/amlogic-c3-gpio.h> 10*ea90ca10SHuqiang Qin #include "pinctrl-meson.h" 11*ea90ca10SHuqiang Qin #include "pinctrl-meson-axg-pmx.h" 12*ea90ca10SHuqiang Qin 13*ea90ca10SHuqiang Qin static const struct pinctrl_pin_desc c3_periphs_pins[] = { 14*ea90ca10SHuqiang Qin MESON_PIN(GPIOE_0), 15*ea90ca10SHuqiang Qin MESON_PIN(GPIOE_1), 16*ea90ca10SHuqiang Qin MESON_PIN(GPIOE_2), 17*ea90ca10SHuqiang Qin MESON_PIN(GPIOE_3), 18*ea90ca10SHuqiang Qin MESON_PIN(GPIOE_4), 19*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_0), 20*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_1), 21*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_2), 22*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_3), 23*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_4), 24*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_5), 25*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_6), 26*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_7), 27*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_8), 28*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_9), 29*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_10), 30*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_11), 31*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_12), 32*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_13), 33*ea90ca10SHuqiang Qin MESON_PIN(GPIOB_14), 34*ea90ca10SHuqiang Qin MESON_PIN(GPIOC_0), 35*ea90ca10SHuqiang Qin MESON_PIN(GPIOC_1), 36*ea90ca10SHuqiang Qin MESON_PIN(GPIOC_2), 37*ea90ca10SHuqiang Qin MESON_PIN(GPIOC_3), 38*ea90ca10SHuqiang Qin MESON_PIN(GPIOC_4), 39*ea90ca10SHuqiang Qin MESON_PIN(GPIOC_5), 40*ea90ca10SHuqiang Qin MESON_PIN(GPIOC_6), 41*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_0), 42*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_1), 43*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_2), 44*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_3), 45*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_4), 46*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_5), 47*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_6), 48*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_7), 49*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_8), 50*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_9), 51*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_10), 52*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_11), 53*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_12), 54*ea90ca10SHuqiang Qin MESON_PIN(GPIOX_13), 55*ea90ca10SHuqiang Qin MESON_PIN(GPIOD_0), 56*ea90ca10SHuqiang Qin MESON_PIN(GPIOD_1), 57*ea90ca10SHuqiang Qin MESON_PIN(GPIOD_2), 58*ea90ca10SHuqiang Qin MESON_PIN(GPIOD_3), 59*ea90ca10SHuqiang Qin MESON_PIN(GPIOD_4), 60*ea90ca10SHuqiang Qin MESON_PIN(GPIOD_5), 61*ea90ca10SHuqiang Qin MESON_PIN(GPIOD_6), 62*ea90ca10SHuqiang Qin MESON_PIN(GPIOA_0), 63*ea90ca10SHuqiang Qin MESON_PIN(GPIOA_1), 64*ea90ca10SHuqiang Qin MESON_PIN(GPIOA_2), 65*ea90ca10SHuqiang Qin MESON_PIN(GPIOA_3), 66*ea90ca10SHuqiang Qin MESON_PIN(GPIOA_4), 67*ea90ca10SHuqiang Qin MESON_PIN(GPIOA_5), 68*ea90ca10SHuqiang Qin MESON_PIN(GPIO_TEST_N), 69*ea90ca10SHuqiang Qin }; 70*ea90ca10SHuqiang Qin 71*ea90ca10SHuqiang Qin /* Bank E func1 */ 72*ea90ca10SHuqiang Qin static const unsigned int pwm_a_pins[] = { GPIOE_0 }; 73*ea90ca10SHuqiang Qin static const unsigned int pwm_b_pins[] = { GPIOE_1 }; 74*ea90ca10SHuqiang Qin static const unsigned int i2c2_sda_pins[] = { GPIOE_2 }; 75*ea90ca10SHuqiang Qin static const unsigned int i2c2_scl_pins[] = { GPIOE_3 }; 76*ea90ca10SHuqiang Qin static const unsigned int gen_clk_e_pins[] = { GPIOE_4 }; 77*ea90ca10SHuqiang Qin 78*ea90ca10SHuqiang Qin /* Bank E func2 */ 79*ea90ca10SHuqiang Qin static const unsigned int i2c0_sda_e_pins[] = { GPIOE_0 }; 80*ea90ca10SHuqiang Qin static const unsigned int i2c0_scl_e_pins[] = { GPIOE_1 }; 81*ea90ca10SHuqiang Qin static const unsigned int clk_32k_in_pins[] = { GPIOE_4 }; 82*ea90ca10SHuqiang Qin 83*ea90ca10SHuqiang Qin /* Bank E func3 */ 84*ea90ca10SHuqiang Qin static const unsigned int i2c_slave_scl_pins[] = { GPIOE_0 }; 85*ea90ca10SHuqiang Qin static const unsigned int i2c_slave_sda_pins[] = { GPIOE_1 }; 86*ea90ca10SHuqiang Qin static const unsigned int clk12_24_e_pins[] = { GPIOE_4 }; 87*ea90ca10SHuqiang Qin 88*ea90ca10SHuqiang Qin /* Bank B func1 */ 89*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d0_pins[] = { GPIOB_0 }; 90*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d1_pins[] = { GPIOB_1 }; 91*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d2_pins[] = { GPIOB_2 }; 92*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d3_pins[] = { GPIOB_3 }; 93*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d4_pins[] = { GPIOB_4 }; 94*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d5_pins[] = { GPIOB_5 }; 95*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d6_pins[] = { GPIOB_6 }; 96*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_d7_pins[] = { GPIOB_7 }; 97*ea90ca10SHuqiang Qin static const unsigned int emmc_clk_pins[] = { GPIOB_8 }; 98*ea90ca10SHuqiang Qin static const unsigned int emmc_rst_pins[] = { GPIOB_9 }; 99*ea90ca10SHuqiang Qin static const unsigned int emmc_cmd_pins[] = { GPIOB_10 }; 100*ea90ca10SHuqiang Qin static const unsigned int emmc_nand_ds_pins[] = { GPIOB_11 }; 101*ea90ca10SHuqiang Qin 102*ea90ca10SHuqiang Qin /* Bank B func2 */ 103*ea90ca10SHuqiang Qin static const unsigned int nand_wen_clk_pins[] = { GPIOB_8 }; 104*ea90ca10SHuqiang Qin static const unsigned int nand_ale_pins[] = { GPIOB_9 }; 105*ea90ca10SHuqiang Qin static const unsigned int nand_ren_wr_pins[] = { GPIOB_10 }; 106*ea90ca10SHuqiang Qin static const unsigned int nand_cle_pins[] = { GPIOB_11 }; 107*ea90ca10SHuqiang Qin static const unsigned int nand_ce0_pins[] = { GPIOB_12 }; 108*ea90ca10SHuqiang Qin 109*ea90ca10SHuqiang Qin /* Bank B func3 */ 110*ea90ca10SHuqiang Qin static const unsigned int pwm_g_b_pins[] = { GPIOB_0 }; 111*ea90ca10SHuqiang Qin static const unsigned int pwm_h_b_pins[] = { GPIOB_1 }; 112*ea90ca10SHuqiang Qin static const unsigned int pwm_i_b_pins[] = { GPIOB_2 }; 113*ea90ca10SHuqiang Qin static const unsigned int spif_hold_pins[] = { GPIOB_3 }; 114*ea90ca10SHuqiang Qin static const unsigned int spif_mo_pins[] = { GPIOB_4 }; 115*ea90ca10SHuqiang Qin static const unsigned int spif_mi_pins[] = { GPIOB_5 }; 116*ea90ca10SHuqiang Qin static const unsigned int spif_clk_pins[] = { GPIOB_6 }; 117*ea90ca10SHuqiang Qin static const unsigned int spif_wp_pins[] = { GPIOB_7 }; 118*ea90ca10SHuqiang Qin static const unsigned int pwm_j_b_pins[] = { GPIOB_8 }; 119*ea90ca10SHuqiang Qin static const unsigned int pwm_k_b_pins[] = { GPIOB_9 }; 120*ea90ca10SHuqiang Qin static const unsigned int pwm_l_b_pins[] = { GPIOB_10 }; 121*ea90ca10SHuqiang Qin static const unsigned int pwm_m_b_pins[] = { GPIOB_11 }; 122*ea90ca10SHuqiang Qin static const unsigned int pwm_n_b_pins[] = { GPIOB_12 }; 123*ea90ca10SHuqiang Qin static const unsigned int spif_cs_pins[] = { GPIOB_13 }; 124*ea90ca10SHuqiang Qin static const unsigned int spif_clk_loop_pins[] = { GPIOB_14 }; 125*ea90ca10SHuqiang Qin 126*ea90ca10SHuqiang Qin /* Bank B func4 */ 127*ea90ca10SHuqiang Qin static const unsigned int lcd_d0_pins[] = { GPIOB_0 }; 128*ea90ca10SHuqiang Qin static const unsigned int lcd_d1_pins[] = { GPIOB_1 }; 129*ea90ca10SHuqiang Qin static const unsigned int lcd_d2_pins[] = { GPIOB_2 }; 130*ea90ca10SHuqiang Qin static const unsigned int lcd_d3_pins[] = { GPIOB_8 }; 131*ea90ca10SHuqiang Qin static const unsigned int lcd_d4_pins[] = { GPIOB_9 }; 132*ea90ca10SHuqiang Qin static const unsigned int lcd_d5_pins[] = { GPIOB_10 }; 133*ea90ca10SHuqiang Qin static const unsigned int lcd_d6_pins[] = { GPIOB_11 }; 134*ea90ca10SHuqiang Qin static const unsigned int lcd_d7_pins[] = { GPIOB_12 }; 135*ea90ca10SHuqiang Qin 136*ea90ca10SHuqiang Qin /* Bank B func5 */ 137*ea90ca10SHuqiang Qin static const unsigned int spi_a_mosi_b_pins[] = { GPIOB_0 }; 138*ea90ca10SHuqiang Qin static const unsigned int spi_a_miso_b_pins[] = { GPIOB_1 }; 139*ea90ca10SHuqiang Qin static const unsigned int spi_a_clk_b_pins[] = { GPIOB_2 }; 140*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss0_b_pins[] = { GPIOB_8 }; 141*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss1_b_pins[] = { GPIOB_9 }; 142*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss2_b_pins[] = { GPIOB_10 }; 143*ea90ca10SHuqiang Qin static const unsigned int i2c1_sda_b_pins[] = { GPIOB_11 }; 144*ea90ca10SHuqiang Qin static const unsigned int i2c1_scl_b_pins[] = { GPIOB_12 }; 145*ea90ca10SHuqiang Qin 146*ea90ca10SHuqiang Qin /* Bank B func6 */ 147*ea90ca10SHuqiang Qin static const unsigned int uart_a_tx_b_pins[] = { GPIOB_0 }; 148*ea90ca10SHuqiang Qin static const unsigned int uart_a_rx_b_pins[] = { GPIOB_1 }; 149*ea90ca10SHuqiang Qin static const unsigned int uart_a_cts_b_pins[] = { GPIOB_2 }; 150*ea90ca10SHuqiang Qin static const unsigned int uart_a_rts_b_pins[] = { GPIOB_8 }; 151*ea90ca10SHuqiang Qin static const unsigned int uart_d_tx_b_pins[] = { GPIOB_9 }; 152*ea90ca10SHuqiang Qin static const unsigned int uart_d_rx_b_pins[] = { GPIOB_10 }; 153*ea90ca10SHuqiang Qin static const unsigned int pdm_dclk_b_pins[] = { GPIOB_11 }; 154*ea90ca10SHuqiang Qin static const unsigned int pdm_din0_b_pins[] = { GPIOB_12 }; 155*ea90ca10SHuqiang Qin 156*ea90ca10SHuqiang Qin /* Bank C func1 */ 157*ea90ca10SHuqiang Qin static const unsigned int sdcard_d0_pins[] = { GPIOC_0 }; 158*ea90ca10SHuqiang Qin static const unsigned int sdcard_d1_pins[] = { GPIOC_1 }; 159*ea90ca10SHuqiang Qin static const unsigned int sdcard_d2_pins[] = { GPIOC_2 }; 160*ea90ca10SHuqiang Qin static const unsigned int sdcard_d3_pins[] = { GPIOC_3 }; 161*ea90ca10SHuqiang Qin static const unsigned int sdcard_clk_pins[] = { GPIOC_4 }; 162*ea90ca10SHuqiang Qin static const unsigned int sdcard_cmd_pins[] = { GPIOC_5 }; 163*ea90ca10SHuqiang Qin static const unsigned int sdcard_cd_pins[] = { GPIOC_6 }; 164*ea90ca10SHuqiang Qin 165*ea90ca10SHuqiang Qin /* Bank C func2 */ 166*ea90ca10SHuqiang Qin static const unsigned int jtag_b_tdo_pins[] = { GPIOC_0 }; 167*ea90ca10SHuqiang Qin static const unsigned int jtag_b_tdi_pins[] = { GPIOC_1 }; 168*ea90ca10SHuqiang Qin static const unsigned int uart_b_rx_c_pins[] = { GPIOC_2 }; 169*ea90ca10SHuqiang Qin static const unsigned int uart_b_tx_c_pins[] = { GPIOC_3 }; 170*ea90ca10SHuqiang Qin static const unsigned int jtag_b_clk_pins[] = { GPIOC_4 }; 171*ea90ca10SHuqiang Qin static const unsigned int jtag_b_tms_pins[] = { GPIOC_5 }; 172*ea90ca10SHuqiang Qin static const unsigned int gen_clk_c_pins[] = { GPIOC_6 }; 173*ea90ca10SHuqiang Qin 174*ea90ca10SHuqiang Qin /* Bank C func3 */ 175*ea90ca10SHuqiang Qin static const unsigned int tdm_d3_pins[] = { GPIOC_0 }; 176*ea90ca10SHuqiang Qin static const unsigned int tdm_d2_pins[] = { GPIOC_1 }; 177*ea90ca10SHuqiang Qin static const unsigned int mclk_1_pins[] = { GPIOC_2 }; 178*ea90ca10SHuqiang Qin static const unsigned int tdm_sclk1_pins[] = { GPIOC_3 }; 179*ea90ca10SHuqiang Qin static const unsigned int tdm_fs1_pins[] = { GPIOC_4 }; 180*ea90ca10SHuqiang Qin static const unsigned int pdm_dclk_c_pins[] = { GPIOC_5 }; 181*ea90ca10SHuqiang Qin static const unsigned int pdm_din0_c_pins[] = { GPIOC_6 }; 182*ea90ca10SHuqiang Qin 183*ea90ca10SHuqiang Qin /* Bank C func4 */ 184*ea90ca10SHuqiang Qin static const unsigned int spi_a_mosi_c_pins[] = { GPIOC_0 }; 185*ea90ca10SHuqiang Qin static const unsigned int spi_a_miso_c_pins[] = { GPIOC_1 }; 186*ea90ca10SHuqiang Qin static const unsigned int spi_a_clk_c_pins[] = { GPIOC_2 }; 187*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss0_c_pins[] = { GPIOC_3 }; 188*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss1_c_pins[] = { GPIOC_4 }; 189*ea90ca10SHuqiang Qin 190*ea90ca10SHuqiang Qin /* Bank C func5 */ 191*ea90ca10SHuqiang Qin static const unsigned int pwm_g_c_pins[] = { GPIOC_0 }; 192*ea90ca10SHuqiang Qin static const unsigned int pwm_h_c_pins[] = { GPIOC_1 }; 193*ea90ca10SHuqiang Qin static const unsigned int pwm_i_c_pins[] = { GPIOC_2 }; 194*ea90ca10SHuqiang Qin static const unsigned int pwm_j_c_pins[] = { GPIOC_3 }; 195*ea90ca10SHuqiang Qin static const unsigned int pwm_k_c_pins[] = { GPIOC_4 }; 196*ea90ca10SHuqiang Qin static const unsigned int pwm_l_c_pins[] = { GPIOC_5 }; 197*ea90ca10SHuqiang Qin static const unsigned int pwm_m_c_pins[] = { GPIOC_6 }; 198*ea90ca10SHuqiang Qin 199*ea90ca10SHuqiang Qin /* Bank C func6 */ 200*ea90ca10SHuqiang Qin static const unsigned int uart_a_rx_c_pins[] = { GPIOC_0 }; 201*ea90ca10SHuqiang Qin static const unsigned int uart_a_tx_c_pins[] = { GPIOC_1 }; 202*ea90ca10SHuqiang Qin static const unsigned int uart_c_rx_c_pins[] = { GPIOC_2 }; 203*ea90ca10SHuqiang Qin static const unsigned int uart_c_tx_c_pins[] = { GPIOC_3 }; 204*ea90ca10SHuqiang Qin static const unsigned int i2c3_sda_c_pins[] = { GPIOC_4 }; 205*ea90ca10SHuqiang Qin static const unsigned int i2c3_scl_c_pins[] = { GPIOC_5 }; 206*ea90ca10SHuqiang Qin static const unsigned int clk12_24_c_pins[] = { GPIOC_6 }; 207*ea90ca10SHuqiang Qin 208*ea90ca10SHuqiang Qin /* Bank X func1 */ 209*ea90ca10SHuqiang Qin static const unsigned int sdio_d0_pins[] = { GPIOX_0 }; 210*ea90ca10SHuqiang Qin static const unsigned int sdio_d1_pins[] = { GPIOX_1 }; 211*ea90ca10SHuqiang Qin static const unsigned int sdio_d2_pins[] = { GPIOX_2 }; 212*ea90ca10SHuqiang Qin static const unsigned int sdio_d3_pins[] = { GPIOX_3 }; 213*ea90ca10SHuqiang Qin static const unsigned int sdio_clk_pins[] = { GPIOX_4 }; 214*ea90ca10SHuqiang Qin static const unsigned int sdio_cmd_pins[] = { GPIOX_5 }; 215*ea90ca10SHuqiang Qin static const unsigned int clk12_24_x_pins[] = { GPIOX_6 }; 216*ea90ca10SHuqiang Qin static const unsigned int uart_e_tx_x_pins[] = { GPIOX_7 }; 217*ea90ca10SHuqiang Qin static const unsigned int uart_e_rx_x_pins[] = { GPIOX_8 }; 218*ea90ca10SHuqiang Qin static const unsigned int uart_e_cts_pins[] = { GPIOX_9 }; 219*ea90ca10SHuqiang Qin static const unsigned int uart_e_rts_pins[] = { GPIOX_10 }; 220*ea90ca10SHuqiang Qin static const unsigned int pwm_e_pins[] = { GPIOX_11 }; 221*ea90ca10SHuqiang Qin static const unsigned int pwm_j_x12_pins[] = { GPIOX_12 }; 222*ea90ca10SHuqiang Qin static const unsigned int pwm_k_x13_pins[] = { GPIOX_13 }; 223*ea90ca10SHuqiang Qin 224*ea90ca10SHuqiang Qin /* Bank X func2 */ 225*ea90ca10SHuqiang Qin static const unsigned int spi_a_mosi_x_pins[] = { GPIOX_0 }; 226*ea90ca10SHuqiang Qin static const unsigned int spi_a_miso_x_pins[] = { GPIOX_1 }; 227*ea90ca10SHuqiang Qin static const unsigned int spi_a_clk_x_pins[] = { GPIOX_2 }; 228*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss0_x_pins[] = { GPIOX_3 }; 229*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss1_x_pins[] = { GPIOX_4 }; 230*ea90ca10SHuqiang Qin static const unsigned int spi_a_ss2_x_pins[] = { GPIOX_5 }; 231*ea90ca10SHuqiang Qin static const unsigned int spi_b_ss2_x6_pins[] = { GPIOX_6 }; 232*ea90ca10SHuqiang Qin static const unsigned int spi_b_miso_x_pins[] = { GPIOX_7 }; 233*ea90ca10SHuqiang Qin static const unsigned int spi_b_clk_x_pins[] = { GPIOX_8 }; 234*ea90ca10SHuqiang Qin static const unsigned int spi_b_mosi_x_pins[] = { GPIOX_9 }; 235*ea90ca10SHuqiang Qin static const unsigned int spi_b_ss0_x_pins[] = { GPIOX_10 }; 236*ea90ca10SHuqiang Qin static const unsigned int spi_b_ss1_x_pins[] = { GPIOX_11 }; 237*ea90ca10SHuqiang Qin static const unsigned int spi_b_ss2_x12_pins[] = { GPIOX_12 }; 238*ea90ca10SHuqiang Qin static const unsigned int gen_clk_x_pins[] = { GPIOX_13 }; 239*ea90ca10SHuqiang Qin 240*ea90ca10SHuqiang Qin /* Bank X func3 */ 241*ea90ca10SHuqiang Qin static const unsigned int tdm_d1_x_pins[] = { GPIOX_0 }; 242*ea90ca10SHuqiang Qin static const unsigned int tdm_d0_x_pins[] = { GPIOX_1 }; 243*ea90ca10SHuqiang Qin static const unsigned int mclk_0_x_pins[] = { GPIOX_2 }; 244*ea90ca10SHuqiang Qin static const unsigned int tdm_sclk0_x_pins[] = { GPIOX_3 }; 245*ea90ca10SHuqiang Qin static const unsigned int tdm_fs0_x_pins[] = { GPIOX_4 }; 246*ea90ca10SHuqiang Qin static const unsigned int pdm_dclk_x5_pins[] = { GPIOX_5 }; 247*ea90ca10SHuqiang Qin static const unsigned int pdm_din0_x6_pins[] = { GPIOX_6 }; 248*ea90ca10SHuqiang Qin static const unsigned int pdm_din0_x9_pins[] = { GPIOX_9 }; 249*ea90ca10SHuqiang Qin static const unsigned int pdm_dclk_x10_pins[] = { GPIOX_10 }; 250*ea90ca10SHuqiang Qin static const unsigned int clk12_24_x13_pins[] = { GPIOX_13 }; 251*ea90ca10SHuqiang Qin 252*ea90ca10SHuqiang Qin /* Bank X func4 */ 253*ea90ca10SHuqiang Qin static const unsigned int lcd_d8_pins[] = { GPIOX_0 }; 254*ea90ca10SHuqiang Qin static const unsigned int lcd_d9_pins[] = { GPIOX_1 }; 255*ea90ca10SHuqiang Qin static const unsigned int lcd_d10_pins[] = { GPIOX_2 }; 256*ea90ca10SHuqiang Qin static const unsigned int lcd_d11_pins[] = { GPIOX_3 }; 257*ea90ca10SHuqiang Qin static const unsigned int lcd_d12_pins[] = { GPIOX_4 }; 258*ea90ca10SHuqiang Qin static const unsigned int lcd_d13_pins[] = { GPIOX_5 }; 259*ea90ca10SHuqiang Qin static const unsigned int lcd_d14_pins[] = { GPIOX_6 }; 260*ea90ca10SHuqiang Qin static const unsigned int lcd_d15_pins[] = { GPIOX_7 }; 261*ea90ca10SHuqiang Qin static const unsigned int lcd_vs_pins[] = { GPIOX_8 }; 262*ea90ca10SHuqiang Qin static const unsigned int lcd_hs_pins[] = { GPIOX_9 }; 263*ea90ca10SHuqiang Qin static const unsigned int lcd_den_pins[] = { GPIOX_10 }; 264*ea90ca10SHuqiang Qin static const unsigned int lcd_d16_pins[] = { GPIOX_11 }; 265*ea90ca10SHuqiang Qin static const unsigned int lcd_clk_x_pins[] = { GPIOX_12 }; 266*ea90ca10SHuqiang Qin static const unsigned int lcd_d17_pins[] = { GPIOX_13 }; 267*ea90ca10SHuqiang Qin 268*ea90ca10SHuqiang Qin /* Bank X func5 */ 269*ea90ca10SHuqiang Qin static const unsigned int pwm_g_x0_pins[] = { GPIOX_0 }; 270*ea90ca10SHuqiang Qin static const unsigned int pwm_h_x1_pins[] = { GPIOX_1 }; 271*ea90ca10SHuqiang Qin static const unsigned int pwm_i_x2_pins[] = { GPIOX_2 }; 272*ea90ca10SHuqiang Qin static const unsigned int pwm_j_x3_pins[] = { GPIOX_3 }; 273*ea90ca10SHuqiang Qin static const unsigned int pwm_k_x4_pins[] = { GPIOX_4 }; 274*ea90ca10SHuqiang Qin static const unsigned int pwm_l_x_pins[] = { GPIOX_5 }; 275*ea90ca10SHuqiang Qin static const unsigned int pwm_m_x_pins[] = { GPIOX_6 }; 276*ea90ca10SHuqiang Qin static const unsigned int pwm_n_x_pins[] = { GPIOX_7 }; 277*ea90ca10SHuqiang Qin static const unsigned int pwm_g_x8_pins[] = { GPIOX_8 }; 278*ea90ca10SHuqiang Qin static const unsigned int pwm_h_x9_pins[] = { GPIOX_9 }; 279*ea90ca10SHuqiang Qin static const unsigned int pwm_i_x10_pins[] = { GPIOX_10 }; 280*ea90ca10SHuqiang Qin static const unsigned int clk12_24_x11_pins[] = { GPIOX_11 }; 281*ea90ca10SHuqiang Qin 282*ea90ca10SHuqiang Qin /* Bank X func6 */ 283*ea90ca10SHuqiang Qin static const unsigned int uart_a_rx_x_pins[] = { GPIOX_0 }; 284*ea90ca10SHuqiang Qin static const unsigned int uart_a_tx_x_pins[] = { GPIOX_1 }; 285*ea90ca10SHuqiang Qin static const unsigned int uart_c_rx_x_pins[] = { GPIOX_2 }; 286*ea90ca10SHuqiang Qin static const unsigned int uart_c_tx_x_pins[] = { GPIOX_3 }; 287*ea90ca10SHuqiang Qin static const unsigned int i2c3_sda_x_pins[] = { GPIOX_4 }; 288*ea90ca10SHuqiang Qin static const unsigned int i2c3_scl_x_pins[] = { GPIOX_5 }; 289*ea90ca10SHuqiang Qin static const unsigned int i2c1_sda_x_pins[] = { GPIOX_7 }; 290*ea90ca10SHuqiang Qin static const unsigned int i2c1_scl_x_pins[] = { GPIOX_8 }; 291*ea90ca10SHuqiang Qin static const unsigned int uart_d_tx_x_pins[] = { GPIOX_9 }; 292*ea90ca10SHuqiang Qin static const unsigned int uart_d_rx_x_pins[] = { GPIOX_10 }; 293*ea90ca10SHuqiang Qin 294*ea90ca10SHuqiang Qin /* Bank D func1 */ 295*ea90ca10SHuqiang Qin static const unsigned int pwm_g_d_pins[] = { GPIOD_0 }; 296*ea90ca10SHuqiang Qin static const unsigned int pwm_h_d_pins[] = { GPIOD_1 }; 297*ea90ca10SHuqiang Qin static const unsigned int eth_led_act_pins[] = { GPIOD_2 }; 298*ea90ca10SHuqiang Qin static const unsigned int eth_led_link_pins[] = { GPIOD_3 }; 299*ea90ca10SHuqiang Qin static const unsigned int pwm_d_pins[] = { GPIOD_4 }; 300*ea90ca10SHuqiang Qin static const unsigned int pwm_f_pins[] = { GPIOD_5 }; 301*ea90ca10SHuqiang Qin static const unsigned int pwm_k_d_pins[] = { GPIOD_6 }; 302*ea90ca10SHuqiang Qin 303*ea90ca10SHuqiang Qin /* Bank D func2 */ 304*ea90ca10SHuqiang Qin static const unsigned int uart_a_tx_d_pins[] = { GPIOD_0 }; 305*ea90ca10SHuqiang Qin static const unsigned int uart_a_rx_d_pins[] = { GPIOD_1 }; 306*ea90ca10SHuqiang Qin static const unsigned int spi_b_miso_d_pins[] = { GPIOD_2 }; 307*ea90ca10SHuqiang Qin static const unsigned int spi_b_clk_d_pins[] = { GPIOD_3 }; 308*ea90ca10SHuqiang Qin static const unsigned int spi_b_mosi_d_pins[] = { GPIOD_4 }; 309*ea90ca10SHuqiang Qin static const unsigned int spi_b_ss0_d_pins[] = { GPIOD_5 }; 310*ea90ca10SHuqiang Qin static const unsigned int spi_b_ss1_d_pins[] = { GPIOD_6 }; 311*ea90ca10SHuqiang Qin 312*ea90ca10SHuqiang Qin /* Bank D func3 */ 313*ea90ca10SHuqiang Qin static const unsigned int i2c0_sda_d_pins[] = { GPIOD_0 }; 314*ea90ca10SHuqiang Qin static const unsigned int i2c0_scl_d_pins[] = { GPIOD_1 }; 315*ea90ca10SHuqiang Qin static const unsigned int i2c1_sda_d_pins[] = { GPIOD_2 }; 316*ea90ca10SHuqiang Qin static const unsigned int i2c1_scl_d_pins[] = { GPIOD_3 }; 317*ea90ca10SHuqiang Qin static const unsigned int pdm_dclk_d_pins[] = { GPIOD_4 }; 318*ea90ca10SHuqiang Qin static const unsigned int pdm_din0_d_pins[] = { GPIOD_5 }; 319*ea90ca10SHuqiang Qin static const unsigned int ir_in_d6_pins[] = { GPIOD_6 }; 320*ea90ca10SHuqiang Qin 321*ea90ca10SHuqiang Qin /* Bank D func4 */ 322*ea90ca10SHuqiang Qin static const unsigned int ir_in_d0_pins[] = { GPIOD_0 }; 323*ea90ca10SHuqiang Qin static const unsigned int ir_out_pins[] = { GPIOD_1 }; 324*ea90ca10SHuqiang Qin static const unsigned int pwm_i_d_pins[] = { GPIOD_2 }; 325*ea90ca10SHuqiang Qin static const unsigned int pwm_j_d_pins[] = { GPIOD_3 }; 326*ea90ca10SHuqiang Qin static const unsigned int i2c3_sda_d_pins[] = { GPIOD_4 }; 327*ea90ca10SHuqiang Qin static const unsigned int i2c3_scl_d_pins[] = { GPIOD_5 }; 328*ea90ca10SHuqiang Qin 329*ea90ca10SHuqiang Qin /* Bank D func5 */ 330*ea90ca10SHuqiang Qin static const unsigned int tdm_fs0_d_pins[] = { GPIOD_2 }; 331*ea90ca10SHuqiang Qin static const unsigned int tdm_sclk0_d_pins[] = { GPIOD_3 }; 332*ea90ca10SHuqiang Qin static const unsigned int mclk_0_d_pins[] = { GPIOD_4 }; 333*ea90ca10SHuqiang Qin static const unsigned int tdm_d1_d_pins[] = { GPIOD_5 }; 334*ea90ca10SHuqiang Qin static const unsigned int tdm_d0_d_pins[] = { GPIOD_6 }; 335*ea90ca10SHuqiang Qin 336*ea90ca10SHuqiang Qin /* Bank D func6 */ 337*ea90ca10SHuqiang Qin static const unsigned int uart_d_tx_d_pins[] = { GPIOD_0 }; 338*ea90ca10SHuqiang Qin static const unsigned int uart_d_rx_d_pins[] = { GPIOD_1 }; 339*ea90ca10SHuqiang Qin static const unsigned int uart_c_tx_d_pins[] = { GPIOD_2 }; 340*ea90ca10SHuqiang Qin static const unsigned int uart_c_rx_d_pins[] = { GPIOD_3 }; 341*ea90ca10SHuqiang Qin 342*ea90ca10SHuqiang Qin /* Bank A func1 */ 343*ea90ca10SHuqiang Qin static const unsigned int uart_b_tx_a_pins[] = { GPIOA_0 }; 344*ea90ca10SHuqiang Qin static const unsigned int uart_b_rx_a_pins[] = { GPIOA_1 }; 345*ea90ca10SHuqiang Qin static const unsigned int pwm_c_pins[] = { GPIOA_2 }; 346*ea90ca10SHuqiang Qin static const unsigned int pwm_l_a_pins[] = { GPIOA_3 }; 347*ea90ca10SHuqiang Qin static const unsigned int i2c1_sda_a_pins[] = { GPIOA_4 }; 348*ea90ca10SHuqiang Qin static const unsigned int i2c1_scl_a_pins[] = { GPIOA_5 }; 349*ea90ca10SHuqiang Qin 350*ea90ca10SHuqiang Qin /* Bank A func2 */ 351*ea90ca10SHuqiang Qin static const unsigned int pwm_c_hiz_pins[] = { GPIOA_2 }; 352*ea90ca10SHuqiang Qin static const unsigned int gen_clk_a_pins[] = { GPIOA_3 }; 353*ea90ca10SHuqiang Qin static const unsigned int pdm_dclk_z_pins[] = { GPIOA_4 }; 354*ea90ca10SHuqiang Qin static const unsigned int pdm_din0_a_pins[] = { GPIOA_5 }; 355*ea90ca10SHuqiang Qin 356*ea90ca10SHuqiang Qin /* Bank A func3 */ 357*ea90ca10SHuqiang Qin static const unsigned int jtag_a_clk_pins[] = { GPIOA_2 }; 358*ea90ca10SHuqiang Qin static const unsigned int jtag_a_tms_pins[] = { GPIOA_3 }; 359*ea90ca10SHuqiang Qin static const unsigned int jtag_a_tdi_pins[] = { GPIOA_4 }; 360*ea90ca10SHuqiang Qin static const unsigned int jtag_a_tdo_pins[] = { GPIOA_5 }; 361*ea90ca10SHuqiang Qin 362*ea90ca10SHuqiang Qin /* Bank A func4 */ 363*ea90ca10SHuqiang Qin static const unsigned int lcd_clk_a_pins[] = { GPIOA_3 }; 364*ea90ca10SHuqiang Qin static const unsigned int uart_f_tx_a_pins[] = { GPIOA_4 }; 365*ea90ca10SHuqiang Qin static const unsigned int uart_f_rx_a_pins[] = { GPIOA_5 }; 366*ea90ca10SHuqiang Qin 367*ea90ca10SHuqiang Qin /* Bank A func5 */ 368*ea90ca10SHuqiang Qin static const unsigned int uart_e_tx_a_pins[] = { GPIOA_2 }; 369*ea90ca10SHuqiang Qin static const unsigned int uart_e_rx_a_pins[] = { GPIOA_3 }; 370*ea90ca10SHuqiang Qin static const unsigned int pwm_m_a_pins[] = { GPIOA_4 }; 371*ea90ca10SHuqiang Qin static const unsigned int pwm_n_a_pins[] = { GPIOA_5 }; 372*ea90ca10SHuqiang Qin 373*ea90ca10SHuqiang Qin /* Bank A func6 */ 374*ea90ca10SHuqiang Qin static const unsigned int spi_a_mosi_a_pins[] = { GPIOA_3 }; 375*ea90ca10SHuqiang Qin static const unsigned int gen_clk_a4_pins[] = { GPIOA_4 }; 376*ea90ca10SHuqiang Qin static const unsigned int clk12_24_a_pins[] = { GPIOA_5 }; 377*ea90ca10SHuqiang Qin 378*ea90ca10SHuqiang Qin static struct meson_pmx_group c3_periphs_groups[] = { 379*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOE_0), 380*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOE_1), 381*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOE_2), 382*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOE_3), 383*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOE_4), 384*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_0), 385*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_1), 386*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_2), 387*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_3), 388*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_4), 389*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_5), 390*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_6), 391*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_7), 392*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_8), 393*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_9), 394*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_10), 395*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_11), 396*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_12), 397*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_13), 398*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOB_14), 399*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOC_0), 400*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOC_1), 401*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOC_2), 402*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOC_3), 403*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOC_4), 404*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOC_5), 405*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOC_6), 406*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_0), 407*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_1), 408*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_2), 409*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_3), 410*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_4), 411*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_5), 412*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_6), 413*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_7), 414*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_8), 415*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_9), 416*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_10), 417*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_11), 418*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_12), 419*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOX_13), 420*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOD_0), 421*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOD_1), 422*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOD_2), 423*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOD_3), 424*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOD_4), 425*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOD_5), 426*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOD_6), 427*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOA_0), 428*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOA_1), 429*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOA_2), 430*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOA_3), 431*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOA_4), 432*ea90ca10SHuqiang Qin GPIO_GROUP(GPIOA_5), 433*ea90ca10SHuqiang Qin GPIO_GROUP(GPIO_TEST_N), 434*ea90ca10SHuqiang Qin 435*ea90ca10SHuqiang Qin /* Bank E func1 */ 436*ea90ca10SHuqiang Qin GROUP(pwm_a, 1), 437*ea90ca10SHuqiang Qin GROUP(pwm_b, 1), 438*ea90ca10SHuqiang Qin GROUP(i2c2_sda, 1), 439*ea90ca10SHuqiang Qin GROUP(i2c2_scl, 1), 440*ea90ca10SHuqiang Qin GROUP(gen_clk_e, 1), 441*ea90ca10SHuqiang Qin 442*ea90ca10SHuqiang Qin /* Bank E func2 */ 443*ea90ca10SHuqiang Qin GROUP(i2c0_sda_e, 2), 444*ea90ca10SHuqiang Qin GROUP(i2c0_scl_e, 2), 445*ea90ca10SHuqiang Qin GROUP(clk_32k_in, 2), 446*ea90ca10SHuqiang Qin 447*ea90ca10SHuqiang Qin /* Bank E func3 */ 448*ea90ca10SHuqiang Qin GROUP(i2c_slave_scl, 3), 449*ea90ca10SHuqiang Qin GROUP(i2c_slave_sda, 3), 450*ea90ca10SHuqiang Qin GROUP(clk12_24_e, 3), 451*ea90ca10SHuqiang Qin 452*ea90ca10SHuqiang Qin /* Bank B func1 */ 453*ea90ca10SHuqiang Qin GROUP(emmc_nand_d0, 1), 454*ea90ca10SHuqiang Qin GROUP(emmc_nand_d1, 1), 455*ea90ca10SHuqiang Qin GROUP(emmc_nand_d2, 1), 456*ea90ca10SHuqiang Qin GROUP(emmc_nand_d3, 1), 457*ea90ca10SHuqiang Qin GROUP(emmc_nand_d4, 1), 458*ea90ca10SHuqiang Qin GROUP(emmc_nand_d5, 1), 459*ea90ca10SHuqiang Qin GROUP(emmc_nand_d6, 1), 460*ea90ca10SHuqiang Qin GROUP(emmc_nand_d7, 1), 461*ea90ca10SHuqiang Qin GROUP(emmc_clk, 1), 462*ea90ca10SHuqiang Qin GROUP(emmc_rst, 1), 463*ea90ca10SHuqiang Qin GROUP(emmc_cmd, 1), 464*ea90ca10SHuqiang Qin GROUP(emmc_nand_ds, 1), 465*ea90ca10SHuqiang Qin 466*ea90ca10SHuqiang Qin /* Bank B func2 */ 467*ea90ca10SHuqiang Qin GROUP(nand_wen_clk, 2), 468*ea90ca10SHuqiang Qin GROUP(nand_ale, 2), 469*ea90ca10SHuqiang Qin GROUP(nand_ren_wr, 2), 470*ea90ca10SHuqiang Qin GROUP(nand_cle, 2), 471*ea90ca10SHuqiang Qin GROUP(nand_ce0, 2), 472*ea90ca10SHuqiang Qin 473*ea90ca10SHuqiang Qin /* Bank B func3 */ 474*ea90ca10SHuqiang Qin GROUP(pwm_g_b, 3), 475*ea90ca10SHuqiang Qin GROUP(pwm_h_b, 3), 476*ea90ca10SHuqiang Qin GROUP(pwm_i_b, 3), 477*ea90ca10SHuqiang Qin GROUP(spif_hold, 3), 478*ea90ca10SHuqiang Qin GROUP(spif_mo, 3), 479*ea90ca10SHuqiang Qin GROUP(spif_mi, 3), 480*ea90ca10SHuqiang Qin GROUP(spif_clk, 3), 481*ea90ca10SHuqiang Qin GROUP(spif_wp, 3), 482*ea90ca10SHuqiang Qin GROUP(pwm_j_b, 3), 483*ea90ca10SHuqiang Qin GROUP(pwm_k_b, 3), 484*ea90ca10SHuqiang Qin GROUP(pwm_l_b, 3), 485*ea90ca10SHuqiang Qin GROUP(pwm_m_b, 3), 486*ea90ca10SHuqiang Qin GROUP(pwm_n_b, 3), 487*ea90ca10SHuqiang Qin GROUP(spif_cs, 3), 488*ea90ca10SHuqiang Qin GROUP(spif_clk_loop, 3), 489*ea90ca10SHuqiang Qin 490*ea90ca10SHuqiang Qin /* Bank B func4 */ 491*ea90ca10SHuqiang Qin GROUP(lcd_d0, 4), 492*ea90ca10SHuqiang Qin GROUP(lcd_d1, 4), 493*ea90ca10SHuqiang Qin GROUP(lcd_d2, 4), 494*ea90ca10SHuqiang Qin GROUP(lcd_d3, 4), 495*ea90ca10SHuqiang Qin GROUP(lcd_d4, 4), 496*ea90ca10SHuqiang Qin GROUP(lcd_d5, 4), 497*ea90ca10SHuqiang Qin GROUP(lcd_d6, 4), 498*ea90ca10SHuqiang Qin GROUP(lcd_d7, 4), 499*ea90ca10SHuqiang Qin 500*ea90ca10SHuqiang Qin /* Bank B func5 */ 501*ea90ca10SHuqiang Qin GROUP(spi_a_mosi_b, 5), 502*ea90ca10SHuqiang Qin GROUP(spi_a_miso_b, 5), 503*ea90ca10SHuqiang Qin GROUP(spi_a_clk_b, 5), 504*ea90ca10SHuqiang Qin GROUP(spi_a_ss0_b, 5), 505*ea90ca10SHuqiang Qin GROUP(spi_a_ss1_b, 5), 506*ea90ca10SHuqiang Qin GROUP(spi_a_ss2_b, 5), 507*ea90ca10SHuqiang Qin GROUP(i2c1_sda_b, 5), 508*ea90ca10SHuqiang Qin GROUP(i2c1_scl_b, 5), 509*ea90ca10SHuqiang Qin 510*ea90ca10SHuqiang Qin /* Bank B func6 */ 511*ea90ca10SHuqiang Qin GROUP(uart_a_tx_b, 6), 512*ea90ca10SHuqiang Qin GROUP(uart_a_rx_b, 6), 513*ea90ca10SHuqiang Qin GROUP(uart_a_cts_b, 6), 514*ea90ca10SHuqiang Qin GROUP(uart_a_rts_b, 6), 515*ea90ca10SHuqiang Qin GROUP(uart_d_tx_b, 6), 516*ea90ca10SHuqiang Qin GROUP(uart_d_rx_b, 6), 517*ea90ca10SHuqiang Qin GROUP(pdm_dclk_b, 6), 518*ea90ca10SHuqiang Qin GROUP(pdm_din0_b, 6), 519*ea90ca10SHuqiang Qin 520*ea90ca10SHuqiang Qin /* Bank C func1 */ 521*ea90ca10SHuqiang Qin GROUP(sdcard_d0, 1), 522*ea90ca10SHuqiang Qin GROUP(sdcard_d1, 1), 523*ea90ca10SHuqiang Qin GROUP(sdcard_d2, 1), 524*ea90ca10SHuqiang Qin GROUP(sdcard_d3, 1), 525*ea90ca10SHuqiang Qin GROUP(sdcard_clk, 1), 526*ea90ca10SHuqiang Qin GROUP(sdcard_cmd, 1), 527*ea90ca10SHuqiang Qin GROUP(sdcard_cd, 1), 528*ea90ca10SHuqiang Qin 529*ea90ca10SHuqiang Qin /* Bank C func2 */ 530*ea90ca10SHuqiang Qin GROUP(jtag_b_tdo, 2), 531*ea90ca10SHuqiang Qin GROUP(jtag_b_tdi, 2), 532*ea90ca10SHuqiang Qin GROUP(uart_b_rx_c, 2), 533*ea90ca10SHuqiang Qin GROUP(uart_b_tx_c, 2), 534*ea90ca10SHuqiang Qin GROUP(jtag_b_clk, 2), 535*ea90ca10SHuqiang Qin GROUP(jtag_b_tms, 2), 536*ea90ca10SHuqiang Qin GROUP(gen_clk_c, 2), 537*ea90ca10SHuqiang Qin 538*ea90ca10SHuqiang Qin /* Bank C func3 */ 539*ea90ca10SHuqiang Qin GROUP(tdm_d3, 3), 540*ea90ca10SHuqiang Qin GROUP(tdm_d2, 3), 541*ea90ca10SHuqiang Qin GROUP(mclk_1, 3), 542*ea90ca10SHuqiang Qin GROUP(tdm_sclk1, 3), 543*ea90ca10SHuqiang Qin GROUP(tdm_fs1, 3), 544*ea90ca10SHuqiang Qin GROUP(pdm_dclk_c, 3), 545*ea90ca10SHuqiang Qin GROUP(pdm_din0_c, 3), 546*ea90ca10SHuqiang Qin 547*ea90ca10SHuqiang Qin /* Bank C func4 */ 548*ea90ca10SHuqiang Qin GROUP(spi_a_mosi_c, 4), 549*ea90ca10SHuqiang Qin GROUP(spi_a_miso_c, 4), 550*ea90ca10SHuqiang Qin GROUP(spi_a_clk_c, 4), 551*ea90ca10SHuqiang Qin GROUP(spi_a_ss0_c, 4), 552*ea90ca10SHuqiang Qin GROUP(spi_a_ss1_c, 4), 553*ea90ca10SHuqiang Qin 554*ea90ca10SHuqiang Qin /* Bank C func5 */ 555*ea90ca10SHuqiang Qin GROUP(pwm_g_c, 5), 556*ea90ca10SHuqiang Qin GROUP(pwm_h_c, 5), 557*ea90ca10SHuqiang Qin GROUP(pwm_i_c, 5), 558*ea90ca10SHuqiang Qin GROUP(pwm_j_c, 5), 559*ea90ca10SHuqiang Qin GROUP(pwm_k_c, 5), 560*ea90ca10SHuqiang Qin GROUP(pwm_l_c, 5), 561*ea90ca10SHuqiang Qin GROUP(pwm_m_c, 5), 562*ea90ca10SHuqiang Qin 563*ea90ca10SHuqiang Qin /* Bank C func6 */ 564*ea90ca10SHuqiang Qin GROUP(uart_a_rx_c, 6), 565*ea90ca10SHuqiang Qin GROUP(uart_a_tx_c, 6), 566*ea90ca10SHuqiang Qin GROUP(uart_c_rx_c, 6), 567*ea90ca10SHuqiang Qin GROUP(uart_c_tx_c, 6), 568*ea90ca10SHuqiang Qin GROUP(i2c3_sda_c, 6), 569*ea90ca10SHuqiang Qin GROUP(i2c3_scl_c, 6), 570*ea90ca10SHuqiang Qin GROUP(clk12_24_c, 6), 571*ea90ca10SHuqiang Qin 572*ea90ca10SHuqiang Qin /* Bank X func1 */ 573*ea90ca10SHuqiang Qin GROUP(sdio_d0, 1), 574*ea90ca10SHuqiang Qin GROUP(sdio_d1, 1), 575*ea90ca10SHuqiang Qin GROUP(sdio_d2, 1), 576*ea90ca10SHuqiang Qin GROUP(sdio_d3, 1), 577*ea90ca10SHuqiang Qin GROUP(sdio_clk, 1), 578*ea90ca10SHuqiang Qin GROUP(sdio_cmd, 1), 579*ea90ca10SHuqiang Qin GROUP(clk12_24_x, 1), 580*ea90ca10SHuqiang Qin GROUP(uart_e_tx_x, 1), 581*ea90ca10SHuqiang Qin GROUP(uart_e_rx_x, 1), 582*ea90ca10SHuqiang Qin GROUP(uart_e_cts, 1), 583*ea90ca10SHuqiang Qin GROUP(uart_e_rts, 1), 584*ea90ca10SHuqiang Qin GROUP(pwm_e, 1), 585*ea90ca10SHuqiang Qin GROUP(pwm_j_x12, 1), 586*ea90ca10SHuqiang Qin GROUP(pwm_k_x13, 1), 587*ea90ca10SHuqiang Qin 588*ea90ca10SHuqiang Qin /* Bank X func2 */ 589*ea90ca10SHuqiang Qin GROUP(spi_a_mosi_x, 2), 590*ea90ca10SHuqiang Qin GROUP(spi_a_miso_x, 2), 591*ea90ca10SHuqiang Qin GROUP(spi_a_clk_x, 2), 592*ea90ca10SHuqiang Qin GROUP(spi_a_ss0_x, 2), 593*ea90ca10SHuqiang Qin GROUP(spi_a_ss1_x, 2), 594*ea90ca10SHuqiang Qin GROUP(spi_a_ss2_x, 2), 595*ea90ca10SHuqiang Qin GROUP(spi_b_ss2_x6, 2), 596*ea90ca10SHuqiang Qin GROUP(spi_b_miso_x, 2), 597*ea90ca10SHuqiang Qin GROUP(spi_b_clk_x, 2), 598*ea90ca10SHuqiang Qin GROUP(spi_b_mosi_x, 2), 599*ea90ca10SHuqiang Qin GROUP(spi_b_ss0_x, 2), 600*ea90ca10SHuqiang Qin GROUP(spi_b_ss1_x, 2), 601*ea90ca10SHuqiang Qin GROUP(spi_b_ss2_x12, 2), 602*ea90ca10SHuqiang Qin GROUP(gen_clk_x, 2), 603*ea90ca10SHuqiang Qin 604*ea90ca10SHuqiang Qin /* Bank X func3 */ 605*ea90ca10SHuqiang Qin GROUP(tdm_d1_x, 3), 606*ea90ca10SHuqiang Qin GROUP(tdm_d0_x, 3), 607*ea90ca10SHuqiang Qin GROUP(mclk_0_x, 3), 608*ea90ca10SHuqiang Qin GROUP(tdm_sclk0_x, 3), 609*ea90ca10SHuqiang Qin GROUP(tdm_fs0_x, 3), 610*ea90ca10SHuqiang Qin GROUP(pdm_dclk_x5, 3), 611*ea90ca10SHuqiang Qin GROUP(pdm_din0_x6, 3), 612*ea90ca10SHuqiang Qin GROUP(pdm_din0_x9, 3), 613*ea90ca10SHuqiang Qin GROUP(pdm_dclk_x10, 3), 614*ea90ca10SHuqiang Qin GROUP(clk12_24_x13, 3), 615*ea90ca10SHuqiang Qin 616*ea90ca10SHuqiang Qin /* Bank X func4 */ 617*ea90ca10SHuqiang Qin GROUP(lcd_d8, 4), 618*ea90ca10SHuqiang Qin GROUP(lcd_d9, 4), 619*ea90ca10SHuqiang Qin GROUP(lcd_d10, 4), 620*ea90ca10SHuqiang Qin GROUP(lcd_d11, 4), 621*ea90ca10SHuqiang Qin GROUP(lcd_d12, 4), 622*ea90ca10SHuqiang Qin GROUP(lcd_d13, 4), 623*ea90ca10SHuqiang Qin GROUP(lcd_d14, 4), 624*ea90ca10SHuqiang Qin GROUP(lcd_d15, 4), 625*ea90ca10SHuqiang Qin GROUP(lcd_vs, 4), 626*ea90ca10SHuqiang Qin GROUP(lcd_hs, 4), 627*ea90ca10SHuqiang Qin GROUP(lcd_den, 4), 628*ea90ca10SHuqiang Qin GROUP(lcd_d16, 4), 629*ea90ca10SHuqiang Qin GROUP(lcd_clk_x, 4), 630*ea90ca10SHuqiang Qin GROUP(lcd_d17, 4), 631*ea90ca10SHuqiang Qin 632*ea90ca10SHuqiang Qin /* Bank X func5 */ 633*ea90ca10SHuqiang Qin GROUP(pwm_g_x0, 5), 634*ea90ca10SHuqiang Qin GROUP(pwm_h_x1, 5), 635*ea90ca10SHuqiang Qin GROUP(pwm_i_x2, 5), 636*ea90ca10SHuqiang Qin GROUP(pwm_j_x3, 5), 637*ea90ca10SHuqiang Qin GROUP(pwm_k_x4, 5), 638*ea90ca10SHuqiang Qin GROUP(pwm_l_x, 5), 639*ea90ca10SHuqiang Qin GROUP(pwm_m_x, 5), 640*ea90ca10SHuqiang Qin GROUP(pwm_n_x, 5), 641*ea90ca10SHuqiang Qin GROUP(pwm_g_x8, 5), 642*ea90ca10SHuqiang Qin GROUP(pwm_h_x9, 5), 643*ea90ca10SHuqiang Qin GROUP(pwm_i_x10, 5), 644*ea90ca10SHuqiang Qin GROUP(clk12_24_x11, 5), 645*ea90ca10SHuqiang Qin 646*ea90ca10SHuqiang Qin /* Bank X func6 */ 647*ea90ca10SHuqiang Qin GROUP(uart_a_rx_x, 6), 648*ea90ca10SHuqiang Qin GROUP(uart_a_tx_x, 6), 649*ea90ca10SHuqiang Qin GROUP(uart_c_rx_x, 6), 650*ea90ca10SHuqiang Qin GROUP(uart_c_tx_x, 6), 651*ea90ca10SHuqiang Qin GROUP(i2c3_sda_x, 6), 652*ea90ca10SHuqiang Qin GROUP(i2c3_scl_x, 6), 653*ea90ca10SHuqiang Qin GROUP(i2c1_sda_x, 6), 654*ea90ca10SHuqiang Qin GROUP(i2c1_scl_x, 6), 655*ea90ca10SHuqiang Qin GROUP(uart_d_tx_x, 6), 656*ea90ca10SHuqiang Qin GROUP(uart_d_rx_x, 6), 657*ea90ca10SHuqiang Qin 658*ea90ca10SHuqiang Qin /* Bank D func1 */ 659*ea90ca10SHuqiang Qin GROUP(pwm_g_d, 1), 660*ea90ca10SHuqiang Qin GROUP(pwm_h_d, 1), 661*ea90ca10SHuqiang Qin GROUP(eth_led_act, 1), 662*ea90ca10SHuqiang Qin GROUP(eth_led_link, 1), 663*ea90ca10SHuqiang Qin GROUP(pwm_d, 1), 664*ea90ca10SHuqiang Qin GROUP(pwm_f, 1), 665*ea90ca10SHuqiang Qin GROUP(pwm_k_d, 1), 666*ea90ca10SHuqiang Qin 667*ea90ca10SHuqiang Qin /* Bank D func2 */ 668*ea90ca10SHuqiang Qin GROUP(uart_a_tx_d, 2), 669*ea90ca10SHuqiang Qin GROUP(uart_a_rx_d, 2), 670*ea90ca10SHuqiang Qin GROUP(spi_b_miso_d, 2), 671*ea90ca10SHuqiang Qin GROUP(spi_b_clk_d, 2), 672*ea90ca10SHuqiang Qin GROUP(spi_b_mosi_d, 2), 673*ea90ca10SHuqiang Qin GROUP(spi_b_ss0_d, 2), 674*ea90ca10SHuqiang Qin GROUP(spi_b_ss1_d, 2), 675*ea90ca10SHuqiang Qin 676*ea90ca10SHuqiang Qin /* Bank D func3 */ 677*ea90ca10SHuqiang Qin GROUP(i2c0_sda_d, 3), 678*ea90ca10SHuqiang Qin GROUP(i2c0_scl_d, 3), 679*ea90ca10SHuqiang Qin GROUP(i2c1_sda_d, 3), 680*ea90ca10SHuqiang Qin GROUP(i2c1_scl_d, 3), 681*ea90ca10SHuqiang Qin GROUP(pdm_dclk_d, 3), 682*ea90ca10SHuqiang Qin GROUP(pdm_din0_d, 3), 683*ea90ca10SHuqiang Qin GROUP(ir_in_d6, 3), 684*ea90ca10SHuqiang Qin 685*ea90ca10SHuqiang Qin /* Bank D func4 */ 686*ea90ca10SHuqiang Qin GROUP(ir_in_d0, 4), 687*ea90ca10SHuqiang Qin GROUP(ir_out, 4), 688*ea90ca10SHuqiang Qin GROUP(pwm_i_d, 4), 689*ea90ca10SHuqiang Qin GROUP(pwm_j_d, 4), 690*ea90ca10SHuqiang Qin GROUP(i2c3_sda_d, 4), 691*ea90ca10SHuqiang Qin GROUP(i2c3_scl_d, 4), 692*ea90ca10SHuqiang Qin 693*ea90ca10SHuqiang Qin /* Bank D func5 */ 694*ea90ca10SHuqiang Qin GROUP(tdm_fs0_d, 5), 695*ea90ca10SHuqiang Qin GROUP(tdm_sclk0_d, 5), 696*ea90ca10SHuqiang Qin GROUP(mclk_0_d, 5), 697*ea90ca10SHuqiang Qin GROUP(tdm_d1_d, 5), 698*ea90ca10SHuqiang Qin GROUP(tdm_d0_d, 5), 699*ea90ca10SHuqiang Qin 700*ea90ca10SHuqiang Qin /* Bank D func6 */ 701*ea90ca10SHuqiang Qin GROUP(uart_d_tx_d, 6), 702*ea90ca10SHuqiang Qin GROUP(uart_d_rx_d, 6), 703*ea90ca10SHuqiang Qin GROUP(uart_c_tx_d, 6), 704*ea90ca10SHuqiang Qin GROUP(uart_c_rx_d, 6), 705*ea90ca10SHuqiang Qin 706*ea90ca10SHuqiang Qin /* Bank A func1 */ 707*ea90ca10SHuqiang Qin GROUP(uart_b_tx_a, 1), 708*ea90ca10SHuqiang Qin GROUP(uart_b_rx_a, 1), 709*ea90ca10SHuqiang Qin GROUP(pwm_c, 1), 710*ea90ca10SHuqiang Qin GROUP(pwm_l_a, 1), 711*ea90ca10SHuqiang Qin GROUP(i2c1_sda_a, 1), 712*ea90ca10SHuqiang Qin GROUP(i2c1_scl_a, 1), 713*ea90ca10SHuqiang Qin 714*ea90ca10SHuqiang Qin /* Bank A func2 */ 715*ea90ca10SHuqiang Qin GROUP(pwm_c_hiz, 2), 716*ea90ca10SHuqiang Qin GROUP(gen_clk_a, 2), 717*ea90ca10SHuqiang Qin GROUP(pdm_dclk_z, 2), 718*ea90ca10SHuqiang Qin GROUP(pdm_din0_a, 2), 719*ea90ca10SHuqiang Qin 720*ea90ca10SHuqiang Qin /* Bank A func3 */ 721*ea90ca10SHuqiang Qin GROUP(jtag_a_clk, 3), 722*ea90ca10SHuqiang Qin GROUP(jtag_a_tms, 3), 723*ea90ca10SHuqiang Qin GROUP(jtag_a_tdi, 3), 724*ea90ca10SHuqiang Qin GROUP(jtag_a_tdo, 3), 725*ea90ca10SHuqiang Qin 726*ea90ca10SHuqiang Qin /* Bank A func4 */ 727*ea90ca10SHuqiang Qin GROUP(lcd_clk_a, 4), 728*ea90ca10SHuqiang Qin GROUP(uart_f_tx_a, 4), 729*ea90ca10SHuqiang Qin GROUP(uart_f_rx_a, 4), 730*ea90ca10SHuqiang Qin 731*ea90ca10SHuqiang Qin /* Bank A func5 */ 732*ea90ca10SHuqiang Qin GROUP(uart_e_tx_a, 5), 733*ea90ca10SHuqiang Qin GROUP(uart_e_rx_a, 5), 734*ea90ca10SHuqiang Qin GROUP(pwm_m_a, 5), 735*ea90ca10SHuqiang Qin GROUP(pwm_n_a, 5), 736*ea90ca10SHuqiang Qin 737*ea90ca10SHuqiang Qin /* Bank A func6 */ 738*ea90ca10SHuqiang Qin GROUP(spi_a_mosi_a, 6), 739*ea90ca10SHuqiang Qin GROUP(gen_clk_a4, 6), 740*ea90ca10SHuqiang Qin GROUP(clk12_24_a, 6), 741*ea90ca10SHuqiang Qin }; 742*ea90ca10SHuqiang Qin 743*ea90ca10SHuqiang Qin static const char * const gpio_periphs_groups[] = { 744*ea90ca10SHuqiang Qin "GPIO_TEST_N", 745*ea90ca10SHuqiang Qin 746*ea90ca10SHuqiang Qin "GPIOE_0", "GPIOE_1", "GPIOE_2", "GPIOE_3", "GPIOE_4", 747*ea90ca10SHuqiang Qin 748*ea90ca10SHuqiang Qin "GPIOB_0", "GPIOB_1", "GPIOB_2", "GPIOB_3", "GPIOB_4", 749*ea90ca10SHuqiang Qin "GPIOB_5", "GPIOB_6", "GPIOB_7", "GPIOB_8", "GPIOB_9", 750*ea90ca10SHuqiang Qin "GPIOB_10", "GPIOB_11", "GPIOB_12", "GPIOB_13", 751*ea90ca10SHuqiang Qin "GPIOB_14", 752*ea90ca10SHuqiang Qin 753*ea90ca10SHuqiang Qin "GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4", 754*ea90ca10SHuqiang Qin "GPIOC_5", "GPIOC_6", 755*ea90ca10SHuqiang Qin 756*ea90ca10SHuqiang Qin "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4", 757*ea90ca10SHuqiang Qin "GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9", 758*ea90ca10SHuqiang Qin "GPIOX_10", "GPIOX_11", "GPIOX_12", "GPIOX_13", 759*ea90ca10SHuqiang Qin 760*ea90ca10SHuqiang Qin "GPIOD_0", "GPIOD_1", "GPIOD_2", "GPIOD_3", "GPIOD_4", 761*ea90ca10SHuqiang Qin "GPIOD_5", "GPIOD_6", 762*ea90ca10SHuqiang Qin 763*ea90ca10SHuqiang Qin "GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4", 764*ea90ca10SHuqiang Qin "GPIOA_5", 765*ea90ca10SHuqiang Qin }; 766*ea90ca10SHuqiang Qin 767*ea90ca10SHuqiang Qin static const char * const uart_a_groups[] = { 768*ea90ca10SHuqiang Qin "uart_a_tx_b", "uart_a_rx_b", "uart_a_cts_b", "uart_a_rts_b", 769*ea90ca10SHuqiang Qin "uart_a_rx_c", "uart_a_tx_c", "uart_a_rx_x", "uart_a_tx_x", 770*ea90ca10SHuqiang Qin "uart_a_tx_d", "uart_a_rx_d", 771*ea90ca10SHuqiang Qin }; 772*ea90ca10SHuqiang Qin 773*ea90ca10SHuqiang Qin static const char * const uart_b_groups[] = { 774*ea90ca10SHuqiang Qin "uart_b_rx_c", "uart_b_tx_c", "uart_b_tx_a", "uart_b_rx_a", 775*ea90ca10SHuqiang Qin }; 776*ea90ca10SHuqiang Qin 777*ea90ca10SHuqiang Qin static const char * const uart_c_groups[] = { 778*ea90ca10SHuqiang Qin "uart_c_rx_c", "uart_c_tx_c", 779*ea90ca10SHuqiang Qin "uart_c_rx_x", "uart_c_tx_x", 780*ea90ca10SHuqiang Qin "uart_c_tx_d", "uart_c_rx_d", 781*ea90ca10SHuqiang Qin }; 782*ea90ca10SHuqiang Qin 783*ea90ca10SHuqiang Qin static const char * const uart_d_groups[] = { 784*ea90ca10SHuqiang Qin "uart_d_tx_b", "uart_d_rx_b", "uart_d_tx_d", "uart_d_rx_d", 785*ea90ca10SHuqiang Qin "uart_d_rx_x", "uart_d_tx_x", 786*ea90ca10SHuqiang Qin }; 787*ea90ca10SHuqiang Qin 788*ea90ca10SHuqiang Qin static const char * const uart_e_groups[] = { 789*ea90ca10SHuqiang Qin "uart_e_cts", "uart_e_tx_x", "uart_e_rx_x", "uart_e_rts", 790*ea90ca10SHuqiang Qin "uart_e_tx_a", "uart_e_rx_a", 791*ea90ca10SHuqiang Qin }; 792*ea90ca10SHuqiang Qin 793*ea90ca10SHuqiang Qin static const char * const i2c0_groups[] = { 794*ea90ca10SHuqiang Qin "i2c0_sda_e", "i2c0_scl_e", 795*ea90ca10SHuqiang Qin "i2c0_sda_d", "i2c0_scl_d", 796*ea90ca10SHuqiang Qin }; 797*ea90ca10SHuqiang Qin 798*ea90ca10SHuqiang Qin static const char * const i2c1_groups[] = { 799*ea90ca10SHuqiang Qin "i2c1_sda_x", "i2c1_scl_x", 800*ea90ca10SHuqiang Qin "i2c1_sda_d", "i2c1_scl_d", 801*ea90ca10SHuqiang Qin "i2c1_sda_a", "i2c1_scl_a", 802*ea90ca10SHuqiang Qin "i2c1_sda_b", "i2c1_scl_b", 803*ea90ca10SHuqiang Qin }; 804*ea90ca10SHuqiang Qin 805*ea90ca10SHuqiang Qin static const char * const i2c2_groups[] = { 806*ea90ca10SHuqiang Qin "i2c2_sda", "i2c2_scl", 807*ea90ca10SHuqiang Qin }; 808*ea90ca10SHuqiang Qin 809*ea90ca10SHuqiang Qin static const char * const i2c3_groups[] = { 810*ea90ca10SHuqiang Qin "i2c3_sda_c", "i2c3_scl_c", 811*ea90ca10SHuqiang Qin "i2c3_sda_x", "i2c3_scl_x", 812*ea90ca10SHuqiang Qin "i2c3_sda_d", "i2c3_scl_d", 813*ea90ca10SHuqiang Qin }; 814*ea90ca10SHuqiang Qin 815*ea90ca10SHuqiang Qin static const char * const i2c_slave_groups[] = { 816*ea90ca10SHuqiang Qin "i2c_slave_scl", "i2c_slave_sda", 817*ea90ca10SHuqiang Qin }; 818*ea90ca10SHuqiang Qin 819*ea90ca10SHuqiang Qin static const char * const pwm_a_groups[] = { 820*ea90ca10SHuqiang Qin "pwm_a", 821*ea90ca10SHuqiang Qin }; 822*ea90ca10SHuqiang Qin 823*ea90ca10SHuqiang Qin static const char * const pwm_b_groups[] = { 824*ea90ca10SHuqiang Qin "pwm_b", 825*ea90ca10SHuqiang Qin }; 826*ea90ca10SHuqiang Qin 827*ea90ca10SHuqiang Qin static const char * const pwm_c_groups[] = { 828*ea90ca10SHuqiang Qin "pwm_c", 829*ea90ca10SHuqiang Qin }; 830*ea90ca10SHuqiang Qin 831*ea90ca10SHuqiang Qin static const char * const pwm_d_groups[] = { 832*ea90ca10SHuqiang Qin "pwm_d", 833*ea90ca10SHuqiang Qin }; 834*ea90ca10SHuqiang Qin 835*ea90ca10SHuqiang Qin static const char * const pwm_e_groups[] = { 836*ea90ca10SHuqiang Qin "pwm_e", 837*ea90ca10SHuqiang Qin }; 838*ea90ca10SHuqiang Qin 839*ea90ca10SHuqiang Qin static const char * const pwm_f_groups[] = { 840*ea90ca10SHuqiang Qin "pwm_f", 841*ea90ca10SHuqiang Qin }; 842*ea90ca10SHuqiang Qin 843*ea90ca10SHuqiang Qin static const char * const pwm_g_groups[] = { 844*ea90ca10SHuqiang Qin "pwm_g_b", "pwm_g_c", "pwm_g_d", "pwm_g_x0", "pwm_g_x8", 845*ea90ca10SHuqiang Qin }; 846*ea90ca10SHuqiang Qin 847*ea90ca10SHuqiang Qin static const char * const pwm_h_groups[] = { 848*ea90ca10SHuqiang Qin "pwm_h_b", "pwm_h_c", "pwm_h_d", "pwm_h_x1", "pwm_h_x9", 849*ea90ca10SHuqiang Qin }; 850*ea90ca10SHuqiang Qin 851*ea90ca10SHuqiang Qin static const char * const pwm_i_groups[] = { 852*ea90ca10SHuqiang Qin "pwm_i_b", "pwm_i_c", "pwm_i_d", "pwm_i_x2", "pwm_i_x10", 853*ea90ca10SHuqiang Qin }; 854*ea90ca10SHuqiang Qin 855*ea90ca10SHuqiang Qin static const char * const pwm_j_groups[] = { 856*ea90ca10SHuqiang Qin "pwm_j_c", "pwm_j_d", "pwm_j_b", "pwm_j_x3", "pwm_j_x12", 857*ea90ca10SHuqiang Qin }; 858*ea90ca10SHuqiang Qin 859*ea90ca10SHuqiang Qin static const char * const pwm_k_groups[] = { 860*ea90ca10SHuqiang Qin "pwm_k_c", "pwm_k_d", "pwm_k_b", "pwm_k_x4", "pwm_k_x13", 861*ea90ca10SHuqiang Qin }; 862*ea90ca10SHuqiang Qin 863*ea90ca10SHuqiang Qin static const char * const pwm_l_groups[] = { 864*ea90ca10SHuqiang Qin "pwm_l_c", "pwm_l_x", "pwm_l_b", "pwm_l_a", 865*ea90ca10SHuqiang Qin }; 866*ea90ca10SHuqiang Qin 867*ea90ca10SHuqiang Qin static const char * const pwm_m_groups[] = { 868*ea90ca10SHuqiang Qin "pwm_m_c", "pwm_m_x", "pwm_m_a", "pwm_m_b", 869*ea90ca10SHuqiang Qin }; 870*ea90ca10SHuqiang Qin 871*ea90ca10SHuqiang Qin static const char * const pwm_n_groups[] = { 872*ea90ca10SHuqiang Qin "pwm_n_x", "pwm_n_a", "pwm_n_b", 873*ea90ca10SHuqiang Qin }; 874*ea90ca10SHuqiang Qin 875*ea90ca10SHuqiang Qin static const char * const pwm_c_hiz_groups[] = { 876*ea90ca10SHuqiang Qin "pwm_c_hiz", 877*ea90ca10SHuqiang Qin }; 878*ea90ca10SHuqiang Qin 879*ea90ca10SHuqiang Qin static const char * const ir_out_groups[] = { 880*ea90ca10SHuqiang Qin "ir_out", 881*ea90ca10SHuqiang Qin }; 882*ea90ca10SHuqiang Qin 883*ea90ca10SHuqiang Qin static const char * const ir_in_groups[] = { 884*ea90ca10SHuqiang Qin "ir_in_d0", "ir_in_d6", 885*ea90ca10SHuqiang Qin }; 886*ea90ca10SHuqiang Qin 887*ea90ca10SHuqiang Qin static const char * const jtag_a_groups[] = { 888*ea90ca10SHuqiang Qin "jtag_a_clk", "jtag_a_tms", "jtag_a_tdi", "jtag_a_tdo", 889*ea90ca10SHuqiang Qin }; 890*ea90ca10SHuqiang Qin 891*ea90ca10SHuqiang Qin static const char * const jtag_b_groups[] = { 892*ea90ca10SHuqiang Qin "jtag_b_tdo", "jtag_b_tdi", "jtag_b_clk", "jtag_b_tms", 893*ea90ca10SHuqiang Qin }; 894*ea90ca10SHuqiang Qin 895*ea90ca10SHuqiang Qin static const char * const gen_clk_groups[] = { 896*ea90ca10SHuqiang Qin "gen_clk_e", "gen_clk_c", "gen_clk_a", "gen_clk_x", 897*ea90ca10SHuqiang Qin "gen_clk_a4", 898*ea90ca10SHuqiang Qin }; 899*ea90ca10SHuqiang Qin 900*ea90ca10SHuqiang Qin static const char * const clk12_24_groups[] = { 901*ea90ca10SHuqiang Qin "clk12_24_e", "clk12_24_c", "clk12_24_x", "clk12_24_a", 902*ea90ca10SHuqiang Qin "clk12_24_x13", "clk12_24_x11", 903*ea90ca10SHuqiang Qin }; 904*ea90ca10SHuqiang Qin 905*ea90ca10SHuqiang Qin static const char * const clk_32k_in_groups[] = { 906*ea90ca10SHuqiang Qin "clk_32k_in", 907*ea90ca10SHuqiang Qin }; 908*ea90ca10SHuqiang Qin 909*ea90ca10SHuqiang Qin static const char * const emmc_groups[] = { 910*ea90ca10SHuqiang Qin "emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2", "emmc_nand_d3", 911*ea90ca10SHuqiang Qin "emmc_nand_d4", "emmc_nand_d5", "emmc_nand_d6", "emmc_nand_d7", 912*ea90ca10SHuqiang Qin "emmc_clk", "emmc_rst", "emmc_cmd", "emmc_nand_ds", 913*ea90ca10SHuqiang Qin }; 914*ea90ca10SHuqiang Qin 915*ea90ca10SHuqiang Qin static const char * const nand_groups[] = { 916*ea90ca10SHuqiang Qin "emmc_nand_d0", "emmc_nand_d1", "emmc_nand_d2", "emmc_nand_d3", 917*ea90ca10SHuqiang Qin "emmc_nand_d4", "emmc_nand_d5", "emmc_nand_d6", "emmc_nand_d7", 918*ea90ca10SHuqiang Qin "emmc_clk", "emmc_rst", "emmc_cmd", "emmc_nand_ds", 919*ea90ca10SHuqiang Qin "nand_wen_clk", "nand_ale", "nand_ren_wr", "nand_cle", 920*ea90ca10SHuqiang Qin "nand_ce0", 921*ea90ca10SHuqiang Qin }; 922*ea90ca10SHuqiang Qin 923*ea90ca10SHuqiang Qin static const char * const spif_groups[] = { 924*ea90ca10SHuqiang Qin "spif_mo", "spif_mi", "spif_wp", "spif_cs", 925*ea90ca10SHuqiang Qin "spif_clk", "spif_hold", "spif_clk_loop", 926*ea90ca10SHuqiang Qin }; 927*ea90ca10SHuqiang Qin 928*ea90ca10SHuqiang Qin static const char * const spi_a_groups[] = { 929*ea90ca10SHuqiang Qin "spi_a_clk_b", "spi_a_ss0_b", "spi_a_ss1_b", "spi_a_ss2_b", 930*ea90ca10SHuqiang Qin "spi_a_mosi_b", "spi_a_miso_b", 931*ea90ca10SHuqiang Qin 932*ea90ca10SHuqiang Qin "spi_a_clk_c", "spi_a_ss0_c", "spi_a_ss1_c", 933*ea90ca10SHuqiang Qin "spi_a_mosi_c", "spi_a_miso_c", 934*ea90ca10SHuqiang Qin 935*ea90ca10SHuqiang Qin "spi_a_clk_x", "spi_a_ss0_x", "spi_a_ss1_x", "spi_a_ss2_x", 936*ea90ca10SHuqiang Qin "spi_a_mosi_x", "spi_a_miso_x", 937*ea90ca10SHuqiang Qin "spi_a_mosi_a", 938*ea90ca10SHuqiang Qin }; 939*ea90ca10SHuqiang Qin 940*ea90ca10SHuqiang Qin static const char * const spi_b_groups[] = { 941*ea90ca10SHuqiang Qin "spi_b_clk_x", "spi_b_ss0_x", "spi_b_ss1_x", "spi_b_ss2_x6", 942*ea90ca10SHuqiang Qin "spi_b_miso_x", "spi_b_mosi_x", "spi_b_ss2_x12", 943*ea90ca10SHuqiang Qin 944*ea90ca10SHuqiang Qin "spi_b_clk_d", "spi_b_ss0_d", "spi_b_ss1_d", "spi_b_miso_d", 945*ea90ca10SHuqiang Qin "spi_b_mosi_d", 946*ea90ca10SHuqiang Qin }; 947*ea90ca10SHuqiang Qin 948*ea90ca10SHuqiang Qin static const char * const sdcard_groups[] = { 949*ea90ca10SHuqiang Qin "sdcard_d0", "sdcard_d1", "sdcard_d2", "sdcard_d3", 950*ea90ca10SHuqiang Qin "sdcard_cd", "sdcard_clk", "sdcard_cmd", 951*ea90ca10SHuqiang Qin }; 952*ea90ca10SHuqiang Qin 953*ea90ca10SHuqiang Qin static const char * const sdio_groups[] = { 954*ea90ca10SHuqiang Qin "sdio_d0", "sdio_d1", "sdio_d2", "sdio_d3", 955*ea90ca10SHuqiang Qin "sdio_clk", "sdio_cmd", 956*ea90ca10SHuqiang Qin }; 957*ea90ca10SHuqiang Qin 958*ea90ca10SHuqiang Qin static const char * const pdm_groups[] = { 959*ea90ca10SHuqiang Qin "pdm_dclk_c", "pdm_din0_c", "pdm_dclk_d", "pdm_din0_d", 960*ea90ca10SHuqiang Qin "pdm_dclk_z", "pdm_din0_a", "pdm_dclk_b", "pdm_din0_b", 961*ea90ca10SHuqiang Qin "pdm_dclk_x5", "pdm_din0_x6", "pdm_din0_x9", "pdm_dclk_x10", 962*ea90ca10SHuqiang Qin }; 963*ea90ca10SHuqiang Qin 964*ea90ca10SHuqiang Qin static const char * const eth_groups[] = { 965*ea90ca10SHuqiang Qin "eth_led_act", "eth_led_link", 966*ea90ca10SHuqiang Qin }; 967*ea90ca10SHuqiang Qin 968*ea90ca10SHuqiang Qin static const char * const mclk_0_groups[] = { 969*ea90ca10SHuqiang Qin "mclk_0_x", "mclk_0_d", 970*ea90ca10SHuqiang Qin }; 971*ea90ca10SHuqiang Qin 972*ea90ca10SHuqiang Qin static const char * const mclk_1_groups[] = { 973*ea90ca10SHuqiang Qin "mclk_1", 974*ea90ca10SHuqiang Qin }; 975*ea90ca10SHuqiang Qin 976*ea90ca10SHuqiang Qin static const char * const tdm_groups[] = { 977*ea90ca10SHuqiang Qin "tdm_d3", "tdm_d2", "tdm_fs1", "tdm_d1_x", "tdm_d0_x", 978*ea90ca10SHuqiang Qin "tdm_d1_d", "tdm_d0_d", "tdm_sclk1", "tdm_fs0_x", "tdm_fs0_d", 979*ea90ca10SHuqiang Qin "tdm_sclk0_x", "tdm_sclk0_d", 980*ea90ca10SHuqiang Qin }; 981*ea90ca10SHuqiang Qin 982*ea90ca10SHuqiang Qin static const char * const lcd_groups[] = { 983*ea90ca10SHuqiang Qin "lcd_d0", "lcd_d1", "lcd_d2", "lcd_d3", "lcd_d4", 984*ea90ca10SHuqiang Qin "lcd_d5", "lcd_d6", "lcd_d7", "lcd_d8", "lcd_d9", 985*ea90ca10SHuqiang Qin "lcd_d10", "lcd_d11", "lcd_d12", "lcd_d13", "lcd_d14", 986*ea90ca10SHuqiang Qin "lcd_d15", "lcd_d16", "lcd_d17", "lcd_den", 987*ea90ca10SHuqiang Qin "lcd_clk_a", "lcd_clk_x", "lcd_hs", "lcd_vs", 988*ea90ca10SHuqiang Qin }; 989*ea90ca10SHuqiang Qin 990*ea90ca10SHuqiang Qin static struct meson_pmx_func c3_periphs_functions[] = { 991*ea90ca10SHuqiang Qin FUNCTION(gpio_periphs), 992*ea90ca10SHuqiang Qin FUNCTION(uart_a), 993*ea90ca10SHuqiang Qin FUNCTION(uart_b), 994*ea90ca10SHuqiang Qin FUNCTION(uart_c), 995*ea90ca10SHuqiang Qin FUNCTION(uart_d), 996*ea90ca10SHuqiang Qin FUNCTION(uart_e), 997*ea90ca10SHuqiang Qin FUNCTION(i2c0), 998*ea90ca10SHuqiang Qin FUNCTION(i2c1), 999*ea90ca10SHuqiang Qin FUNCTION(i2c2), 1000*ea90ca10SHuqiang Qin FUNCTION(i2c3), 1001*ea90ca10SHuqiang Qin FUNCTION(i2c_slave), 1002*ea90ca10SHuqiang Qin FUNCTION(pwm_a), 1003*ea90ca10SHuqiang Qin FUNCTION(pwm_b), 1004*ea90ca10SHuqiang Qin FUNCTION(pwm_c), 1005*ea90ca10SHuqiang Qin FUNCTION(pwm_d), 1006*ea90ca10SHuqiang Qin FUNCTION(pwm_e), 1007*ea90ca10SHuqiang Qin FUNCTION(pwm_f), 1008*ea90ca10SHuqiang Qin FUNCTION(pwm_g), 1009*ea90ca10SHuqiang Qin FUNCTION(pwm_h), 1010*ea90ca10SHuqiang Qin FUNCTION(pwm_i), 1011*ea90ca10SHuqiang Qin FUNCTION(pwm_j), 1012*ea90ca10SHuqiang Qin FUNCTION(pwm_k), 1013*ea90ca10SHuqiang Qin FUNCTION(pwm_l), 1014*ea90ca10SHuqiang Qin FUNCTION(pwm_m), 1015*ea90ca10SHuqiang Qin FUNCTION(pwm_n), 1016*ea90ca10SHuqiang Qin FUNCTION(pwm_c_hiz), 1017*ea90ca10SHuqiang Qin FUNCTION(ir_out), 1018*ea90ca10SHuqiang Qin FUNCTION(ir_in), 1019*ea90ca10SHuqiang Qin FUNCTION(jtag_a), 1020*ea90ca10SHuqiang Qin FUNCTION(jtag_b), 1021*ea90ca10SHuqiang Qin FUNCTION(gen_clk), 1022*ea90ca10SHuqiang Qin FUNCTION(clk12_24), 1023*ea90ca10SHuqiang Qin FUNCTION(clk_32k_in), 1024*ea90ca10SHuqiang Qin FUNCTION(emmc), 1025*ea90ca10SHuqiang Qin FUNCTION(nand), 1026*ea90ca10SHuqiang Qin FUNCTION(spif), 1027*ea90ca10SHuqiang Qin FUNCTION(spi_a), 1028*ea90ca10SHuqiang Qin FUNCTION(spi_b), 1029*ea90ca10SHuqiang Qin FUNCTION(sdcard), 1030*ea90ca10SHuqiang Qin FUNCTION(sdio), 1031*ea90ca10SHuqiang Qin FUNCTION(pdm), 1032*ea90ca10SHuqiang Qin FUNCTION(eth), 1033*ea90ca10SHuqiang Qin FUNCTION(mclk_0), 1034*ea90ca10SHuqiang Qin FUNCTION(mclk_1), 1035*ea90ca10SHuqiang Qin FUNCTION(tdm), 1036*ea90ca10SHuqiang Qin FUNCTION(lcd), 1037*ea90ca10SHuqiang Qin }; 1038*ea90ca10SHuqiang Qin 1039*ea90ca10SHuqiang Qin static struct meson_bank c3_periphs_banks[] = { 1040*ea90ca10SHuqiang Qin /* name first last irq pullen pull dir out in ds */ 1041*ea90ca10SHuqiang Qin BANK_DS("X", GPIOX_0, GPIOX_13, 40, 53, 1042*ea90ca10SHuqiang Qin 0x03, 0, 0x04, 0, 0x02, 0, 0x01, 0, 0x00, 0, 0x07, 0), 1043*ea90ca10SHuqiang Qin BANK_DS("D", GPIOD_0, GPIOD_6, 33, 39, 1044*ea90ca10SHuqiang Qin 0x23, 0, 0x24, 0, 0x22, 0, 0x21, 0, 0x20, 0, 0x27, 0), 1045*ea90ca10SHuqiang Qin BANK_DS("E", GPIOE_0, GPIOE_4, 22, 26, 1046*ea90ca10SHuqiang Qin 0x33, 0, 0x34, 0, 0x32, 0, 0x31, 0, 0x30, 0, 0x37, 0), 1047*ea90ca10SHuqiang Qin BANK_DS("C", GPIOC_0, GPIOC_6, 15, 21, 1048*ea90ca10SHuqiang Qin 0x43, 0, 0x44, 0, 0x42, 0, 0x41, 0, 0x40, 0, 0x47, 0), 1049*ea90ca10SHuqiang Qin BANK_DS("B", GPIOB_0, GPIOB_14, 0, 14, 1050*ea90ca10SHuqiang Qin 0x53, 0, 0x54, 0, 0x52, 0, 0x51, 0, 0x50, 0, 0x57, 0), 1051*ea90ca10SHuqiang Qin BANK_DS("A", GPIOA_0, GPIOA_5, 27, 32, 1052*ea90ca10SHuqiang Qin 0x63, 0, 0x64, 0, 0x62, 0, 0x61, 0, 0x60, 0, 0x67, 0), 1053*ea90ca10SHuqiang Qin BANK_DS("TEST_N", GPIO_TEST_N, GPIO_TEST_N, 54, 54, 1054*ea90ca10SHuqiang Qin 0x73, 0, 0x74, 0, 0x72, 0, 0x71, 0, 0x70, 0, 0x77, 0), 1055*ea90ca10SHuqiang Qin }; 1056*ea90ca10SHuqiang Qin 1057*ea90ca10SHuqiang Qin static struct meson_pmx_bank c3_periphs_pmx_banks[] = { 1058*ea90ca10SHuqiang Qin /* name first last reg offset */ 1059*ea90ca10SHuqiang Qin BANK_PMX("B", GPIOB_0, GPIOB_14, 0x00, 0), 1060*ea90ca10SHuqiang Qin BANK_PMX("X", GPIOX_0, GPIOX_13, 0x03, 0), 1061*ea90ca10SHuqiang Qin BANK_PMX("C", GPIOC_0, GPIOC_6, 0x09, 0), 1062*ea90ca10SHuqiang Qin BANK_PMX("A", GPIOA_0, GPIOA_5, 0x0b, 0), 1063*ea90ca10SHuqiang Qin BANK_PMX("D", GPIOD_0, GPIOD_6, 0x10, 0), 1064*ea90ca10SHuqiang Qin BANK_PMX("E", GPIOE_0, GPIOE_4, 0x12, 0), 1065*ea90ca10SHuqiang Qin BANK_PMX("TEST_N", GPIO_TEST_N, GPIO_TEST_N, 0x02, 0), 1066*ea90ca10SHuqiang Qin }; 1067*ea90ca10SHuqiang Qin 1068*ea90ca10SHuqiang Qin static struct meson_axg_pmx_data c3_periphs_pmx_banks_data = { 1069*ea90ca10SHuqiang Qin .pmx_banks = c3_periphs_pmx_banks, 1070*ea90ca10SHuqiang Qin .num_pmx_banks = ARRAY_SIZE(c3_periphs_pmx_banks), 1071*ea90ca10SHuqiang Qin }; 1072*ea90ca10SHuqiang Qin 1073*ea90ca10SHuqiang Qin static struct meson_pinctrl_data c3_periphs_pinctrl_data = { 1074*ea90ca10SHuqiang Qin .name = "periphs-banks", 1075*ea90ca10SHuqiang Qin .pins = c3_periphs_pins, 1076*ea90ca10SHuqiang Qin .groups = c3_periphs_groups, 1077*ea90ca10SHuqiang Qin .funcs = c3_periphs_functions, 1078*ea90ca10SHuqiang Qin .banks = c3_periphs_banks, 1079*ea90ca10SHuqiang Qin .num_pins = ARRAY_SIZE(c3_periphs_pins), 1080*ea90ca10SHuqiang Qin .num_groups = ARRAY_SIZE(c3_periphs_groups), 1081*ea90ca10SHuqiang Qin .num_funcs = ARRAY_SIZE(c3_periphs_functions), 1082*ea90ca10SHuqiang Qin .num_banks = ARRAY_SIZE(c3_periphs_banks), 1083*ea90ca10SHuqiang Qin .pmx_ops = &meson_axg_pmx_ops, 1084*ea90ca10SHuqiang Qin .pmx_data = &c3_periphs_pmx_banks_data, 1085*ea90ca10SHuqiang Qin .parse_dt = &meson_a1_parse_dt_extra, 1086*ea90ca10SHuqiang Qin }; 1087*ea90ca10SHuqiang Qin 1088*ea90ca10SHuqiang Qin static const struct of_device_id c3_pinctrl_dt_match[] = { 1089*ea90ca10SHuqiang Qin { 1090*ea90ca10SHuqiang Qin .compatible = "amlogic,c3-periphs-pinctrl", 1091*ea90ca10SHuqiang Qin .data = &c3_periphs_pinctrl_data, 1092*ea90ca10SHuqiang Qin }, 1093*ea90ca10SHuqiang Qin { } 1094*ea90ca10SHuqiang Qin }; 1095*ea90ca10SHuqiang Qin MODULE_DEVICE_TABLE(of, c3_pinctrl_dt_match); 1096*ea90ca10SHuqiang Qin 1097*ea90ca10SHuqiang Qin static struct platform_driver c3_pinctrl_driver = { 1098*ea90ca10SHuqiang Qin .probe = meson_pinctrl_probe, 1099*ea90ca10SHuqiang Qin .driver = { 1100*ea90ca10SHuqiang Qin .name = "amlogic-c3-pinctrl", 1101*ea90ca10SHuqiang Qin .of_match_table = c3_pinctrl_dt_match, 1102*ea90ca10SHuqiang Qin }, 1103*ea90ca10SHuqiang Qin }; 1104*ea90ca10SHuqiang Qin module_platform_driver(c3_pinctrl_driver); 1105*ea90ca10SHuqiang Qin 1106*ea90ca10SHuqiang Qin MODULE_AUTHOR("Huqiang Qin <huqiang.qin@amlogic.com>"); 1107*ea90ca10SHuqiang Qin MODULE_DESCRIPTION("Pin controller and GPIO driver for Amlogic C3 SoC"); 1108*ea90ca10SHuqiang Qin MODULE_LICENSE("Dual BSD/GPL"); 1109