1*725d1c89SSricharan Ramabadhran // SPDX-License-Identifier: GPL-2.0-only 2*725d1c89SSricharan Ramabadhran /* 3*725d1c89SSricharan Ramabadhran * Copyright (c) 2019-2021, 2023 The Linux Foundation. All rights reserved. 4*725d1c89SSricharan Ramabadhran */ 5*725d1c89SSricharan Ramabadhran 6*725d1c89SSricharan Ramabadhran #include <linux/module.h> 7*725d1c89SSricharan Ramabadhran #include <linux/mod_devicetable.h> 8*725d1c89SSricharan Ramabadhran #include <linux/platform_device.h> 9*725d1c89SSricharan Ramabadhran 10*725d1c89SSricharan Ramabadhran #include "pinctrl-msm.h" 11*725d1c89SSricharan Ramabadhran 12*725d1c89SSricharan Ramabadhran #define REG_SIZE 0x1000 13*725d1c89SSricharan Ramabadhran #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9) \ 14*725d1c89SSricharan Ramabadhran { \ 15*725d1c89SSricharan Ramabadhran .grp = PINCTRL_PINGROUP("gpio" #id, \ 16*725d1c89SSricharan Ramabadhran gpio##id##_pins, \ 17*725d1c89SSricharan Ramabadhran ARRAY_SIZE(gpio##id##_pins)), \ 18*725d1c89SSricharan Ramabadhran .funcs = (int[]){ \ 19*725d1c89SSricharan Ramabadhran msm_mux_gpio, /* gpio mode */ \ 20*725d1c89SSricharan Ramabadhran msm_mux_##f1, \ 21*725d1c89SSricharan Ramabadhran msm_mux_##f2, \ 22*725d1c89SSricharan Ramabadhran msm_mux_##f3, \ 23*725d1c89SSricharan Ramabadhran msm_mux_##f4, \ 24*725d1c89SSricharan Ramabadhran msm_mux_##f5, \ 25*725d1c89SSricharan Ramabadhran msm_mux_##f6, \ 26*725d1c89SSricharan Ramabadhran msm_mux_##f7, \ 27*725d1c89SSricharan Ramabadhran msm_mux_##f8, \ 28*725d1c89SSricharan Ramabadhran msm_mux_##f9 \ 29*725d1c89SSricharan Ramabadhran }, \ 30*725d1c89SSricharan Ramabadhran .nfuncs = 10, \ 31*725d1c89SSricharan Ramabadhran .ctl_reg = REG_SIZE * id, \ 32*725d1c89SSricharan Ramabadhran .io_reg = 0x4 + REG_SIZE * id, \ 33*725d1c89SSricharan Ramabadhran .intr_cfg_reg = 0x8 + REG_SIZE * id, \ 34*725d1c89SSricharan Ramabadhran .intr_status_reg = 0xc + REG_SIZE * id, \ 35*725d1c89SSricharan Ramabadhran .intr_target_reg = 0x8 + REG_SIZE * id, \ 36*725d1c89SSricharan Ramabadhran .mux_bit = 2, \ 37*725d1c89SSricharan Ramabadhran .pull_bit = 0, \ 38*725d1c89SSricharan Ramabadhran .drv_bit = 6, \ 39*725d1c89SSricharan Ramabadhran .oe_bit = 9, \ 40*725d1c89SSricharan Ramabadhran .in_bit = 0, \ 41*725d1c89SSricharan Ramabadhran .out_bit = 1, \ 42*725d1c89SSricharan Ramabadhran .intr_enable_bit = 0, \ 43*725d1c89SSricharan Ramabadhran .intr_status_bit = 0, \ 44*725d1c89SSricharan Ramabadhran .intr_target_bit = 5, \ 45*725d1c89SSricharan Ramabadhran .intr_target_kpss_val = 3, \ 46*725d1c89SSricharan Ramabadhran .intr_raw_status_bit = 4, \ 47*725d1c89SSricharan Ramabadhran .intr_polarity_bit = 1, \ 48*725d1c89SSricharan Ramabadhran .intr_detection_bit = 2, \ 49*725d1c89SSricharan Ramabadhran .intr_detection_width = 2, \ 50*725d1c89SSricharan Ramabadhran } 51*725d1c89SSricharan Ramabadhran 52*725d1c89SSricharan Ramabadhran static const struct pinctrl_pin_desc ipq5018_pins[] = { 53*725d1c89SSricharan Ramabadhran PINCTRL_PIN(0, "GPIO_0"), 54*725d1c89SSricharan Ramabadhran PINCTRL_PIN(1, "GPIO_1"), 55*725d1c89SSricharan Ramabadhran PINCTRL_PIN(2, "GPIO_2"), 56*725d1c89SSricharan Ramabadhran PINCTRL_PIN(3, "GPIO_3"), 57*725d1c89SSricharan Ramabadhran PINCTRL_PIN(4, "GPIO_4"), 58*725d1c89SSricharan Ramabadhran PINCTRL_PIN(5, "GPIO_5"), 59*725d1c89SSricharan Ramabadhran PINCTRL_PIN(6, "GPIO_6"), 60*725d1c89SSricharan Ramabadhran PINCTRL_PIN(7, "GPIO_7"), 61*725d1c89SSricharan Ramabadhran PINCTRL_PIN(8, "GPIO_8"), 62*725d1c89SSricharan Ramabadhran PINCTRL_PIN(9, "GPIO_9"), 63*725d1c89SSricharan Ramabadhran PINCTRL_PIN(10, "GPIO_10"), 64*725d1c89SSricharan Ramabadhran PINCTRL_PIN(11, "GPIO_11"), 65*725d1c89SSricharan Ramabadhran PINCTRL_PIN(12, "GPIO_12"), 66*725d1c89SSricharan Ramabadhran PINCTRL_PIN(13, "GPIO_13"), 67*725d1c89SSricharan Ramabadhran PINCTRL_PIN(14, "GPIO_14"), 68*725d1c89SSricharan Ramabadhran PINCTRL_PIN(15, "GPIO_15"), 69*725d1c89SSricharan Ramabadhran PINCTRL_PIN(16, "GPIO_16"), 70*725d1c89SSricharan Ramabadhran PINCTRL_PIN(17, "GPIO_17"), 71*725d1c89SSricharan Ramabadhran PINCTRL_PIN(18, "GPIO_18"), 72*725d1c89SSricharan Ramabadhran PINCTRL_PIN(19, "GPIO_19"), 73*725d1c89SSricharan Ramabadhran PINCTRL_PIN(20, "GPIO_20"), 74*725d1c89SSricharan Ramabadhran PINCTRL_PIN(21, "GPIO_21"), 75*725d1c89SSricharan Ramabadhran PINCTRL_PIN(22, "GPIO_22"), 76*725d1c89SSricharan Ramabadhran PINCTRL_PIN(23, "GPIO_23"), 77*725d1c89SSricharan Ramabadhran PINCTRL_PIN(24, "GPIO_24"), 78*725d1c89SSricharan Ramabadhran PINCTRL_PIN(25, "GPIO_25"), 79*725d1c89SSricharan Ramabadhran PINCTRL_PIN(26, "GPIO_26"), 80*725d1c89SSricharan Ramabadhran PINCTRL_PIN(27, "GPIO_27"), 81*725d1c89SSricharan Ramabadhran PINCTRL_PIN(28, "GPIO_28"), 82*725d1c89SSricharan Ramabadhran PINCTRL_PIN(29, "GPIO_29"), 83*725d1c89SSricharan Ramabadhran PINCTRL_PIN(30, "GPIO_30"), 84*725d1c89SSricharan Ramabadhran PINCTRL_PIN(31, "GPIO_31"), 85*725d1c89SSricharan Ramabadhran PINCTRL_PIN(32, "GPIO_32"), 86*725d1c89SSricharan Ramabadhran PINCTRL_PIN(33, "GPIO_33"), 87*725d1c89SSricharan Ramabadhran PINCTRL_PIN(34, "GPIO_34"), 88*725d1c89SSricharan Ramabadhran PINCTRL_PIN(35, "GPIO_35"), 89*725d1c89SSricharan Ramabadhran PINCTRL_PIN(36, "GPIO_36"), 90*725d1c89SSricharan Ramabadhran PINCTRL_PIN(37, "GPIO_37"), 91*725d1c89SSricharan Ramabadhran PINCTRL_PIN(38, "GPIO_38"), 92*725d1c89SSricharan Ramabadhran PINCTRL_PIN(39, "GPIO_39"), 93*725d1c89SSricharan Ramabadhran PINCTRL_PIN(40, "GPIO_40"), 94*725d1c89SSricharan Ramabadhran PINCTRL_PIN(41, "GPIO_41"), 95*725d1c89SSricharan Ramabadhran PINCTRL_PIN(42, "GPIO_42"), 96*725d1c89SSricharan Ramabadhran PINCTRL_PIN(43, "GPIO_43"), 97*725d1c89SSricharan Ramabadhran PINCTRL_PIN(44, "GPIO_44"), 98*725d1c89SSricharan Ramabadhran PINCTRL_PIN(45, "GPIO_45"), 99*725d1c89SSricharan Ramabadhran PINCTRL_PIN(46, "GPIO_46"), 100*725d1c89SSricharan Ramabadhran }; 101*725d1c89SSricharan Ramabadhran 102*725d1c89SSricharan Ramabadhran #define DECLARE_MSM_GPIO_PINS(pin) \ 103*725d1c89SSricharan Ramabadhran static const unsigned int gpio##pin##_pins[] = { pin } 104*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(0); 105*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(1); 106*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(2); 107*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(3); 108*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(4); 109*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(5); 110*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(6); 111*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(7); 112*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(8); 113*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(9); 114*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(10); 115*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(11); 116*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(12); 117*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(13); 118*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(14); 119*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(15); 120*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(16); 121*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(17); 122*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(18); 123*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(19); 124*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(20); 125*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(21); 126*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(22); 127*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(23); 128*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(24); 129*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(25); 130*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(26); 131*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(27); 132*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(28); 133*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(29); 134*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(30); 135*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(31); 136*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(32); 137*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(33); 138*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(34); 139*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(35); 140*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(36); 141*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(37); 142*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(38); 143*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(39); 144*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(40); 145*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(41); 146*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(42); 147*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(43); 148*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(44); 149*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(45); 150*725d1c89SSricharan Ramabadhran DECLARE_MSM_GPIO_PINS(46); 151*725d1c89SSricharan Ramabadhran 152*725d1c89SSricharan Ramabadhran enum ipq5018_functions { 153*725d1c89SSricharan Ramabadhran msm_mux_atest_char, 154*725d1c89SSricharan Ramabadhran msm_mux_audio_pdm0, 155*725d1c89SSricharan Ramabadhran msm_mux_audio_pdm1, 156*725d1c89SSricharan Ramabadhran msm_mux_audio_rxbclk, 157*725d1c89SSricharan Ramabadhran msm_mux_audio_rxd, 158*725d1c89SSricharan Ramabadhran msm_mux_audio_rxfsync, 159*725d1c89SSricharan Ramabadhran msm_mux_audio_rxmclk, 160*725d1c89SSricharan Ramabadhran msm_mux_audio_txbclk, 161*725d1c89SSricharan Ramabadhran msm_mux_audio_txd, 162*725d1c89SSricharan Ramabadhran msm_mux_audio_txfsync, 163*725d1c89SSricharan Ramabadhran msm_mux_audio_txmclk, 164*725d1c89SSricharan Ramabadhran msm_mux_blsp0_i2c, 165*725d1c89SSricharan Ramabadhran msm_mux_blsp0_spi, 166*725d1c89SSricharan Ramabadhran msm_mux_blsp0_uart0, 167*725d1c89SSricharan Ramabadhran msm_mux_blsp0_uart1, 168*725d1c89SSricharan Ramabadhran msm_mux_blsp1_i2c0, 169*725d1c89SSricharan Ramabadhran msm_mux_blsp1_i2c1, 170*725d1c89SSricharan Ramabadhran msm_mux_blsp1_spi0, 171*725d1c89SSricharan Ramabadhran msm_mux_blsp1_spi1, 172*725d1c89SSricharan Ramabadhran msm_mux_blsp1_uart0, 173*725d1c89SSricharan Ramabadhran msm_mux_blsp1_uart1, 174*725d1c89SSricharan Ramabadhran msm_mux_blsp1_uart2, 175*725d1c89SSricharan Ramabadhran msm_mux_blsp2_i2c0, 176*725d1c89SSricharan Ramabadhran msm_mux_blsp2_i2c1, 177*725d1c89SSricharan Ramabadhran msm_mux_blsp2_spi, 178*725d1c89SSricharan Ramabadhran msm_mux_blsp2_spi0, 179*725d1c89SSricharan Ramabadhran msm_mux_blsp2_spi1, 180*725d1c89SSricharan Ramabadhran msm_mux_btss, 181*725d1c89SSricharan Ramabadhran msm_mux_burn0, 182*725d1c89SSricharan Ramabadhran msm_mux_burn1, 183*725d1c89SSricharan Ramabadhran msm_mux_cri_trng, 184*725d1c89SSricharan Ramabadhran msm_mux_cri_trng0, 185*725d1c89SSricharan Ramabadhran msm_mux_cri_trng1, 186*725d1c89SSricharan Ramabadhran msm_mux_cxc_clk, 187*725d1c89SSricharan Ramabadhran msm_mux_cxc_data, 188*725d1c89SSricharan Ramabadhran msm_mux_dbg_out, 189*725d1c89SSricharan Ramabadhran msm_mux_eud_gpio, 190*725d1c89SSricharan Ramabadhran msm_mux_gcc_plltest, 191*725d1c89SSricharan Ramabadhran msm_mux_gcc_tlmm, 192*725d1c89SSricharan Ramabadhran msm_mux_gpio, 193*725d1c89SSricharan Ramabadhran msm_mux_led0, 194*725d1c89SSricharan Ramabadhran msm_mux_led2, 195*725d1c89SSricharan Ramabadhran msm_mux_mac0, 196*725d1c89SSricharan Ramabadhran msm_mux_mac1, 197*725d1c89SSricharan Ramabadhran msm_mux_mdc, 198*725d1c89SSricharan Ramabadhran msm_mux_mdio, 199*725d1c89SSricharan Ramabadhran msm_mux_pcie0_clk, 200*725d1c89SSricharan Ramabadhran msm_mux_pcie0_wake, 201*725d1c89SSricharan Ramabadhran msm_mux_pcie1_clk, 202*725d1c89SSricharan Ramabadhran msm_mux_pcie1_wake, 203*725d1c89SSricharan Ramabadhran msm_mux_pll_test, 204*725d1c89SSricharan Ramabadhran msm_mux_prng_rosc, 205*725d1c89SSricharan Ramabadhran msm_mux_pwm0, 206*725d1c89SSricharan Ramabadhran msm_mux_pwm1, 207*725d1c89SSricharan Ramabadhran msm_mux_pwm2, 208*725d1c89SSricharan Ramabadhran msm_mux_pwm3, 209*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_in_a0, 210*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_in_a1, 211*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_in_b0, 212*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_in_b1, 213*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_out_a0, 214*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_out_a1, 215*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_out_b0, 216*725d1c89SSricharan Ramabadhran msm_mux_qdss_cti_trig_out_b1, 217*725d1c89SSricharan Ramabadhran msm_mux_qdss_traceclk_a, 218*725d1c89SSricharan Ramabadhran msm_mux_qdss_traceclk_b, 219*725d1c89SSricharan Ramabadhran msm_mux_qdss_tracectl_a, 220*725d1c89SSricharan Ramabadhran msm_mux_qdss_tracectl_b, 221*725d1c89SSricharan Ramabadhran msm_mux_qdss_tracedata_a, 222*725d1c89SSricharan Ramabadhran msm_mux_qdss_tracedata_b, 223*725d1c89SSricharan Ramabadhran msm_mux_qspi_clk, 224*725d1c89SSricharan Ramabadhran msm_mux_qspi_cs, 225*725d1c89SSricharan Ramabadhran msm_mux_qspi_data, 226*725d1c89SSricharan Ramabadhran msm_mux_reset_out, 227*725d1c89SSricharan Ramabadhran msm_mux_sdc1_clk, 228*725d1c89SSricharan Ramabadhran msm_mux_sdc1_cmd, 229*725d1c89SSricharan Ramabadhran msm_mux_sdc1_data, 230*725d1c89SSricharan Ramabadhran msm_mux_wci_txd, 231*725d1c89SSricharan Ramabadhran msm_mux_wci_rxd, 232*725d1c89SSricharan Ramabadhran msm_mux_wsa_swrm, 233*725d1c89SSricharan Ramabadhran msm_mux_wsi_clk3, 234*725d1c89SSricharan Ramabadhran msm_mux_wsi_data3, 235*725d1c89SSricharan Ramabadhran msm_mux_wsis_reset, 236*725d1c89SSricharan Ramabadhran msm_mux_xfem, 237*725d1c89SSricharan Ramabadhran msm_mux__, 238*725d1c89SSricharan Ramabadhran }; 239*725d1c89SSricharan Ramabadhran 240*725d1c89SSricharan Ramabadhran static const char * const atest_char_groups[] = { 241*725d1c89SSricharan Ramabadhran "gpio0", "gpio1", "gpio2", "gpio3", "gpio37", 242*725d1c89SSricharan Ramabadhran }; 243*725d1c89SSricharan Ramabadhran 244*725d1c89SSricharan Ramabadhran static const char * const _groups[] = { 245*725d1c89SSricharan Ramabadhran "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", 246*725d1c89SSricharan Ramabadhran "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", 247*725d1c89SSricharan Ramabadhran "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", 248*725d1c89SSricharan Ramabadhran "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", 249*725d1c89SSricharan Ramabadhran "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", 250*725d1c89SSricharan Ramabadhran "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", 251*725d1c89SSricharan Ramabadhran "gpio43", "gpio44", "gpio45", "gpio46", 252*725d1c89SSricharan Ramabadhran }; 253*725d1c89SSricharan Ramabadhran 254*725d1c89SSricharan Ramabadhran static const char * const wci_txd_groups[] = { 255*725d1c89SSricharan Ramabadhran "gpio0", "gpio1", "gpio2", "gpio3", 256*725d1c89SSricharan Ramabadhran "gpio42", "gpio43", "gpio44", "gpio45", 257*725d1c89SSricharan Ramabadhran }; 258*725d1c89SSricharan Ramabadhran 259*725d1c89SSricharan Ramabadhran static const char * const wci_rxd_groups[] = { 260*725d1c89SSricharan Ramabadhran "gpio0", "gpio1", "gpio2", "gpio3", 261*725d1c89SSricharan Ramabadhran "gpio42", "gpio43", "gpio44", "gpio45", 262*725d1c89SSricharan Ramabadhran }; 263*725d1c89SSricharan Ramabadhran 264*725d1c89SSricharan Ramabadhran static const char * const xfem_groups[] = { 265*725d1c89SSricharan Ramabadhran "gpio0", "gpio1", "gpio2", "gpio3", 266*725d1c89SSricharan Ramabadhran "gpio42", "gpio43", "gpio44", "gpio45", 267*725d1c89SSricharan Ramabadhran }; 268*725d1c89SSricharan Ramabadhran 269*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_out_a0_groups[] = { 270*725d1c89SSricharan Ramabadhran "gpio0", 271*725d1c89SSricharan Ramabadhran }; 272*725d1c89SSricharan Ramabadhran 273*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_in_a0_groups[] = { 274*725d1c89SSricharan Ramabadhran "gpio1", 275*725d1c89SSricharan Ramabadhran }; 276*725d1c89SSricharan Ramabadhran 277*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_out_a1_groups[] = { 278*725d1c89SSricharan Ramabadhran "gpio2", 279*725d1c89SSricharan Ramabadhran }; 280*725d1c89SSricharan Ramabadhran 281*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_in_a1_groups[] = { 282*725d1c89SSricharan Ramabadhran "gpio3", 283*725d1c89SSricharan Ramabadhran }; 284*725d1c89SSricharan Ramabadhran 285*725d1c89SSricharan Ramabadhran static const char * const sdc1_data_groups[] = { 286*725d1c89SSricharan Ramabadhran "gpio4", "gpio5", "gpio6", "gpio7", 287*725d1c89SSricharan Ramabadhran }; 288*725d1c89SSricharan Ramabadhran 289*725d1c89SSricharan Ramabadhran static const char * const qspi_data_groups[] = { 290*725d1c89SSricharan Ramabadhran "gpio4", 291*725d1c89SSricharan Ramabadhran "gpio5", 292*725d1c89SSricharan Ramabadhran "gpio6", 293*725d1c89SSricharan Ramabadhran "gpio7", 294*725d1c89SSricharan Ramabadhran }; 295*725d1c89SSricharan Ramabadhran 296*725d1c89SSricharan Ramabadhran static const char * const blsp1_spi1_groups[] = { 297*725d1c89SSricharan Ramabadhran "gpio4", "gpio5", "gpio6", "gpio7", 298*725d1c89SSricharan Ramabadhran }; 299*725d1c89SSricharan Ramabadhran 300*725d1c89SSricharan Ramabadhran static const char * const btss_groups[] = { 301*725d1c89SSricharan Ramabadhran "gpio4", "gpio5", "gpio6", "gpio7", "gpio8", "gpio17", "gpio18", 302*725d1c89SSricharan Ramabadhran "gpio19", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", 303*725d1c89SSricharan Ramabadhran }; 304*725d1c89SSricharan Ramabadhran 305*725d1c89SSricharan Ramabadhran static const char * const dbg_out_groups[] = { 306*725d1c89SSricharan Ramabadhran "gpio4", 307*725d1c89SSricharan Ramabadhran }; 308*725d1c89SSricharan Ramabadhran 309*725d1c89SSricharan Ramabadhran static const char * const qdss_traceclk_a_groups[] = { 310*725d1c89SSricharan Ramabadhran "gpio4", 311*725d1c89SSricharan Ramabadhran }; 312*725d1c89SSricharan Ramabadhran 313*725d1c89SSricharan Ramabadhran static const char * const burn0_groups[] = { 314*725d1c89SSricharan Ramabadhran "gpio4", 315*725d1c89SSricharan Ramabadhran }; 316*725d1c89SSricharan Ramabadhran 317*725d1c89SSricharan Ramabadhran static const char * const cxc_clk_groups[] = { 318*725d1c89SSricharan Ramabadhran "gpio5", 319*725d1c89SSricharan Ramabadhran }; 320*725d1c89SSricharan Ramabadhran 321*725d1c89SSricharan Ramabadhran static const char * const blsp1_i2c1_groups[] = { 322*725d1c89SSricharan Ramabadhran "gpio5", "gpio6", 323*725d1c89SSricharan Ramabadhran }; 324*725d1c89SSricharan Ramabadhran 325*725d1c89SSricharan Ramabadhran static const char * const qdss_tracectl_a_groups[] = { 326*725d1c89SSricharan Ramabadhran "gpio5", 327*725d1c89SSricharan Ramabadhran }; 328*725d1c89SSricharan Ramabadhran 329*725d1c89SSricharan Ramabadhran static const char * const burn1_groups[] = { 330*725d1c89SSricharan Ramabadhran "gpio5", 331*725d1c89SSricharan Ramabadhran }; 332*725d1c89SSricharan Ramabadhran 333*725d1c89SSricharan Ramabadhran static const char * const cxc_data_groups[] = { 334*725d1c89SSricharan Ramabadhran "gpio6", 335*725d1c89SSricharan Ramabadhran }; 336*725d1c89SSricharan Ramabadhran 337*725d1c89SSricharan Ramabadhran static const char * const qdss_tracedata_a_groups[] = { 338*725d1c89SSricharan Ramabadhran "gpio6", "gpio7", "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", 339*725d1c89SSricharan Ramabadhran "gpio13", "gpio14", "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", 340*725d1c89SSricharan Ramabadhran "gpio20", "gpio21", 341*725d1c89SSricharan Ramabadhran }; 342*725d1c89SSricharan Ramabadhran 343*725d1c89SSricharan Ramabadhran static const char * const mac0_groups[] = { 344*725d1c89SSricharan Ramabadhran "gpio7", 345*725d1c89SSricharan Ramabadhran }; 346*725d1c89SSricharan Ramabadhran 347*725d1c89SSricharan Ramabadhran static const char * const sdc1_cmd_groups[] = { 348*725d1c89SSricharan Ramabadhran "gpio8", 349*725d1c89SSricharan Ramabadhran }; 350*725d1c89SSricharan Ramabadhran 351*725d1c89SSricharan Ramabadhran static const char * const qspi_cs_groups[] = { 352*725d1c89SSricharan Ramabadhran "gpio8", 353*725d1c89SSricharan Ramabadhran }; 354*725d1c89SSricharan Ramabadhran 355*725d1c89SSricharan Ramabadhran static const char * const mac1_groups[] = { 356*725d1c89SSricharan Ramabadhran "gpio8", 357*725d1c89SSricharan Ramabadhran }; 358*725d1c89SSricharan Ramabadhran 359*725d1c89SSricharan Ramabadhran static const char * const sdc1_clk_groups[] = { 360*725d1c89SSricharan Ramabadhran "gpio9", 361*725d1c89SSricharan Ramabadhran }; 362*725d1c89SSricharan Ramabadhran 363*725d1c89SSricharan Ramabadhran static const char * const qspi_clk_groups[] = { 364*725d1c89SSricharan Ramabadhran "gpio9", 365*725d1c89SSricharan Ramabadhran }; 366*725d1c89SSricharan Ramabadhran 367*725d1c89SSricharan Ramabadhran static const char * const blsp0_spi_groups[] = { 368*725d1c89SSricharan Ramabadhran "gpio10", "gpio11", "gpio12", "gpio13", 369*725d1c89SSricharan Ramabadhran }; 370*725d1c89SSricharan Ramabadhran 371*725d1c89SSricharan Ramabadhran static const char * const blsp1_uart0_groups[] = { 372*725d1c89SSricharan Ramabadhran "gpio10", "gpio11", "gpio12", "gpio13", 373*725d1c89SSricharan Ramabadhran }; 374*725d1c89SSricharan Ramabadhran 375*725d1c89SSricharan Ramabadhran static const char * const gcc_plltest_groups[] = { 376*725d1c89SSricharan Ramabadhran "gpio10", "gpio12", 377*725d1c89SSricharan Ramabadhran }; 378*725d1c89SSricharan Ramabadhran 379*725d1c89SSricharan Ramabadhran static const char * const gcc_tlmm_groups[] = { 380*725d1c89SSricharan Ramabadhran "gpio11", 381*725d1c89SSricharan Ramabadhran }; 382*725d1c89SSricharan Ramabadhran 383*725d1c89SSricharan Ramabadhran static const char * const blsp0_i2c_groups[] = { 384*725d1c89SSricharan Ramabadhran "gpio12", "gpio13", 385*725d1c89SSricharan Ramabadhran }; 386*725d1c89SSricharan Ramabadhran 387*725d1c89SSricharan Ramabadhran static const char * const pcie0_clk_groups[] = { 388*725d1c89SSricharan Ramabadhran "gpio14", 389*725d1c89SSricharan Ramabadhran }; 390*725d1c89SSricharan Ramabadhran 391*725d1c89SSricharan Ramabadhran static const char * const cri_trng0_groups[] = { 392*725d1c89SSricharan Ramabadhran "gpio14", 393*725d1c89SSricharan Ramabadhran }; 394*725d1c89SSricharan Ramabadhran 395*725d1c89SSricharan Ramabadhran static const char * const cri_trng1_groups[] = { 396*725d1c89SSricharan Ramabadhran "gpio15", 397*725d1c89SSricharan Ramabadhran }; 398*725d1c89SSricharan Ramabadhran 399*725d1c89SSricharan Ramabadhran static const char * const pcie0_wake_groups[] = { 400*725d1c89SSricharan Ramabadhran "gpio16", 401*725d1c89SSricharan Ramabadhran }; 402*725d1c89SSricharan Ramabadhran 403*725d1c89SSricharan Ramabadhran static const char * const cri_trng_groups[] = { 404*725d1c89SSricharan Ramabadhran "gpio16", 405*725d1c89SSricharan Ramabadhran }; 406*725d1c89SSricharan Ramabadhran 407*725d1c89SSricharan Ramabadhran static const char * const pcie1_clk_groups[] = { 408*725d1c89SSricharan Ramabadhran "gpio17", 409*725d1c89SSricharan Ramabadhran }; 410*725d1c89SSricharan Ramabadhran 411*725d1c89SSricharan Ramabadhran static const char * const prng_rosc_groups[] = { 412*725d1c89SSricharan Ramabadhran "gpio17", 413*725d1c89SSricharan Ramabadhran }; 414*725d1c89SSricharan Ramabadhran 415*725d1c89SSricharan Ramabadhran static const char * const blsp1_spi0_groups[] = { 416*725d1c89SSricharan Ramabadhran "gpio18", "gpio19", "gpio20", "gpio21", 417*725d1c89SSricharan Ramabadhran }; 418*725d1c89SSricharan Ramabadhran 419*725d1c89SSricharan Ramabadhran static const char * const pcie1_wake_groups[] = { 420*725d1c89SSricharan Ramabadhran "gpio19", 421*725d1c89SSricharan Ramabadhran }; 422*725d1c89SSricharan Ramabadhran 423*725d1c89SSricharan Ramabadhran static const char * const blsp1_i2c0_groups[] = { 424*725d1c89SSricharan Ramabadhran "gpio19", "gpio20", 425*725d1c89SSricharan Ramabadhran }; 426*725d1c89SSricharan Ramabadhran 427*725d1c89SSricharan Ramabadhran static const char * const blsp0_uart0_groups[] = { 428*725d1c89SSricharan Ramabadhran "gpio20", "gpio21", 429*725d1c89SSricharan Ramabadhran }; 430*725d1c89SSricharan Ramabadhran 431*725d1c89SSricharan Ramabadhran static const char * const pll_test_groups[] = { 432*725d1c89SSricharan Ramabadhran "gpio22", 433*725d1c89SSricharan Ramabadhran }; 434*725d1c89SSricharan Ramabadhran 435*725d1c89SSricharan Ramabadhran static const char * const eud_gpio_groups[] = { 436*725d1c89SSricharan Ramabadhran "gpio22", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", 437*725d1c89SSricharan Ramabadhran }; 438*725d1c89SSricharan Ramabadhran 439*725d1c89SSricharan Ramabadhran static const char * const audio_rxmclk_groups[] = { 440*725d1c89SSricharan Ramabadhran "gpio23", "gpio23", 441*725d1c89SSricharan Ramabadhran }; 442*725d1c89SSricharan Ramabadhran 443*725d1c89SSricharan Ramabadhran static const char * const audio_pdm0_groups[] = { 444*725d1c89SSricharan Ramabadhran "gpio23", "gpio24", 445*725d1c89SSricharan Ramabadhran }; 446*725d1c89SSricharan Ramabadhran 447*725d1c89SSricharan Ramabadhran static const char * const blsp2_spi1_groups[] = { 448*725d1c89SSricharan Ramabadhran "gpio23", "gpio24", "gpio25", "gpio26", 449*725d1c89SSricharan Ramabadhran }; 450*725d1c89SSricharan Ramabadhran 451*725d1c89SSricharan Ramabadhran static const char * const blsp1_uart2_groups[] = { 452*725d1c89SSricharan Ramabadhran "gpio23", "gpio24", "gpio25", "gpio26", 453*725d1c89SSricharan Ramabadhran }; 454*725d1c89SSricharan Ramabadhran 455*725d1c89SSricharan Ramabadhran static const char * const qdss_tracedata_b_groups[] = { 456*725d1c89SSricharan Ramabadhran "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", "gpio29", 457*725d1c89SSricharan Ramabadhran "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", "gpio36", 458*725d1c89SSricharan Ramabadhran "gpio37", "gpio38", 459*725d1c89SSricharan Ramabadhran }; 460*725d1c89SSricharan Ramabadhran 461*725d1c89SSricharan Ramabadhran static const char * const audio_rxbclk_groups[] = { 462*725d1c89SSricharan Ramabadhran "gpio24", 463*725d1c89SSricharan Ramabadhran }; 464*725d1c89SSricharan Ramabadhran 465*725d1c89SSricharan Ramabadhran static const char * const audio_rxfsync_groups[] = { 466*725d1c89SSricharan Ramabadhran "gpio25", 467*725d1c89SSricharan Ramabadhran }; 468*725d1c89SSricharan Ramabadhran 469*725d1c89SSricharan Ramabadhran static const char * const audio_pdm1_groups[] = { 470*725d1c89SSricharan Ramabadhran "gpio25", "gpio26", 471*725d1c89SSricharan Ramabadhran }; 472*725d1c89SSricharan Ramabadhran 473*725d1c89SSricharan Ramabadhran static const char * const blsp2_i2c1_groups[] = { 474*725d1c89SSricharan Ramabadhran "gpio25", "gpio26", 475*725d1c89SSricharan Ramabadhran }; 476*725d1c89SSricharan Ramabadhran 477*725d1c89SSricharan Ramabadhran static const char * const audio_rxd_groups[] = { 478*725d1c89SSricharan Ramabadhran "gpio26", 479*725d1c89SSricharan Ramabadhran }; 480*725d1c89SSricharan Ramabadhran 481*725d1c89SSricharan Ramabadhran static const char * const audio_txmclk_groups[] = { 482*725d1c89SSricharan Ramabadhran "gpio27", "gpio27", 483*725d1c89SSricharan Ramabadhran }; 484*725d1c89SSricharan Ramabadhran 485*725d1c89SSricharan Ramabadhran static const char * const wsa_swrm_groups[] = { 486*725d1c89SSricharan Ramabadhran "gpio27", "gpio28", 487*725d1c89SSricharan Ramabadhran }; 488*725d1c89SSricharan Ramabadhran 489*725d1c89SSricharan Ramabadhran static const char * const blsp2_spi_groups[] = { 490*725d1c89SSricharan Ramabadhran "gpio27", 491*725d1c89SSricharan Ramabadhran }; 492*725d1c89SSricharan Ramabadhran 493*725d1c89SSricharan Ramabadhran static const char * const audio_txbclk_groups[] = { 494*725d1c89SSricharan Ramabadhran "gpio28", 495*725d1c89SSricharan Ramabadhran }; 496*725d1c89SSricharan Ramabadhran 497*725d1c89SSricharan Ramabadhran static const char * const blsp0_uart1_groups[] = { 498*725d1c89SSricharan Ramabadhran "gpio28", "gpio29", 499*725d1c89SSricharan Ramabadhran }; 500*725d1c89SSricharan Ramabadhran 501*725d1c89SSricharan Ramabadhran static const char * const audio_txfsync_groups[] = { 502*725d1c89SSricharan Ramabadhran "gpio29", 503*725d1c89SSricharan Ramabadhran }; 504*725d1c89SSricharan Ramabadhran 505*725d1c89SSricharan Ramabadhran static const char * const audio_txd_groups[] = { 506*725d1c89SSricharan Ramabadhran "gpio30", 507*725d1c89SSricharan Ramabadhran }; 508*725d1c89SSricharan Ramabadhran 509*725d1c89SSricharan Ramabadhran static const char * const wsis_reset_groups[] = { 510*725d1c89SSricharan Ramabadhran "gpio30", 511*725d1c89SSricharan Ramabadhran }; 512*725d1c89SSricharan Ramabadhran 513*725d1c89SSricharan Ramabadhran static const char * const blsp2_spi0_groups[] = { 514*725d1c89SSricharan Ramabadhran "gpio31", "gpio32", "gpio33", "gpio34", 515*725d1c89SSricharan Ramabadhran }; 516*725d1c89SSricharan Ramabadhran 517*725d1c89SSricharan Ramabadhran static const char * const blsp1_uart1_groups[] = { 518*725d1c89SSricharan Ramabadhran "gpio31", "gpio32", "gpio33", "gpio34", 519*725d1c89SSricharan Ramabadhran }; 520*725d1c89SSricharan Ramabadhran 521*725d1c89SSricharan Ramabadhran static const char * const blsp2_i2c0_groups[] = { 522*725d1c89SSricharan Ramabadhran "gpio33", "gpio34", 523*725d1c89SSricharan Ramabadhran }; 524*725d1c89SSricharan Ramabadhran 525*725d1c89SSricharan Ramabadhran static const char * const mdc_groups[] = { 526*725d1c89SSricharan Ramabadhran "gpio36", 527*725d1c89SSricharan Ramabadhran }; 528*725d1c89SSricharan Ramabadhran 529*725d1c89SSricharan Ramabadhran static const char * const wsi_clk3_groups[] = { 530*725d1c89SSricharan Ramabadhran "gpio36", 531*725d1c89SSricharan Ramabadhran }; 532*725d1c89SSricharan Ramabadhran 533*725d1c89SSricharan Ramabadhran static const char * const mdio_groups[] = { 534*725d1c89SSricharan Ramabadhran "gpio37", 535*725d1c89SSricharan Ramabadhran }; 536*725d1c89SSricharan Ramabadhran 537*725d1c89SSricharan Ramabadhran static const char * const wsi_data3_groups[] = { 538*725d1c89SSricharan Ramabadhran "gpio37", 539*725d1c89SSricharan Ramabadhran }; 540*725d1c89SSricharan Ramabadhran 541*725d1c89SSricharan Ramabadhran static const char * const qdss_traceclk_b_groups[] = { 542*725d1c89SSricharan Ramabadhran "gpio39", 543*725d1c89SSricharan Ramabadhran }; 544*725d1c89SSricharan Ramabadhran 545*725d1c89SSricharan Ramabadhran static const char * const reset_out_groups[] = { 546*725d1c89SSricharan Ramabadhran "gpio40", 547*725d1c89SSricharan Ramabadhran }; 548*725d1c89SSricharan Ramabadhran 549*725d1c89SSricharan Ramabadhran static const char * const qdss_tracectl_b_groups[] = { 550*725d1c89SSricharan Ramabadhran "gpio40", 551*725d1c89SSricharan Ramabadhran }; 552*725d1c89SSricharan Ramabadhran 553*725d1c89SSricharan Ramabadhran static const char * const pwm0_groups[] = { 554*725d1c89SSricharan Ramabadhran "gpio42", 555*725d1c89SSricharan Ramabadhran }; 556*725d1c89SSricharan Ramabadhran 557*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_out_b0_groups[] = { 558*725d1c89SSricharan Ramabadhran "gpio42", 559*725d1c89SSricharan Ramabadhran }; 560*725d1c89SSricharan Ramabadhran 561*725d1c89SSricharan Ramabadhran static const char * const pwm1_groups[] = { 562*725d1c89SSricharan Ramabadhran "gpio43", 563*725d1c89SSricharan Ramabadhran }; 564*725d1c89SSricharan Ramabadhran 565*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_in_b0_groups[] = { 566*725d1c89SSricharan Ramabadhran "gpio43", 567*725d1c89SSricharan Ramabadhran }; 568*725d1c89SSricharan Ramabadhran 569*725d1c89SSricharan Ramabadhran static const char * const pwm2_groups[] = { 570*725d1c89SSricharan Ramabadhran "gpio44", 571*725d1c89SSricharan Ramabadhran }; 572*725d1c89SSricharan Ramabadhran 573*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_out_b1_groups[] = { 574*725d1c89SSricharan Ramabadhran "gpio44", 575*725d1c89SSricharan Ramabadhran }; 576*725d1c89SSricharan Ramabadhran 577*725d1c89SSricharan Ramabadhran static const char * const pwm3_groups[] = { 578*725d1c89SSricharan Ramabadhran "gpio45", 579*725d1c89SSricharan Ramabadhran }; 580*725d1c89SSricharan Ramabadhran 581*725d1c89SSricharan Ramabadhran static const char * const qdss_cti_trig_in_b1_groups[] = { 582*725d1c89SSricharan Ramabadhran "gpio45", 583*725d1c89SSricharan Ramabadhran }; 584*725d1c89SSricharan Ramabadhran 585*725d1c89SSricharan Ramabadhran static const char * const led0_groups[] = { 586*725d1c89SSricharan Ramabadhran "gpio46", "gpio30", "gpio10", 587*725d1c89SSricharan Ramabadhran }; 588*725d1c89SSricharan Ramabadhran 589*725d1c89SSricharan Ramabadhran static const char * const led2_groups[] = { 590*725d1c89SSricharan Ramabadhran "gpio30", 591*725d1c89SSricharan Ramabadhran }; 592*725d1c89SSricharan Ramabadhran 593*725d1c89SSricharan Ramabadhran static const char * const gpio_groups[] = { 594*725d1c89SSricharan Ramabadhran "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", 595*725d1c89SSricharan Ramabadhran "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14", 596*725d1c89SSricharan Ramabadhran "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21", 597*725d1c89SSricharan Ramabadhran "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", 598*725d1c89SSricharan Ramabadhran "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35", 599*725d1c89SSricharan Ramabadhran "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42", 600*725d1c89SSricharan Ramabadhran "gpio43", "gpio44", "gpio45", "gpio46", 601*725d1c89SSricharan Ramabadhran }; 602*725d1c89SSricharan Ramabadhran 603*725d1c89SSricharan Ramabadhran static const struct pinfunction ipq5018_functions[] = { 604*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(atest_char), 605*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_pdm0), 606*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_pdm1), 607*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_rxbclk), 608*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_rxd), 609*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_rxfsync), 610*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_rxmclk), 611*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_txbclk), 612*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_txd), 613*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_txfsync), 614*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(audio_txmclk), 615*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp0_i2c), 616*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp0_spi), 617*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp0_uart0), 618*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp0_uart1), 619*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp1_i2c0), 620*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp1_i2c1), 621*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp1_spi0), 622*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp1_spi1), 623*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp1_uart0), 624*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp1_uart1), 625*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp1_uart2), 626*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp2_i2c0), 627*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp2_i2c1), 628*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp2_spi), 629*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp2_spi0), 630*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(blsp2_spi1), 631*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(btss), 632*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(burn0), 633*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(burn1), 634*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(cri_trng), 635*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(cri_trng0), 636*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(cri_trng1), 637*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(cxc_clk), 638*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(cxc_data), 639*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(dbg_out), 640*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(eud_gpio), 641*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(gcc_plltest), 642*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(gcc_tlmm), 643*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(gpio), 644*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(led0), 645*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(led2), 646*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(mac0), 647*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(mac1), 648*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(mdc), 649*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(mdio), 650*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pcie0_clk), 651*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pcie0_wake), 652*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pcie1_clk), 653*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pcie1_wake), 654*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pll_test), 655*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(prng_rosc), 656*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pwm0), 657*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pwm1), 658*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pwm2), 659*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(pwm3), 660*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_in_a0), 661*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_in_a1), 662*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_in_b0), 663*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_in_b1), 664*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_out_a0), 665*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_out_a1), 666*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_out_b0), 667*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_cti_trig_out_b1), 668*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_traceclk_a), 669*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_traceclk_b), 670*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_tracectl_a), 671*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_tracectl_b), 672*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_tracedata_a), 673*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qdss_tracedata_b), 674*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qspi_clk), 675*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qspi_cs), 676*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(qspi_data), 677*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(reset_out), 678*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(sdc1_clk), 679*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(sdc1_cmd), 680*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(sdc1_data), 681*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(wci_txd), 682*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(wci_rxd), 683*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(wsa_swrm), 684*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(wsi_clk3), 685*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(wsi_data3), 686*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(wsis_reset), 687*725d1c89SSricharan Ramabadhran MSM_PIN_FUNCTION(xfem), 688*725d1c89SSricharan Ramabadhran }; 689*725d1c89SSricharan Ramabadhran 690*725d1c89SSricharan Ramabadhran static const struct msm_pingroup ipq5018_groups[] = { 691*725d1c89SSricharan Ramabadhran PINGROUP(0, atest_char, _, qdss_cti_trig_out_a0, wci_txd, wci_rxd, xfem, _, _, _), 692*725d1c89SSricharan Ramabadhran PINGROUP(1, atest_char, _, qdss_cti_trig_in_a0, wci_txd, wci_rxd, xfem, _, _, _), 693*725d1c89SSricharan Ramabadhran PINGROUP(2, atest_char, _, qdss_cti_trig_out_a1, wci_txd, wci_rxd, xfem, _, _, _), 694*725d1c89SSricharan Ramabadhran PINGROUP(3, atest_char, _, qdss_cti_trig_in_a1, wci_txd, wci_rxd, xfem, _, _, _), 695*725d1c89SSricharan Ramabadhran PINGROUP(4, sdc1_data, qspi_data, blsp1_spi1, btss, dbg_out, qdss_traceclk_a, _, burn0, _), 696*725d1c89SSricharan Ramabadhran PINGROUP(5, sdc1_data, qspi_data, cxc_clk, blsp1_spi1, blsp1_i2c1, btss, _, qdss_tracectl_a, _), 697*725d1c89SSricharan Ramabadhran PINGROUP(6, sdc1_data, qspi_data, cxc_data, blsp1_spi1, blsp1_i2c1, btss, _, qdss_tracedata_a, _), 698*725d1c89SSricharan Ramabadhran PINGROUP(7, sdc1_data, qspi_data, mac0, blsp1_spi1, btss, _, qdss_tracedata_a, _, _), 699*725d1c89SSricharan Ramabadhran PINGROUP(8, sdc1_cmd, qspi_cs, mac1, btss, _, qdss_tracedata_a, _, _, _), 700*725d1c89SSricharan Ramabadhran PINGROUP(9, sdc1_clk, qspi_clk, _, qdss_tracedata_a, _, _, _, _, _), 701*725d1c89SSricharan Ramabadhran PINGROUP(10, blsp0_spi, blsp1_uart0, led0, gcc_plltest, qdss_tracedata_a, _, _, _, _), 702*725d1c89SSricharan Ramabadhran PINGROUP(11, blsp0_spi, blsp1_uart0, _, gcc_tlmm, qdss_tracedata_a, _, _, _, _), 703*725d1c89SSricharan Ramabadhran PINGROUP(12, blsp0_spi, blsp0_i2c, blsp1_uart0, _, gcc_plltest, qdss_tracedata_a, _, _, _), 704*725d1c89SSricharan Ramabadhran PINGROUP(13, blsp0_spi, blsp0_i2c, blsp1_uart0, _, qdss_tracedata_a, _, _, _, _), 705*725d1c89SSricharan Ramabadhran PINGROUP(14, pcie0_clk, _, _, cri_trng0, qdss_tracedata_a, _, _, _, _), 706*725d1c89SSricharan Ramabadhran PINGROUP(15, _, _, cri_trng1, qdss_tracedata_a, _, _, _, _, _), 707*725d1c89SSricharan Ramabadhran PINGROUP(16, pcie0_wake, _, _, cri_trng, qdss_tracedata_a, _, _, _, _), 708*725d1c89SSricharan Ramabadhran PINGROUP(17, pcie1_clk, btss, _, prng_rosc, qdss_tracedata_a, _, _, _, _), 709*725d1c89SSricharan Ramabadhran PINGROUP(18, blsp1_spi0, btss, _, qdss_tracedata_a, _, _, _, _, _), 710*725d1c89SSricharan Ramabadhran PINGROUP(19, pcie1_wake, blsp1_spi0, blsp1_i2c0, btss, _, qdss_tracedata_a, _, _, _), 711*725d1c89SSricharan Ramabadhran PINGROUP(20, blsp0_uart0, blsp1_spi0, blsp1_i2c0, _, qdss_tracedata_a, _, _, _, _), 712*725d1c89SSricharan Ramabadhran PINGROUP(21, blsp0_uart0, blsp1_spi0, _, qdss_tracedata_a, _, _, _, _, _), 713*725d1c89SSricharan Ramabadhran PINGROUP(22, _, pll_test, eud_gpio, _, _, _, _, _, _), 714*725d1c89SSricharan Ramabadhran PINGROUP(23, audio_rxmclk, audio_pdm0, audio_rxmclk, blsp2_spi1, blsp1_uart2, btss, _, qdss_tracedata_b, _), 715*725d1c89SSricharan Ramabadhran PINGROUP(24, audio_rxbclk, audio_pdm0, blsp2_spi1, blsp1_uart2, btss, _, qdss_tracedata_b, _, _), 716*725d1c89SSricharan Ramabadhran PINGROUP(25, audio_rxfsync, audio_pdm1, blsp2_i2c1, blsp2_spi1, blsp1_uart2, btss, _, qdss_tracedata_b, _), 717*725d1c89SSricharan Ramabadhran PINGROUP(26, audio_rxd, audio_pdm1, blsp2_i2c1, blsp2_spi1, blsp1_uart2, btss, _, qdss_tracedata_b, _), 718*725d1c89SSricharan Ramabadhran PINGROUP(27, audio_txmclk, wsa_swrm, audio_txmclk, blsp2_spi, btss, _, qdss_tracedata_b, _, _), 719*725d1c89SSricharan Ramabadhran PINGROUP(28, audio_txbclk, wsa_swrm, blsp0_uart1, btss, qdss_tracedata_b, _, _, _, _), 720*725d1c89SSricharan Ramabadhran PINGROUP(29, audio_txfsync, _, blsp0_uart1, _, qdss_tracedata_b, _, _, _, _), 721*725d1c89SSricharan Ramabadhran PINGROUP(30, audio_txd, led2, led0, _, _, _, _, _, _), 722*725d1c89SSricharan Ramabadhran PINGROUP(31, blsp2_spi0, blsp1_uart1, _, qdss_tracedata_b, eud_gpio, _, _, _, _), 723*725d1c89SSricharan Ramabadhran PINGROUP(32, blsp2_spi0, blsp1_uart1, _, qdss_tracedata_b, eud_gpio, _, _, _, _), 724*725d1c89SSricharan Ramabadhran PINGROUP(33, blsp2_i2c0, blsp2_spi0, blsp1_uart1, _, qdss_tracedata_b, eud_gpio, _, _, _), 725*725d1c89SSricharan Ramabadhran PINGROUP(34, blsp2_i2c0, blsp2_spi0, blsp1_uart1, _, qdss_tracedata_b, eud_gpio, _, _, _), 726*725d1c89SSricharan Ramabadhran PINGROUP(35, _, qdss_tracedata_b, eud_gpio, _, _, _, _, _, _), 727*725d1c89SSricharan Ramabadhran PINGROUP(36, mdc, qdss_tracedata_b, _, wsi_clk3, _, _, _, _, _), 728*725d1c89SSricharan Ramabadhran PINGROUP(37, mdio, atest_char, qdss_tracedata_b, _, wsi_data3, _, _, _, _), 729*725d1c89SSricharan Ramabadhran PINGROUP(38, qdss_tracedata_b, _, _, _, _, _, _, _, _), 730*725d1c89SSricharan Ramabadhran PINGROUP(39, qdss_traceclk_b, _, _, _, _, _, _, _, _), 731*725d1c89SSricharan Ramabadhran PINGROUP(40, reset_out, qdss_tracectl_b, _, _, _, _, _, _, _), 732*725d1c89SSricharan Ramabadhran PINGROUP(41, _, _, _, _, _, _, _, _, _), 733*725d1c89SSricharan Ramabadhran PINGROUP(42, pwm0, qdss_cti_trig_out_b0, wci_txd, wci_rxd, xfem, _, _, _, _), 734*725d1c89SSricharan Ramabadhran PINGROUP(43, pwm1, qdss_cti_trig_in_b0, wci_txd, wci_rxd, xfem, _, _, _, _), 735*725d1c89SSricharan Ramabadhran PINGROUP(44, pwm2, qdss_cti_trig_out_b1, wci_txd, wci_rxd, xfem, _, _, _, _), 736*725d1c89SSricharan Ramabadhran PINGROUP(45, pwm3, qdss_cti_trig_in_b1, wci_txd, wci_rxd, xfem, _, _, _, _), 737*725d1c89SSricharan Ramabadhran PINGROUP(46, led0, _, _, _, _, _, _, _, _), 738*725d1c89SSricharan Ramabadhran }; 739*725d1c89SSricharan Ramabadhran 740*725d1c89SSricharan Ramabadhran static const struct msm_pinctrl_soc_data ipq5018_pinctrl = { 741*725d1c89SSricharan Ramabadhran .pins = ipq5018_pins, 742*725d1c89SSricharan Ramabadhran .npins = ARRAY_SIZE(ipq5018_pins), 743*725d1c89SSricharan Ramabadhran .functions = ipq5018_functions, 744*725d1c89SSricharan Ramabadhran .nfunctions = ARRAY_SIZE(ipq5018_functions), 745*725d1c89SSricharan Ramabadhran .groups = ipq5018_groups, 746*725d1c89SSricharan Ramabadhran .ngroups = ARRAY_SIZE(ipq5018_groups), 747*725d1c89SSricharan Ramabadhran .ngpios = 47, 748*725d1c89SSricharan Ramabadhran }; 749*725d1c89SSricharan Ramabadhran 750*725d1c89SSricharan Ramabadhran static int ipq5018_pinctrl_probe(struct platform_device *pdev) 751*725d1c89SSricharan Ramabadhran { 752*725d1c89SSricharan Ramabadhran return msm_pinctrl_probe(pdev, &ipq5018_pinctrl); 753*725d1c89SSricharan Ramabadhran } 754*725d1c89SSricharan Ramabadhran 755*725d1c89SSricharan Ramabadhran static const struct of_device_id ipq5018_pinctrl_of_match[] = { 756*725d1c89SSricharan Ramabadhran { .compatible = "qcom,ipq5018-tlmm", }, 757*725d1c89SSricharan Ramabadhran { } 758*725d1c89SSricharan Ramabadhran }; 759*725d1c89SSricharan Ramabadhran MODULE_DEVICE_TABLE(of, ipq5018_pinctrl_of_match); 760*725d1c89SSricharan Ramabadhran 761*725d1c89SSricharan Ramabadhran static struct platform_driver ipq5018_pinctrl_driver = { 762*725d1c89SSricharan Ramabadhran .driver = { 763*725d1c89SSricharan Ramabadhran .name = "ipq5018-tlmm", 764*725d1c89SSricharan Ramabadhran .of_match_table = ipq5018_pinctrl_of_match, 765*725d1c89SSricharan Ramabadhran }, 766*725d1c89SSricharan Ramabadhran .probe = ipq5018_pinctrl_probe, 767*725d1c89SSricharan Ramabadhran .remove = msm_pinctrl_remove, 768*725d1c89SSricharan Ramabadhran }; 769*725d1c89SSricharan Ramabadhran 770*725d1c89SSricharan Ramabadhran static int __init ipq5018_pinctrl_init(void) 771*725d1c89SSricharan Ramabadhran { 772*725d1c89SSricharan Ramabadhran return platform_driver_register(&ipq5018_pinctrl_driver); 773*725d1c89SSricharan Ramabadhran } 774*725d1c89SSricharan Ramabadhran arch_initcall(ipq5018_pinctrl_init); 775*725d1c89SSricharan Ramabadhran 776*725d1c89SSricharan Ramabadhran static void __exit ipq5018_pinctrl_exit(void) 777*725d1c89SSricharan Ramabadhran { 778*725d1c89SSricharan Ramabadhran platform_driver_unregister(&ipq5018_pinctrl_driver); 779*725d1c89SSricharan Ramabadhran } 780*725d1c89SSricharan Ramabadhran module_exit(ipq5018_pinctrl_exit); 781*725d1c89SSricharan Ramabadhran 782*725d1c89SSricharan Ramabadhran MODULE_DESCRIPTION("Qualcomm Technologies Inc ipq5018 pinctrl driver"); 783*725d1c89SSricharan Ramabadhran MODULE_LICENSE("GPL"); 784