Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * Copyright (c) 2018, The Linux Foundation. All rights reserved.
0004  */
0005 
0006 #include <linux/module.h>
0007 #include <linux/of.h>
0008 #include <linux/platform_device.h>
0009 #include <linux/pinctrl/pinctrl.h>
0010 
0011 #include "pinctrl-msm.h"
0012 
0013 static const char * const qcs404_tiles[] = {
0014     "north",
0015     "south",
0016     "east"
0017 };
0018 
0019 enum {
0020     NORTH,
0021     SOUTH,
0022     EAST
0023 };
0024 
0025 #define FUNCTION(fname)                 \
0026     [msm_mux_##fname] = {               \
0027         .name = #fname,             \
0028         .groups = fname##_groups,       \
0029         .ngroups = ARRAY_SIZE(fname##_groups),  \
0030     }
0031 
0032 #define PINGROUP(id, _tile, f1, f2, f3, f4, f5, f6, f7, f8, f9) \
0033     {                       \
0034         .name = "gpio" #id,         \
0035         .pins = gpio##id##_pins,        \
0036         .npins = (unsigned int)ARRAY_SIZE(gpio##id##_pins), \
0037         .funcs = (int[]){           \
0038             msm_mux_gpio, /* gpio mode */   \
0039             msm_mux_##f1,           \
0040             msm_mux_##f2,           \
0041             msm_mux_##f3,           \
0042             msm_mux_##f4,           \
0043             msm_mux_##f5,           \
0044             msm_mux_##f6,           \
0045             msm_mux_##f7,           \
0046             msm_mux_##f8,           \
0047             msm_mux_##f9            \
0048         },                  \
0049         .nfuncs = 10,               \
0050         .ctl_reg = 0x1000 * id,     \
0051         .io_reg = 0x1000 * id + 0x4,        \
0052         .intr_cfg_reg = 0x1000 * id + 0x8,  \
0053         .intr_status_reg = 0x1000 * id + 0xc,   \
0054         .intr_target_reg = 0x1000 * id + 0x8,   \
0055         .tile = _tile,          \
0056         .mux_bit = 2,           \
0057         .pull_bit = 0,          \
0058         .drv_bit = 6,           \
0059         .oe_bit = 9,            \
0060         .in_bit = 0,            \
0061         .out_bit = 1,           \
0062         .intr_enable_bit = 0,       \
0063         .intr_status_bit = 0,       \
0064         .intr_target_bit = 5,       \
0065         .intr_target_kpss_val = 4,  \
0066         .intr_raw_status_bit = 4,   \
0067         .intr_polarity_bit = 1,     \
0068         .intr_detection_bit = 2,    \
0069         .intr_detection_width = 2,  \
0070     }
0071 
0072 #define SDC_QDSD_PINGROUP(pg_name, ctl, pull, drv)  \
0073     {                       \
0074         .name = #pg_name,           \
0075         .pins = pg_name##_pins,         \
0076         .npins = (unsigned int)ARRAY_SIZE(pg_name##_pins),  \
0077         .ctl_reg = ctl,             \
0078         .io_reg = 0,                \
0079         .intr_cfg_reg = 0,          \
0080         .intr_status_reg = 0,           \
0081         .intr_target_reg = 0,           \
0082         .tile = SOUTH,              \
0083         .mux_bit = -1,              \
0084         .pull_bit = pull,           \
0085         .drv_bit = drv,             \
0086         .oe_bit = -1,               \
0087         .in_bit = -1,               \
0088         .out_bit = -1,              \
0089         .intr_enable_bit = -1,          \
0090         .intr_status_bit = -1,          \
0091         .intr_target_bit = -1,          \
0092         .intr_raw_status_bit = -1,      \
0093         .intr_polarity_bit = -1,        \
0094         .intr_detection_bit = -1,       \
0095         .intr_detection_width = -1,     \
0096     }
0097 
0098 static const struct pinctrl_pin_desc qcs404_pins[] = {
0099     PINCTRL_PIN(0, "GPIO_0"),
0100     PINCTRL_PIN(1, "GPIO_1"),
0101     PINCTRL_PIN(2, "GPIO_2"),
0102     PINCTRL_PIN(3, "GPIO_3"),
0103     PINCTRL_PIN(4, "GPIO_4"),
0104     PINCTRL_PIN(5, "GPIO_5"),
0105     PINCTRL_PIN(6, "GPIO_6"),
0106     PINCTRL_PIN(7, "GPIO_7"),
0107     PINCTRL_PIN(8, "GPIO_8"),
0108     PINCTRL_PIN(9, "GPIO_9"),
0109     PINCTRL_PIN(10, "GPIO_10"),
0110     PINCTRL_PIN(11, "GPIO_11"),
0111     PINCTRL_PIN(12, "GPIO_12"),
0112     PINCTRL_PIN(13, "GPIO_13"),
0113     PINCTRL_PIN(14, "GPIO_14"),
0114     PINCTRL_PIN(15, "GPIO_15"),
0115     PINCTRL_PIN(16, "GPIO_16"),
0116     PINCTRL_PIN(17, "GPIO_17"),
0117     PINCTRL_PIN(18, "GPIO_18"),
0118     PINCTRL_PIN(19, "GPIO_19"),
0119     PINCTRL_PIN(20, "GPIO_20"),
0120     PINCTRL_PIN(21, "GPIO_21"),
0121     PINCTRL_PIN(22, "GPIO_22"),
0122     PINCTRL_PIN(23, "GPIO_23"),
0123     PINCTRL_PIN(24, "GPIO_24"),
0124     PINCTRL_PIN(25, "GPIO_25"),
0125     PINCTRL_PIN(26, "GPIO_26"),
0126     PINCTRL_PIN(27, "GPIO_27"),
0127     PINCTRL_PIN(28, "GPIO_28"),
0128     PINCTRL_PIN(29, "GPIO_29"),
0129     PINCTRL_PIN(30, "GPIO_30"),
0130     PINCTRL_PIN(31, "GPIO_31"),
0131     PINCTRL_PIN(32, "GPIO_32"),
0132     PINCTRL_PIN(33, "GPIO_33"),
0133     PINCTRL_PIN(34, "GPIO_34"),
0134     PINCTRL_PIN(35, "GPIO_35"),
0135     PINCTRL_PIN(36, "GPIO_36"),
0136     PINCTRL_PIN(37, "GPIO_37"),
0137     PINCTRL_PIN(38, "GPIO_38"),
0138     PINCTRL_PIN(39, "GPIO_39"),
0139     PINCTRL_PIN(40, "GPIO_40"),
0140     PINCTRL_PIN(41, "GPIO_41"),
0141     PINCTRL_PIN(42, "GPIO_42"),
0142     PINCTRL_PIN(43, "GPIO_43"),
0143     PINCTRL_PIN(44, "GPIO_44"),
0144     PINCTRL_PIN(45, "GPIO_45"),
0145     PINCTRL_PIN(46, "GPIO_46"),
0146     PINCTRL_PIN(47, "GPIO_47"),
0147     PINCTRL_PIN(48, "GPIO_48"),
0148     PINCTRL_PIN(49, "GPIO_49"),
0149     PINCTRL_PIN(50, "GPIO_50"),
0150     PINCTRL_PIN(51, "GPIO_51"),
0151     PINCTRL_PIN(52, "GPIO_52"),
0152     PINCTRL_PIN(53, "GPIO_53"),
0153     PINCTRL_PIN(54, "GPIO_54"),
0154     PINCTRL_PIN(55, "GPIO_55"),
0155     PINCTRL_PIN(56, "GPIO_56"),
0156     PINCTRL_PIN(57, "GPIO_57"),
0157     PINCTRL_PIN(58, "GPIO_58"),
0158     PINCTRL_PIN(59, "GPIO_59"),
0159     PINCTRL_PIN(60, "GPIO_60"),
0160     PINCTRL_PIN(61, "GPIO_61"),
0161     PINCTRL_PIN(62, "GPIO_62"),
0162     PINCTRL_PIN(63, "GPIO_63"),
0163     PINCTRL_PIN(64, "GPIO_64"),
0164     PINCTRL_PIN(65, "GPIO_65"),
0165     PINCTRL_PIN(66, "GPIO_66"),
0166     PINCTRL_PIN(67, "GPIO_67"),
0167     PINCTRL_PIN(68, "GPIO_68"),
0168     PINCTRL_PIN(69, "GPIO_69"),
0169     PINCTRL_PIN(70, "GPIO_70"),
0170     PINCTRL_PIN(71, "GPIO_71"),
0171     PINCTRL_PIN(72, "GPIO_72"),
0172     PINCTRL_PIN(73, "GPIO_73"),
0173     PINCTRL_PIN(74, "GPIO_74"),
0174     PINCTRL_PIN(75, "GPIO_75"),
0175     PINCTRL_PIN(76, "GPIO_76"),
0176     PINCTRL_PIN(77, "GPIO_77"),
0177     PINCTRL_PIN(78, "GPIO_78"),
0178     PINCTRL_PIN(79, "GPIO_79"),
0179     PINCTRL_PIN(80, "GPIO_80"),
0180     PINCTRL_PIN(81, "GPIO_81"),
0181     PINCTRL_PIN(82, "GPIO_82"),
0182     PINCTRL_PIN(83, "GPIO_83"),
0183     PINCTRL_PIN(84, "GPIO_84"),
0184     PINCTRL_PIN(85, "GPIO_85"),
0185     PINCTRL_PIN(86, "GPIO_86"),
0186     PINCTRL_PIN(87, "GPIO_87"),
0187     PINCTRL_PIN(88, "GPIO_88"),
0188     PINCTRL_PIN(89, "GPIO_89"),
0189     PINCTRL_PIN(90, "GPIO_90"),
0190     PINCTRL_PIN(91, "GPIO_91"),
0191     PINCTRL_PIN(92, "GPIO_92"),
0192     PINCTRL_PIN(93, "GPIO_93"),
0193     PINCTRL_PIN(94, "GPIO_94"),
0194     PINCTRL_PIN(95, "GPIO_95"),
0195     PINCTRL_PIN(96, "GPIO_96"),
0196     PINCTRL_PIN(97, "GPIO_97"),
0197     PINCTRL_PIN(98, "GPIO_98"),
0198     PINCTRL_PIN(99, "GPIO_99"),
0199     PINCTRL_PIN(100, "GPIO_100"),
0200     PINCTRL_PIN(101, "GPIO_101"),
0201     PINCTRL_PIN(102, "GPIO_102"),
0202     PINCTRL_PIN(103, "GPIO_103"),
0203     PINCTRL_PIN(104, "GPIO_104"),
0204     PINCTRL_PIN(105, "GPIO_105"),
0205     PINCTRL_PIN(106, "GPIO_106"),
0206     PINCTRL_PIN(107, "GPIO_107"),
0207     PINCTRL_PIN(108, "GPIO_108"),
0208     PINCTRL_PIN(109, "GPIO_109"),
0209     PINCTRL_PIN(110, "GPIO_110"),
0210     PINCTRL_PIN(111, "GPIO_111"),
0211     PINCTRL_PIN(112, "GPIO_112"),
0212     PINCTRL_PIN(113, "GPIO_113"),
0213     PINCTRL_PIN(114, "GPIO_114"),
0214     PINCTRL_PIN(115, "GPIO_115"),
0215     PINCTRL_PIN(116, "GPIO_116"),
0216     PINCTRL_PIN(117, "GPIO_117"),
0217     PINCTRL_PIN(118, "GPIO_118"),
0218     PINCTRL_PIN(119, "GPIO_119"),
0219     PINCTRL_PIN(120, "SDC1_RCLK"),
0220     PINCTRL_PIN(121, "SDC1_CLK"),
0221     PINCTRL_PIN(122, "SDC1_CMD"),
0222     PINCTRL_PIN(123, "SDC1_DATA"),
0223     PINCTRL_PIN(124, "SDC2_CLK"),
0224     PINCTRL_PIN(125, "SDC2_CMD"),
0225     PINCTRL_PIN(126, "SDC2_DATA"),
0226 };
0227 
0228 #define DECLARE_MSM_GPIO_PINS(pin) \
0229     static const unsigned int gpio##pin##_pins[] = { pin }
0230 DECLARE_MSM_GPIO_PINS(0);
0231 DECLARE_MSM_GPIO_PINS(1);
0232 DECLARE_MSM_GPIO_PINS(2);
0233 DECLARE_MSM_GPIO_PINS(3);
0234 DECLARE_MSM_GPIO_PINS(4);
0235 DECLARE_MSM_GPIO_PINS(5);
0236 DECLARE_MSM_GPIO_PINS(6);
0237 DECLARE_MSM_GPIO_PINS(7);
0238 DECLARE_MSM_GPIO_PINS(8);
0239 DECLARE_MSM_GPIO_PINS(9);
0240 DECLARE_MSM_GPIO_PINS(10);
0241 DECLARE_MSM_GPIO_PINS(11);
0242 DECLARE_MSM_GPIO_PINS(12);
0243 DECLARE_MSM_GPIO_PINS(13);
0244 DECLARE_MSM_GPIO_PINS(14);
0245 DECLARE_MSM_GPIO_PINS(15);
0246 DECLARE_MSM_GPIO_PINS(16);
0247 DECLARE_MSM_GPIO_PINS(17);
0248 DECLARE_MSM_GPIO_PINS(18);
0249 DECLARE_MSM_GPIO_PINS(19);
0250 DECLARE_MSM_GPIO_PINS(20);
0251 DECLARE_MSM_GPIO_PINS(21);
0252 DECLARE_MSM_GPIO_PINS(22);
0253 DECLARE_MSM_GPIO_PINS(23);
0254 DECLARE_MSM_GPIO_PINS(24);
0255 DECLARE_MSM_GPIO_PINS(25);
0256 DECLARE_MSM_GPIO_PINS(26);
0257 DECLARE_MSM_GPIO_PINS(27);
0258 DECLARE_MSM_GPIO_PINS(28);
0259 DECLARE_MSM_GPIO_PINS(29);
0260 DECLARE_MSM_GPIO_PINS(30);
0261 DECLARE_MSM_GPIO_PINS(31);
0262 DECLARE_MSM_GPIO_PINS(32);
0263 DECLARE_MSM_GPIO_PINS(33);
0264 DECLARE_MSM_GPIO_PINS(34);
0265 DECLARE_MSM_GPIO_PINS(35);
0266 DECLARE_MSM_GPIO_PINS(36);
0267 DECLARE_MSM_GPIO_PINS(37);
0268 DECLARE_MSM_GPIO_PINS(38);
0269 DECLARE_MSM_GPIO_PINS(39);
0270 DECLARE_MSM_GPIO_PINS(40);
0271 DECLARE_MSM_GPIO_PINS(41);
0272 DECLARE_MSM_GPIO_PINS(42);
0273 DECLARE_MSM_GPIO_PINS(43);
0274 DECLARE_MSM_GPIO_PINS(44);
0275 DECLARE_MSM_GPIO_PINS(45);
0276 DECLARE_MSM_GPIO_PINS(46);
0277 DECLARE_MSM_GPIO_PINS(47);
0278 DECLARE_MSM_GPIO_PINS(48);
0279 DECLARE_MSM_GPIO_PINS(49);
0280 DECLARE_MSM_GPIO_PINS(50);
0281 DECLARE_MSM_GPIO_PINS(51);
0282 DECLARE_MSM_GPIO_PINS(52);
0283 DECLARE_MSM_GPIO_PINS(53);
0284 DECLARE_MSM_GPIO_PINS(54);
0285 DECLARE_MSM_GPIO_PINS(55);
0286 DECLARE_MSM_GPIO_PINS(56);
0287 DECLARE_MSM_GPIO_PINS(57);
0288 DECLARE_MSM_GPIO_PINS(58);
0289 DECLARE_MSM_GPIO_PINS(59);
0290 DECLARE_MSM_GPIO_PINS(60);
0291 DECLARE_MSM_GPIO_PINS(61);
0292 DECLARE_MSM_GPIO_PINS(62);
0293 DECLARE_MSM_GPIO_PINS(63);
0294 DECLARE_MSM_GPIO_PINS(64);
0295 DECLARE_MSM_GPIO_PINS(65);
0296 DECLARE_MSM_GPIO_PINS(66);
0297 DECLARE_MSM_GPIO_PINS(67);
0298 DECLARE_MSM_GPIO_PINS(68);
0299 DECLARE_MSM_GPIO_PINS(69);
0300 DECLARE_MSM_GPIO_PINS(70);
0301 DECLARE_MSM_GPIO_PINS(71);
0302 DECLARE_MSM_GPIO_PINS(72);
0303 DECLARE_MSM_GPIO_PINS(73);
0304 DECLARE_MSM_GPIO_PINS(74);
0305 DECLARE_MSM_GPIO_PINS(75);
0306 DECLARE_MSM_GPIO_PINS(76);
0307 DECLARE_MSM_GPIO_PINS(77);
0308 DECLARE_MSM_GPIO_PINS(78);
0309 DECLARE_MSM_GPIO_PINS(79);
0310 DECLARE_MSM_GPIO_PINS(80);
0311 DECLARE_MSM_GPIO_PINS(81);
0312 DECLARE_MSM_GPIO_PINS(82);
0313 DECLARE_MSM_GPIO_PINS(83);
0314 DECLARE_MSM_GPIO_PINS(84);
0315 DECLARE_MSM_GPIO_PINS(85);
0316 DECLARE_MSM_GPIO_PINS(86);
0317 DECLARE_MSM_GPIO_PINS(87);
0318 DECLARE_MSM_GPIO_PINS(88);
0319 DECLARE_MSM_GPIO_PINS(89);
0320 DECLARE_MSM_GPIO_PINS(90);
0321 DECLARE_MSM_GPIO_PINS(91);
0322 DECLARE_MSM_GPIO_PINS(92);
0323 DECLARE_MSM_GPIO_PINS(93);
0324 DECLARE_MSM_GPIO_PINS(94);
0325 DECLARE_MSM_GPIO_PINS(95);
0326 DECLARE_MSM_GPIO_PINS(96);
0327 DECLARE_MSM_GPIO_PINS(97);
0328 DECLARE_MSM_GPIO_PINS(98);
0329 DECLARE_MSM_GPIO_PINS(99);
0330 DECLARE_MSM_GPIO_PINS(100);
0331 DECLARE_MSM_GPIO_PINS(101);
0332 DECLARE_MSM_GPIO_PINS(102);
0333 DECLARE_MSM_GPIO_PINS(103);
0334 DECLARE_MSM_GPIO_PINS(104);
0335 DECLARE_MSM_GPIO_PINS(105);
0336 DECLARE_MSM_GPIO_PINS(106);
0337 DECLARE_MSM_GPIO_PINS(107);
0338 DECLARE_MSM_GPIO_PINS(108);
0339 DECLARE_MSM_GPIO_PINS(109);
0340 DECLARE_MSM_GPIO_PINS(110);
0341 DECLARE_MSM_GPIO_PINS(111);
0342 DECLARE_MSM_GPIO_PINS(112);
0343 DECLARE_MSM_GPIO_PINS(113);
0344 DECLARE_MSM_GPIO_PINS(114);
0345 DECLARE_MSM_GPIO_PINS(115);
0346 DECLARE_MSM_GPIO_PINS(116);
0347 DECLARE_MSM_GPIO_PINS(117);
0348 DECLARE_MSM_GPIO_PINS(118);
0349 DECLARE_MSM_GPIO_PINS(119);
0350 
0351 static const unsigned int sdc1_rclk_pins[] = { 120 };
0352 static const unsigned int sdc1_clk_pins[] = { 121 };
0353 static const unsigned int sdc1_cmd_pins[] = { 122 };
0354 static const unsigned int sdc1_data_pins[] = { 123 };
0355 static const unsigned int sdc2_clk_pins[] = { 124 };
0356 static const unsigned int sdc2_cmd_pins[] = { 125 };
0357 static const unsigned int sdc2_data_pins[] = { 126 };
0358 
0359 enum qcs404_functions {
0360     msm_mux_gpio,
0361     msm_mux_hdmi_tx,
0362     msm_mux_hdmi_ddc,
0363     msm_mux_blsp_uart_tx_a2,
0364     msm_mux_blsp_spi2,
0365     msm_mux_m_voc,
0366     msm_mux_qdss_cti_trig_in_a0,
0367     msm_mux_blsp_uart_rx_a2,
0368     msm_mux_qdss_tracectl_a,
0369     msm_mux_blsp_uart2,
0370     msm_mux_aud_cdc,
0371     msm_mux_blsp_i2c_sda_a2,
0372     msm_mux_qdss_tracedata_a,
0373     msm_mux_blsp_i2c_scl_a2,
0374     msm_mux_qdss_tracectl_b,
0375     msm_mux_qdss_cti_trig_in_b0,
0376     msm_mux_blsp_uart1,
0377     msm_mux_blsp_spi_mosi_a1,
0378     msm_mux_blsp_spi_miso_a1,
0379     msm_mux_qdss_tracedata_b,
0380     msm_mux_blsp_i2c1,
0381     msm_mux_blsp_spi_cs_n_a1,
0382     msm_mux_gcc_plltest,
0383     msm_mux_blsp_spi_clk_a1,
0384     msm_mux_rgb_data0,
0385     msm_mux_blsp_uart5,
0386     msm_mux_blsp_spi5,
0387     msm_mux_adsp_ext,
0388     msm_mux_rgb_data1,
0389     msm_mux_prng_rosc,
0390     msm_mux_rgb_data2,
0391     msm_mux_blsp_i2c5,
0392     msm_mux_gcc_gp1_clk_b,
0393     msm_mux_rgb_data3,
0394     msm_mux_gcc_gp2_clk_b,
0395     msm_mux_blsp_spi0,
0396     msm_mux_blsp_uart0,
0397     msm_mux_gcc_gp3_clk_b,
0398     msm_mux_blsp_i2c0,
0399     msm_mux_qdss_traceclk_b,
0400     msm_mux_pcie_clk,
0401     msm_mux_nfc_irq,
0402     msm_mux_blsp_spi4,
0403     msm_mux_nfc_dwl,
0404     msm_mux_audio_ts,
0405     msm_mux_rgb_data4,
0406     msm_mux_spi_lcd,
0407     msm_mux_blsp_uart_tx_b2,
0408     msm_mux_gcc_gp3_clk_a,
0409     msm_mux_rgb_data5,
0410     msm_mux_blsp_uart_rx_b2,
0411     msm_mux_blsp_i2c_sda_b2,
0412     msm_mux_blsp_i2c_scl_b2,
0413     msm_mux_pwm_led11,
0414     msm_mux_i2s_3_data0_a,
0415     msm_mux_ebi2_lcd,
0416     msm_mux_i2s_3_data1_a,
0417     msm_mux_i2s_3_data2_a,
0418     msm_mux_atest_char,
0419     msm_mux_pwm_led3,
0420     msm_mux_i2s_3_data3_a,
0421     msm_mux_pwm_led4,
0422     msm_mux_i2s_4,
0423     msm_mux_ebi2_a,
0424     msm_mux_dsd_clk_b,
0425     msm_mux_pwm_led5,
0426     msm_mux_pwm_led6,
0427     msm_mux_pwm_led7,
0428     msm_mux_pwm_led8,
0429     msm_mux_pwm_led24,
0430     msm_mux_spkr_dac0,
0431     msm_mux_blsp_i2c4,
0432     msm_mux_pwm_led9,
0433     msm_mux_pwm_led10,
0434     msm_mux_spdifrx_opt,
0435     msm_mux_pwm_led12,
0436     msm_mux_pwm_led13,
0437     msm_mux_pwm_led14,
0438     msm_mux_wlan1_adc1,
0439     msm_mux_rgb_data_b0,
0440     msm_mux_pwm_led15,
0441     msm_mux_blsp_spi_mosi_b1,
0442     msm_mux_wlan1_adc0,
0443     msm_mux_rgb_data_b1,
0444     msm_mux_pwm_led16,
0445     msm_mux_blsp_spi_miso_b1,
0446     msm_mux_qdss_cti_trig_out_b0,
0447     msm_mux_wlan2_adc1,
0448     msm_mux_rgb_data_b2,
0449     msm_mux_pwm_led17,
0450     msm_mux_blsp_spi_cs_n_b1,
0451     msm_mux_wlan2_adc0,
0452     msm_mux_rgb_data_b3,
0453     msm_mux_pwm_led18,
0454     msm_mux_blsp_spi_clk_b1,
0455     msm_mux_rgb_data_b4,
0456     msm_mux_pwm_led19,
0457     msm_mux_ext_mclk1_b,
0458     msm_mux_qdss_traceclk_a,
0459     msm_mux_rgb_data_b5,
0460     msm_mux_pwm_led20,
0461     msm_mux_atest_char3,
0462     msm_mux_i2s_3_sck_b,
0463     msm_mux_ldo_update,
0464     msm_mux_bimc_dte0,
0465     msm_mux_rgb_hsync,
0466     msm_mux_pwm_led21,
0467     msm_mux_i2s_3_ws_b,
0468     msm_mux_dbg_out,
0469     msm_mux_rgb_vsync,
0470     msm_mux_i2s_3_data0_b,
0471     msm_mux_ldo_en,
0472     msm_mux_hdmi_dtest,
0473     msm_mux_rgb_de,
0474     msm_mux_i2s_3_data1_b,
0475     msm_mux_hdmi_lbk9,
0476     msm_mux_rgb_clk,
0477     msm_mux_atest_char1,
0478     msm_mux_i2s_3_data2_b,
0479     msm_mux_ebi_cdc,
0480     msm_mux_hdmi_lbk8,
0481     msm_mux_rgb_mdp,
0482     msm_mux_atest_char0,
0483     msm_mux_i2s_3_data3_b,
0484     msm_mux_hdmi_lbk7,
0485     msm_mux_rgb_data_b6,
0486     msm_mux_rgb_data_b7,
0487     msm_mux_hdmi_lbk6,
0488     msm_mux_rgmii_int,
0489     msm_mux_cri_trng1,
0490     msm_mux_rgmii_wol,
0491     msm_mux_cri_trng0,
0492     msm_mux_gcc_tlmm,
0493     msm_mux_rgmii_ck,
0494     msm_mux_rgmii_tx,
0495     msm_mux_hdmi_lbk5,
0496     msm_mux_hdmi_pixel,
0497     msm_mux_hdmi_rcv,
0498     msm_mux_hdmi_lbk4,
0499     msm_mux_rgmii_ctl,
0500     msm_mux_ext_lpass,
0501     msm_mux_rgmii_rx,
0502     msm_mux_cri_trng,
0503     msm_mux_hdmi_lbk3,
0504     msm_mux_hdmi_lbk2,
0505     msm_mux_qdss_cti_trig_out_b1,
0506     msm_mux_rgmii_mdio,
0507     msm_mux_hdmi_lbk1,
0508     msm_mux_rgmii_mdc,
0509     msm_mux_hdmi_lbk0,
0510     msm_mux_ir_in,
0511     msm_mux_wsa_en,
0512     msm_mux_rgb_data6,
0513     msm_mux_rgb_data7,
0514     msm_mux_atest_char2,
0515     msm_mux_ebi_ch0,
0516     msm_mux_blsp_uart3,
0517     msm_mux_blsp_spi3,
0518     msm_mux_sd_write,
0519     msm_mux_blsp_i2c3,
0520     msm_mux_gcc_gp1_clk_a,
0521     msm_mux_qdss_cti_trig_in_b1,
0522     msm_mux_gcc_gp2_clk_a,
0523     msm_mux_ext_mclk0,
0524     msm_mux_mclk_in1,
0525     msm_mux_i2s_1,
0526     msm_mux_dsd_clk_a,
0527     msm_mux_qdss_cti_trig_in_a1,
0528     msm_mux_rgmi_dll1,
0529     msm_mux_pwm_led22,
0530     msm_mux_pwm_led23,
0531     msm_mux_qdss_cti_trig_out_a0,
0532     msm_mux_rgmi_dll2,
0533     msm_mux_pwm_led1,
0534     msm_mux_qdss_cti_trig_out_a1,
0535     msm_mux_pwm_led2,
0536     msm_mux_i2s_2,
0537     msm_mux_pll_bist,
0538     msm_mux_ext_mclk1_a,
0539     msm_mux_mclk_in2,
0540     msm_mux_bimc_dte1,
0541     msm_mux_i2s_3_sck_a,
0542     msm_mux_i2s_3_ws_a,
0543     msm_mux__,
0544 };
0545 
0546 static const char * const gpio_groups[] = {
0547     "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
0548     "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
0549     "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
0550     "gpio21", "gpio21", "gpio22", "gpio22", "gpio23", "gpio23", "gpio24",
0551     "gpio25", "gpio26", "gpio27", "gpio28", "gpio29", "gpio30", "gpio31",
0552     "gpio32", "gpio33", "gpio34", "gpio35", "gpio36", "gpio36", "gpio36",
0553     "gpio36", "gpio37", "gpio37", "gpio37", "gpio38", "gpio38", "gpio38",
0554     "gpio39", "gpio39", "gpio40", "gpio40", "gpio41", "gpio41", "gpio41",
0555     "gpio42", "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48",
0556     "gpio49", "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55",
0557     "gpio56", "gpio57", "gpio58", "gpio59", "gpio59", "gpio60", "gpio61",
0558     "gpio62", "gpio63", "gpio64", "gpio65", "gpio66", "gpio67", "gpio68",
0559     "gpio69", "gpio70", "gpio71", "gpio72", "gpio73", "gpio74", "gpio75",
0560     "gpio76", "gpio77", "gpio77", "gpio78", "gpio78", "gpio78", "gpio79",
0561     "gpio79", "gpio79", "gpio80", "gpio81", "gpio81", "gpio82", "gpio83",
0562     "gpio84", "gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90",
0563     "gpio91", "gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97",
0564     "gpio98", "gpio99", "gpio100", "gpio101", "gpio102", "gpio103",
0565     "gpio104", "gpio105", "gpio106", "gpio107", "gpio108", "gpio108",
0566     "gpio108", "gpio109", "gpio109", "gpio110", "gpio111", "gpio112",
0567     "gpio113", "gpio114", "gpio115", "gpio116", "gpio117", "gpio118",
0568     "gpio119",
0569 };
0570 
0571 static const char * const hdmi_tx_groups[] = {
0572     "gpio14",
0573 };
0574 
0575 static const char * const hdmi_ddc_groups[] = {
0576     "gpio15", "gpio16",
0577 };
0578 
0579 static const char * const blsp_uart_tx_a2_groups[] = {
0580     "gpio17",
0581 };
0582 
0583 static const char * const blsp_spi2_groups[] = {
0584     "gpio17", "gpio18", "gpio19", "gpio20",
0585 };
0586 
0587 static const char * const m_voc_groups[] = {
0588     "gpio17", "gpio21",
0589 };
0590 
0591 static const char * const qdss_cti_trig_in_a0_groups[] = {
0592     "gpio17",
0593 };
0594 
0595 static const char * const blsp_uart_rx_a2_groups[] = {
0596     "gpio18",
0597 };
0598 
0599 static const char * const qdss_tracectl_a_groups[] = {
0600     "gpio18",
0601 };
0602 
0603 static const char * const blsp_uart2_groups[] = {
0604     "gpio19", "gpio20",
0605 };
0606 
0607 static const char * const aud_cdc_groups[] = {
0608     "gpio19", "gpio20",
0609 };
0610 
0611 static const char * const blsp_i2c_sda_a2_groups[] = {
0612     "gpio19",
0613 };
0614 
0615 static const char * const qdss_tracedata_a_groups[] = {
0616     "gpio19", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28", "gpio30",
0617     "gpio31", "gpio32", "gpio36", "gpio38", "gpio39", "gpio42", "gpio43",
0618     "gpio82", "gpio83",
0619 };
0620 
0621 static const char * const blsp_i2c_scl_a2_groups[] = {
0622     "gpio20",
0623 };
0624 
0625 static const char * const qdss_tracectl_b_groups[] = {
0626     "gpio20",
0627 };
0628 
0629 static const char * const qdss_cti_trig_in_b0_groups[] = {
0630     "gpio21",
0631 };
0632 
0633 static const char * const blsp_uart1_groups[] = {
0634     "gpio22", "gpio23", "gpio24", "gpio25",
0635 };
0636 
0637 static const char * const blsp_spi_mosi_a1_groups[] = {
0638     "gpio22",
0639 };
0640 
0641 static const char * const blsp_spi_miso_a1_groups[] = {
0642     "gpio23",
0643 };
0644 
0645 static const char * const qdss_tracedata_b_groups[] = {
0646     "gpio23", "gpio35", "gpio40", "gpio41", "gpio44", "gpio45", "gpio46",
0647     "gpio47", "gpio49", "gpio50", "gpio55", "gpio61", "gpio62", "gpio85",
0648     "gpio89", "gpio93",
0649 };
0650 
0651 static const char * const blsp_i2c1_groups[] = {
0652     "gpio24", "gpio25",
0653 };
0654 
0655 static const char * const blsp_spi_cs_n_a1_groups[] = {
0656     "gpio24",
0657 };
0658 
0659 static const char * const gcc_plltest_groups[] = {
0660     "gpio24", "gpio25",
0661 };
0662 
0663 static const char * const blsp_spi_clk_a1_groups[] = {
0664     "gpio25",
0665 };
0666 
0667 static const char * const rgb_data0_groups[] = {
0668     "gpio26", "gpio41",
0669 };
0670 
0671 static const char * const blsp_uart5_groups[] = {
0672     "gpio26", "gpio27", "gpio28", "gpio29",
0673 };
0674 
0675 static const char * const blsp_spi5_groups[] = {
0676     "gpio26", "gpio27", "gpio28", "gpio29", "gpio44", "gpio45", "gpio46",
0677 };
0678 
0679 static const char * const adsp_ext_groups[] = {
0680     "gpio26",
0681 };
0682 
0683 static const char * const rgb_data1_groups[] = {
0684     "gpio27", "gpio42",
0685 };
0686 
0687 static const char * const prng_rosc_groups[] = {
0688     "gpio27",
0689 };
0690 
0691 static const char * const rgb_data2_groups[] = {
0692     "gpio28", "gpio43",
0693 };
0694 
0695 static const char * const blsp_i2c5_groups[] = {
0696     "gpio28", "gpio29",
0697 };
0698 
0699 static const char * const gcc_gp1_clk_b_groups[] = {
0700     "gpio28",
0701 };
0702 
0703 static const char * const rgb_data3_groups[] = {
0704     "gpio29", "gpio44",
0705 };
0706 
0707 static const char * const gcc_gp2_clk_b_groups[] = {
0708     "gpio29",
0709 };
0710 
0711 static const char * const blsp_spi0_groups[] = {
0712     "gpio30", "gpio31", "gpio32", "gpio33",
0713 };
0714 
0715 static const char * const blsp_uart0_groups[] = {
0716     "gpio30", "gpio31", "gpio32", "gpio33",
0717 };
0718 
0719 static const char * const gcc_gp3_clk_b_groups[] = {
0720     "gpio30",
0721 };
0722 
0723 static const char * const blsp_i2c0_groups[] = {
0724     "gpio32", "gpio33",
0725 };
0726 
0727 static const char * const qdss_traceclk_b_groups[] = {
0728     "gpio34",
0729 };
0730 
0731 static const char * const pcie_clk_groups[] = {
0732     "gpio35",
0733 };
0734 
0735 static const char * const nfc_irq_groups[] = {
0736     "gpio37",
0737 };
0738 
0739 static const char * const blsp_spi4_groups[] = {
0740     "gpio37", "gpio38", "gpio117", "gpio118",
0741 };
0742 
0743 static const char * const nfc_dwl_groups[] = {
0744     "gpio38",
0745 };
0746 
0747 static const char * const audio_ts_groups[] = {
0748     "gpio38",
0749 };
0750 
0751 static const char * const rgb_data4_groups[] = {
0752     "gpio39", "gpio45",
0753 };
0754 
0755 static const char * const spi_lcd_groups[] = {
0756     "gpio39", "gpio40",
0757 };
0758 
0759 static const char * const blsp_uart_tx_b2_groups[] = {
0760     "gpio39",
0761 };
0762 
0763 static const char * const gcc_gp3_clk_a_groups[] = {
0764     "gpio39",
0765 };
0766 
0767 static const char * const rgb_data5_groups[] = {
0768     "gpio40", "gpio46",
0769 };
0770 
0771 static const char * const blsp_uart_rx_b2_groups[] = {
0772     "gpio40",
0773 };
0774 
0775 static const char * const blsp_i2c_sda_b2_groups[] = {
0776     "gpio41",
0777 };
0778 
0779 static const char * const blsp_i2c_scl_b2_groups[] = {
0780     "gpio42",
0781 };
0782 
0783 static const char * const pwm_led11_groups[] = {
0784     "gpio43",
0785 };
0786 
0787 static const char * const i2s_3_data0_a_groups[] = {
0788     "gpio106",
0789 };
0790 
0791 static const char * const ebi2_lcd_groups[] = {
0792     "gpio106", "gpio107", "gpio108", "gpio109",
0793 };
0794 
0795 static const char * const i2s_3_data1_a_groups[] = {
0796     "gpio107",
0797 };
0798 
0799 static const char * const i2s_3_data2_a_groups[] = {
0800     "gpio108",
0801 };
0802 
0803 static const char * const atest_char_groups[] = {
0804     "gpio108",
0805 };
0806 
0807 static const char * const pwm_led3_groups[] = {
0808     "gpio108",
0809 };
0810 
0811 static const char * const i2s_3_data3_a_groups[] = {
0812     "gpio109",
0813 };
0814 
0815 static const char * const pwm_led4_groups[] = {
0816     "gpio109",
0817 };
0818 
0819 static const char * const i2s_4_groups[] = {
0820     "gpio110", "gpio111", "gpio111", "gpio112", "gpio112", "gpio113",
0821     "gpio113", "gpio114", "gpio114", "gpio115", "gpio115", "gpio116",
0822 };
0823 
0824 static const char * const ebi2_a_groups[] = {
0825     "gpio110",
0826 };
0827 
0828 static const char * const dsd_clk_b_groups[] = {
0829     "gpio110",
0830 };
0831 
0832 static const char * const pwm_led5_groups[] = {
0833     "gpio110",
0834 };
0835 
0836 static const char * const pwm_led6_groups[] = {
0837     "gpio111",
0838 };
0839 
0840 static const char * const pwm_led7_groups[] = {
0841     "gpio112",
0842 };
0843 
0844 static const char * const pwm_led8_groups[] = {
0845     "gpio113",
0846 };
0847 
0848 static const char * const pwm_led24_groups[] = {
0849     "gpio114",
0850 };
0851 
0852 static const char * const spkr_dac0_groups[] = {
0853     "gpio116",
0854 };
0855 
0856 static const char * const blsp_i2c4_groups[] = {
0857     "gpio117", "gpio118",
0858 };
0859 
0860 static const char * const pwm_led9_groups[] = {
0861     "gpio117",
0862 };
0863 
0864 static const char * const pwm_led10_groups[] = {
0865     "gpio118",
0866 };
0867 
0868 static const char * const spdifrx_opt_groups[] = {
0869     "gpio119",
0870 };
0871 
0872 static const char * const pwm_led12_groups[] = {
0873     "gpio44",
0874 };
0875 
0876 static const char * const pwm_led13_groups[] = {
0877     "gpio45",
0878 };
0879 
0880 static const char * const pwm_led14_groups[] = {
0881     "gpio46",
0882 };
0883 
0884 static const char * const wlan1_adc1_groups[] = {
0885     "gpio46",
0886 };
0887 
0888 static const char * const rgb_data_b0_groups[] = {
0889     "gpio47",
0890 };
0891 
0892 static const char * const pwm_led15_groups[] = {
0893     "gpio47",
0894 };
0895 
0896 static const char * const blsp_spi_mosi_b1_groups[] = {
0897     "gpio47",
0898 };
0899 
0900 static const char * const wlan1_adc0_groups[] = {
0901     "gpio47",
0902 };
0903 
0904 static const char * const rgb_data_b1_groups[] = {
0905     "gpio48",
0906 };
0907 
0908 static const char * const pwm_led16_groups[] = {
0909     "gpio48",
0910 };
0911 
0912 static const char * const blsp_spi_miso_b1_groups[] = {
0913     "gpio48",
0914 };
0915 
0916 static const char * const qdss_cti_trig_out_b0_groups[] = {
0917     "gpio48",
0918 };
0919 
0920 static const char * const wlan2_adc1_groups[] = {
0921     "gpio48",
0922 };
0923 
0924 static const char * const rgb_data_b2_groups[] = {
0925     "gpio49",
0926 };
0927 
0928 static const char * const pwm_led17_groups[] = {
0929     "gpio49",
0930 };
0931 
0932 static const char * const blsp_spi_cs_n_b1_groups[] = {
0933     "gpio49",
0934 };
0935 
0936 static const char * const wlan2_adc0_groups[] = {
0937     "gpio49",
0938 };
0939 
0940 static const char * const rgb_data_b3_groups[] = {
0941     "gpio50",
0942 };
0943 
0944 static const char * const pwm_led18_groups[] = {
0945     "gpio50",
0946 };
0947 
0948 static const char * const blsp_spi_clk_b1_groups[] = {
0949     "gpio50",
0950 };
0951 
0952 static const char * const rgb_data_b4_groups[] = {
0953     "gpio51",
0954 };
0955 
0956 static const char * const pwm_led19_groups[] = {
0957     "gpio51",
0958 };
0959 
0960 static const char * const ext_mclk1_b_groups[] = {
0961     "gpio51",
0962 };
0963 
0964 static const char * const qdss_traceclk_a_groups[] = {
0965     "gpio51",
0966 };
0967 
0968 static const char * const rgb_data_b5_groups[] = {
0969     "gpio52",
0970 };
0971 
0972 static const char * const pwm_led20_groups[] = {
0973     "gpio52",
0974 };
0975 
0976 static const char * const atest_char3_groups[] = {
0977     "gpio52",
0978 };
0979 
0980 static const char * const i2s_3_sck_b_groups[] = {
0981     "gpio52",
0982 };
0983 
0984 static const char * const ldo_update_groups[] = {
0985     "gpio52",
0986 };
0987 
0988 static const char * const bimc_dte0_groups[] = {
0989     "gpio52", "gpio54",
0990 };
0991 
0992 static const char * const rgb_hsync_groups[] = {
0993     "gpio53",
0994 };
0995 
0996 static const char * const pwm_led21_groups[] = {
0997     "gpio53",
0998 };
0999 
1000 static const char * const i2s_3_ws_b_groups[] = {
1001     "gpio53",
1002 };
1003 
1004 static const char * const dbg_out_groups[] = {
1005     "gpio53",
1006 };
1007 
1008 static const char * const rgb_vsync_groups[] = {
1009     "gpio54",
1010 };
1011 
1012 static const char * const i2s_3_data0_b_groups[] = {
1013     "gpio54",
1014 };
1015 
1016 static const char * const ldo_en_groups[] = {
1017     "gpio54",
1018 };
1019 
1020 static const char * const hdmi_dtest_groups[] = {
1021     "gpio54",
1022 };
1023 
1024 static const char * const rgb_de_groups[] = {
1025     "gpio55",
1026 };
1027 
1028 static const char * const i2s_3_data1_b_groups[] = {
1029     "gpio55",
1030 };
1031 
1032 static const char * const hdmi_lbk9_groups[] = {
1033     "gpio55",
1034 };
1035 
1036 static const char * const rgb_clk_groups[] = {
1037     "gpio56",
1038 };
1039 
1040 static const char * const atest_char1_groups[] = {
1041     "gpio56",
1042 };
1043 
1044 static const char * const i2s_3_data2_b_groups[] = {
1045     "gpio56",
1046 };
1047 
1048 static const char * const ebi_cdc_groups[] = {
1049     "gpio56", "gpio58", "gpio106", "gpio107", "gpio108", "gpio111",
1050 };
1051 
1052 static const char * const hdmi_lbk8_groups[] = {
1053     "gpio56",
1054 };
1055 
1056 static const char * const rgb_mdp_groups[] = {
1057     "gpio57",
1058 };
1059 
1060 static const char * const atest_char0_groups[] = {
1061     "gpio57",
1062 };
1063 
1064 static const char * const i2s_3_data3_b_groups[] = {
1065     "gpio57",
1066 };
1067 
1068 static const char * const hdmi_lbk7_groups[] = {
1069     "gpio57",
1070 };
1071 
1072 static const char * const rgb_data_b6_groups[] = {
1073     "gpio58",
1074 };
1075 
1076 static const char * const rgb_data_b7_groups[] = {
1077     "gpio59",
1078 };
1079 
1080 static const char * const hdmi_lbk6_groups[] = {
1081     "gpio59",
1082 };
1083 
1084 static const char * const rgmii_int_groups[] = {
1085     "gpio61",
1086 };
1087 
1088 static const char * const cri_trng1_groups[] = {
1089     "gpio61",
1090 };
1091 
1092 static const char * const rgmii_wol_groups[] = {
1093     "gpio62",
1094 };
1095 
1096 static const char * const cri_trng0_groups[] = {
1097     "gpio62",
1098 };
1099 
1100 static const char * const gcc_tlmm_groups[] = {
1101     "gpio62",
1102 };
1103 
1104 static const char * const rgmii_ck_groups[] = {
1105     "gpio63", "gpio69",
1106 };
1107 
1108 static const char * const rgmii_tx_groups[] = {
1109     "gpio64", "gpio65", "gpio66", "gpio67",
1110 };
1111 
1112 static const char * const hdmi_lbk5_groups[] = {
1113     "gpio64",
1114 };
1115 
1116 static const char * const hdmi_pixel_groups[] = {
1117     "gpio65",
1118 };
1119 
1120 static const char * const hdmi_rcv_groups[] = {
1121     "gpio66",
1122 };
1123 
1124 static const char * const hdmi_lbk4_groups[] = {
1125     "gpio67",
1126 };
1127 
1128 static const char * const rgmii_ctl_groups[] = {
1129     "gpio68", "gpio74",
1130 };
1131 
1132 static const char * const ext_lpass_groups[] = {
1133     "gpio69",
1134 };
1135 
1136 static const char * const rgmii_rx_groups[] = {
1137     "gpio70", "gpio71", "gpio72", "gpio73",
1138 };
1139 
1140 static const char * const cri_trng_groups[] = {
1141     "gpio70",
1142 };
1143 
1144 static const char * const hdmi_lbk3_groups[] = {
1145     "gpio71",
1146 };
1147 
1148 static const char * const hdmi_lbk2_groups[] = {
1149     "gpio72",
1150 };
1151 
1152 static const char * const qdss_cti_trig_out_b1_groups[] = {
1153     "gpio73",
1154 };
1155 
1156 static const char * const rgmii_mdio_groups[] = {
1157     "gpio75",
1158 };
1159 
1160 static const char * const hdmi_lbk1_groups[] = {
1161     "gpio75",
1162 };
1163 
1164 static const char * const rgmii_mdc_groups[] = {
1165     "gpio76",
1166 };
1167 
1168 static const char * const hdmi_lbk0_groups[] = {
1169     "gpio76",
1170 };
1171 
1172 static const char * const ir_in_groups[] = {
1173     "gpio77",
1174 };
1175 
1176 static const char * const wsa_en_groups[] = {
1177     "gpio77",
1178 };
1179 
1180 static const char * const rgb_data6_groups[] = {
1181     "gpio78", "gpio80",
1182 };
1183 
1184 static const char * const rgb_data7_groups[] = {
1185     "gpio79", "gpio81",
1186 };
1187 
1188 static const char * const atest_char2_groups[] = {
1189     "gpio80",
1190 };
1191 
1192 static const char * const ebi_ch0_groups[] = {
1193     "gpio81",
1194 };
1195 
1196 static const char * const blsp_uart3_groups[] = {
1197     "gpio82", "gpio83", "gpio84", "gpio85",
1198 };
1199 
1200 static const char * const blsp_spi3_groups[] = {
1201     "gpio82", "gpio83", "gpio84", "gpio85",
1202 };
1203 
1204 static const char * const sd_write_groups[] = {
1205     "gpio82",
1206 };
1207 
1208 static const char * const blsp_i2c3_groups[] = {
1209     "gpio84", "gpio85",
1210 };
1211 
1212 static const char * const gcc_gp1_clk_a_groups[] = {
1213     "gpio84",
1214 };
1215 
1216 static const char * const qdss_cti_trig_in_b1_groups[] = {
1217     "gpio84",
1218 };
1219 
1220 static const char * const gcc_gp2_clk_a_groups[] = {
1221     "gpio85",
1222 };
1223 
1224 static const char * const ext_mclk0_groups[] = {
1225     "gpio86",
1226 };
1227 
1228 static const char * const mclk_in1_groups[] = {
1229     "gpio86",
1230 };
1231 
1232 static const char * const i2s_1_groups[] = {
1233     "gpio87", "gpio88", "gpio88", "gpio89", "gpio89", "gpio90", "gpio90",
1234     "gpio91", "gpio91", "gpio92", "gpio92", "gpio93", "gpio93", "gpio94",
1235     "gpio94", "gpio95", "gpio95", "gpio96",
1236 };
1237 
1238 static const char * const dsd_clk_a_groups[] = {
1239     "gpio87",
1240 };
1241 
1242 static const char * const qdss_cti_trig_in_a1_groups[] = {
1243     "gpio92",
1244 };
1245 
1246 static const char * const rgmi_dll1_groups[] = {
1247     "gpio92",
1248 };
1249 
1250 static const char * const pwm_led22_groups[] = {
1251     "gpio93",
1252 };
1253 
1254 static const char * const pwm_led23_groups[] = {
1255     "gpio94",
1256 };
1257 
1258 static const char * const qdss_cti_trig_out_a0_groups[] = {
1259     "gpio94",
1260 };
1261 
1262 static const char * const rgmi_dll2_groups[] = {
1263     "gpio94",
1264 };
1265 
1266 static const char * const pwm_led1_groups[] = {
1267     "gpio95",
1268 };
1269 
1270 static const char * const qdss_cti_trig_out_a1_groups[] = {
1271     "gpio95",
1272 };
1273 
1274 static const char * const pwm_led2_groups[] = {
1275     "gpio96",
1276 };
1277 
1278 static const char * const i2s_2_groups[] = {
1279     "gpio97", "gpio98", "gpio99", "gpio100", "gpio101", "gpio102",
1280 };
1281 
1282 static const char * const pll_bist_groups[] = {
1283     "gpio100",
1284 };
1285 
1286 static const char * const ext_mclk1_a_groups[] = {
1287     "gpio103",
1288 };
1289 
1290 static const char * const mclk_in2_groups[] = {
1291     "gpio103",
1292 };
1293 
1294 static const char * const bimc_dte1_groups[] = {
1295     "gpio103", "gpio109",
1296 };
1297 
1298 static const char * const i2s_3_sck_a_groups[] = {
1299     "gpio104",
1300 };
1301 
1302 static const char * const i2s_3_ws_a_groups[] = {
1303     "gpio105",
1304 };
1305 
1306 static const struct msm_function qcs404_functions[] = {
1307     FUNCTION(gpio),
1308     FUNCTION(hdmi_tx),
1309     FUNCTION(hdmi_ddc),
1310     FUNCTION(blsp_uart_tx_a2),
1311     FUNCTION(blsp_spi2),
1312     FUNCTION(m_voc),
1313     FUNCTION(qdss_cti_trig_in_a0),
1314     FUNCTION(blsp_uart_rx_a2),
1315     FUNCTION(qdss_tracectl_a),
1316     FUNCTION(blsp_uart2),
1317     FUNCTION(aud_cdc),
1318     FUNCTION(blsp_i2c_sda_a2),
1319     FUNCTION(qdss_tracedata_a),
1320     FUNCTION(blsp_i2c_scl_a2),
1321     FUNCTION(qdss_tracectl_b),
1322     FUNCTION(qdss_cti_trig_in_b0),
1323     FUNCTION(blsp_uart1),
1324     FUNCTION(blsp_spi_mosi_a1),
1325     FUNCTION(blsp_spi_miso_a1),
1326     FUNCTION(qdss_tracedata_b),
1327     FUNCTION(blsp_i2c1),
1328     FUNCTION(blsp_spi_cs_n_a1),
1329     FUNCTION(gcc_plltest),
1330     FUNCTION(blsp_spi_clk_a1),
1331     FUNCTION(rgb_data0),
1332     FUNCTION(blsp_uart5),
1333     FUNCTION(blsp_spi5),
1334     FUNCTION(adsp_ext),
1335     FUNCTION(rgb_data1),
1336     FUNCTION(prng_rosc),
1337     FUNCTION(rgb_data2),
1338     FUNCTION(blsp_i2c5),
1339     FUNCTION(gcc_gp1_clk_b),
1340     FUNCTION(rgb_data3),
1341     FUNCTION(gcc_gp2_clk_b),
1342     FUNCTION(blsp_spi0),
1343     FUNCTION(blsp_uart0),
1344     FUNCTION(gcc_gp3_clk_b),
1345     FUNCTION(blsp_i2c0),
1346     FUNCTION(qdss_traceclk_b),
1347     FUNCTION(pcie_clk),
1348     FUNCTION(nfc_irq),
1349     FUNCTION(blsp_spi4),
1350     FUNCTION(nfc_dwl),
1351     FUNCTION(audio_ts),
1352     FUNCTION(rgb_data4),
1353     FUNCTION(spi_lcd),
1354     FUNCTION(blsp_uart_tx_b2),
1355     FUNCTION(gcc_gp3_clk_a),
1356     FUNCTION(rgb_data5),
1357     FUNCTION(blsp_uart_rx_b2),
1358     FUNCTION(blsp_i2c_sda_b2),
1359     FUNCTION(blsp_i2c_scl_b2),
1360     FUNCTION(pwm_led11),
1361     FUNCTION(i2s_3_data0_a),
1362     FUNCTION(ebi2_lcd),
1363     FUNCTION(i2s_3_data1_a),
1364     FUNCTION(i2s_3_data2_a),
1365     FUNCTION(atest_char),
1366     FUNCTION(pwm_led3),
1367     FUNCTION(i2s_3_data3_a),
1368     FUNCTION(pwm_led4),
1369     FUNCTION(i2s_4),
1370     FUNCTION(ebi2_a),
1371     FUNCTION(dsd_clk_b),
1372     FUNCTION(pwm_led5),
1373     FUNCTION(pwm_led6),
1374     FUNCTION(pwm_led7),
1375     FUNCTION(pwm_led8),
1376     FUNCTION(pwm_led24),
1377     FUNCTION(spkr_dac0),
1378     FUNCTION(blsp_i2c4),
1379     FUNCTION(pwm_led9),
1380     FUNCTION(pwm_led10),
1381     FUNCTION(spdifrx_opt),
1382     FUNCTION(pwm_led12),
1383     FUNCTION(pwm_led13),
1384     FUNCTION(pwm_led14),
1385     FUNCTION(wlan1_adc1),
1386     FUNCTION(rgb_data_b0),
1387     FUNCTION(pwm_led15),
1388     FUNCTION(blsp_spi_mosi_b1),
1389     FUNCTION(wlan1_adc0),
1390     FUNCTION(rgb_data_b1),
1391     FUNCTION(pwm_led16),
1392     FUNCTION(blsp_spi_miso_b1),
1393     FUNCTION(qdss_cti_trig_out_b0),
1394     FUNCTION(wlan2_adc1),
1395     FUNCTION(rgb_data_b2),
1396     FUNCTION(pwm_led17),
1397     FUNCTION(blsp_spi_cs_n_b1),
1398     FUNCTION(wlan2_adc0),
1399     FUNCTION(rgb_data_b3),
1400     FUNCTION(pwm_led18),
1401     FUNCTION(blsp_spi_clk_b1),
1402     FUNCTION(rgb_data_b4),
1403     FUNCTION(pwm_led19),
1404     FUNCTION(ext_mclk1_b),
1405     FUNCTION(qdss_traceclk_a),
1406     FUNCTION(rgb_data_b5),
1407     FUNCTION(pwm_led20),
1408     FUNCTION(atest_char3),
1409     FUNCTION(i2s_3_sck_b),
1410     FUNCTION(ldo_update),
1411     FUNCTION(bimc_dte0),
1412     FUNCTION(rgb_hsync),
1413     FUNCTION(pwm_led21),
1414     FUNCTION(i2s_3_ws_b),
1415     FUNCTION(dbg_out),
1416     FUNCTION(rgb_vsync),
1417     FUNCTION(i2s_3_data0_b),
1418     FUNCTION(ldo_en),
1419     FUNCTION(hdmi_dtest),
1420     FUNCTION(rgb_de),
1421     FUNCTION(i2s_3_data1_b),
1422     FUNCTION(hdmi_lbk9),
1423     FUNCTION(rgb_clk),
1424     FUNCTION(atest_char1),
1425     FUNCTION(i2s_3_data2_b),
1426     FUNCTION(ebi_cdc),
1427     FUNCTION(hdmi_lbk8),
1428     FUNCTION(rgb_mdp),
1429     FUNCTION(atest_char0),
1430     FUNCTION(i2s_3_data3_b),
1431     FUNCTION(hdmi_lbk7),
1432     FUNCTION(rgb_data_b6),
1433     FUNCTION(rgb_data_b7),
1434     FUNCTION(hdmi_lbk6),
1435     FUNCTION(rgmii_int),
1436     FUNCTION(cri_trng1),
1437     FUNCTION(rgmii_wol),
1438     FUNCTION(cri_trng0),
1439     FUNCTION(gcc_tlmm),
1440     FUNCTION(rgmii_ck),
1441     FUNCTION(rgmii_tx),
1442     FUNCTION(hdmi_lbk5),
1443     FUNCTION(hdmi_pixel),
1444     FUNCTION(hdmi_rcv),
1445     FUNCTION(hdmi_lbk4),
1446     FUNCTION(rgmii_ctl),
1447     FUNCTION(ext_lpass),
1448     FUNCTION(rgmii_rx),
1449     FUNCTION(cri_trng),
1450     FUNCTION(hdmi_lbk3),
1451     FUNCTION(hdmi_lbk2),
1452     FUNCTION(qdss_cti_trig_out_b1),
1453     FUNCTION(rgmii_mdio),
1454     FUNCTION(hdmi_lbk1),
1455     FUNCTION(rgmii_mdc),
1456     FUNCTION(hdmi_lbk0),
1457     FUNCTION(ir_in),
1458     FUNCTION(wsa_en),
1459     FUNCTION(rgb_data6),
1460     FUNCTION(rgb_data7),
1461     FUNCTION(atest_char2),
1462     FUNCTION(ebi_ch0),
1463     FUNCTION(blsp_uart3),
1464     FUNCTION(blsp_spi3),
1465     FUNCTION(sd_write),
1466     FUNCTION(blsp_i2c3),
1467     FUNCTION(gcc_gp1_clk_a),
1468     FUNCTION(qdss_cti_trig_in_b1),
1469     FUNCTION(gcc_gp2_clk_a),
1470     FUNCTION(ext_mclk0),
1471     FUNCTION(mclk_in1),
1472     FUNCTION(i2s_1),
1473     FUNCTION(dsd_clk_a),
1474     FUNCTION(qdss_cti_trig_in_a1),
1475     FUNCTION(rgmi_dll1),
1476     FUNCTION(pwm_led22),
1477     FUNCTION(pwm_led23),
1478     FUNCTION(qdss_cti_trig_out_a0),
1479     FUNCTION(rgmi_dll2),
1480     FUNCTION(pwm_led1),
1481     FUNCTION(qdss_cti_trig_out_a1),
1482     FUNCTION(pwm_led2),
1483     FUNCTION(i2s_2),
1484     FUNCTION(pll_bist),
1485     FUNCTION(ext_mclk1_a),
1486     FUNCTION(mclk_in2),
1487     FUNCTION(bimc_dte1),
1488     FUNCTION(i2s_3_sck_a),
1489     FUNCTION(i2s_3_ws_a),
1490 };
1491 
1492 /* Every pin is maintained as a single group, and missing or non-existing pin
1493  * would be maintained as dummy group to synchronize pin group index with
1494  * pin descriptor registered with pinctrl core.
1495  * Clients would not be able to request these dummy pin groups.
1496  */
1497 static const struct msm_pingroup qcs404_groups[] = {
1498     [0] = PINGROUP(0, SOUTH, _, _, _, _, _, _, _, _, _),
1499     [1] = PINGROUP(1, SOUTH, _, _, _, _, _, _, _, _, _),
1500     [2] = PINGROUP(2, SOUTH, _, _, _, _, _, _, _, _, _),
1501     [3] = PINGROUP(3, SOUTH, _, _, _, _, _, _, _, _, _),
1502     [4] = PINGROUP(4, SOUTH, _, _, _, _, _, _, _, _, _),
1503     [5] = PINGROUP(5, SOUTH, _, _, _, _, _, _, _, _, _),
1504     [6] = PINGROUP(6, SOUTH, _, _, _, _, _, _, _, _, _),
1505     [7] = PINGROUP(7, SOUTH, _, _, _, _, _, _, _, _, _),
1506     [8] = PINGROUP(8, SOUTH, _, _, _, _, _, _, _, _, _),
1507     [9] = PINGROUP(9, SOUTH, _, _, _, _, _, _, _, _, _),
1508     [10] = PINGROUP(10, SOUTH, _, _, _, _, _, _, _, _, _),
1509     [11] = PINGROUP(11, SOUTH, _, _, _, _, _, _, _, _, _),
1510     [12] = PINGROUP(12, SOUTH, _, _, _, _, _, _, _, _, _),
1511     [13] = PINGROUP(13, SOUTH, _, _, _, _, _, _, _, _, _),
1512     [14] = PINGROUP(14, SOUTH, hdmi_tx, _, _, _, _, _, _, _, _),
1513     [15] = PINGROUP(15, SOUTH, hdmi_ddc, _, _, _, _, _, _, _, _),
1514     [16] = PINGROUP(16, SOUTH, hdmi_ddc, _, _, _, _, _, _, _, _),
1515     [17] = PINGROUP(17, NORTH, blsp_uart_tx_a2, blsp_spi2, m_voc, _, _, _, _, _, _),
1516     [18] = PINGROUP(18, NORTH, blsp_uart_rx_a2, blsp_spi2, _, _, _, _, _, qdss_tracectl_a, _),
1517     [19] = PINGROUP(19, NORTH, blsp_uart2, aud_cdc, blsp_i2c_sda_a2, blsp_spi2, _, qdss_tracedata_a, _, _, _),
1518     [20] = PINGROUP(20, NORTH, blsp_uart2, aud_cdc, blsp_i2c_scl_a2, blsp_spi2, _, _, _, _, _),
1519     [21] = PINGROUP(21, SOUTH, m_voc, _, _, _, _, _, _, _, qdss_cti_trig_in_b0),
1520     [22] = PINGROUP(22, NORTH, blsp_uart1, blsp_spi_mosi_a1, _, _, _, _, _, _, _),
1521     [23] = PINGROUP(23, NORTH, blsp_uart1, blsp_spi_miso_a1, _, _, _, _, _, qdss_tracedata_b, _),
1522     [24] = PINGROUP(24, NORTH, blsp_uart1, blsp_i2c1, blsp_spi_cs_n_a1, gcc_plltest, _, _, _, _, _),
1523     [25] = PINGROUP(25, NORTH, blsp_uart1, blsp_i2c1, blsp_spi_clk_a1, gcc_plltest, _, _, _, _, _),
1524     [26] = PINGROUP(26, EAST, rgb_data0, blsp_uart5, blsp_spi5, adsp_ext, _, _, _, _, _),
1525     [27] = PINGROUP(27, EAST, rgb_data1, blsp_uart5, blsp_spi5, prng_rosc, _, _, _, _, _),
1526     [28] = PINGROUP(28, EAST, rgb_data2, blsp_uart5, blsp_i2c5, blsp_spi5, gcc_gp1_clk_b, _, _, _, _),
1527     [29] = PINGROUP(29, EAST, rgb_data3, blsp_uart5, blsp_i2c5, blsp_spi5, gcc_gp2_clk_b, _, _, _, _),
1528     [30] = PINGROUP(30, NORTH, blsp_spi0, blsp_uart0, gcc_gp3_clk_b, _, _, _, _, _, _),
1529     [31] = PINGROUP(31, NORTH, blsp_spi0, blsp_uart0, _, _, _, _, _, _, _),
1530     [32] = PINGROUP(32, NORTH, blsp_spi0, blsp_uart0, blsp_i2c0, _, _, _, _, _, _),
1531     [33] = PINGROUP(33, NORTH, blsp_spi0, blsp_uart0, blsp_i2c0, _, _, _, _, _, _),
1532     [34] = PINGROUP(34, SOUTH, _, qdss_traceclk_b, _, _, _, _, _, _, _),
1533     [35] = PINGROUP(35, SOUTH, pcie_clk, _, qdss_tracedata_b, _, _, _, _, _, _),
1534     [36] = PINGROUP(36, NORTH, _, _, _, _, _, _, qdss_tracedata_a, _, _),
1535     [37] = PINGROUP(37, NORTH, nfc_irq, blsp_spi4, _, _, _, _, _, _, _),
1536     [38] = PINGROUP(38, NORTH, nfc_dwl, blsp_spi4, audio_ts, _, _, _, _, _, _),
1537     [39] = PINGROUP(39, EAST, rgb_data4, spi_lcd, blsp_uart_tx_b2, gcc_gp3_clk_a, qdss_tracedata_a, _, _, _, _),
1538     [40] = PINGROUP(40, EAST, rgb_data5, spi_lcd, blsp_uart_rx_b2, _, qdss_tracedata_b, _, _, _, _),
1539     [41] = PINGROUP(41, EAST, rgb_data0, blsp_i2c_sda_b2, _, qdss_tracedata_b, _, _, _, _, _),
1540     [42] = PINGROUP(42, EAST, rgb_data1, blsp_i2c_scl_b2, _, _, _, _, _, qdss_tracedata_a, _),
1541     [43] = PINGROUP(43, EAST, rgb_data2, pwm_led11, _, _, _, _, _, _, _),
1542     [44] = PINGROUP(44, EAST, rgb_data3, pwm_led12, blsp_spi5, _, _, _, _, _, _),
1543     [45] = PINGROUP(45, EAST, rgb_data4, pwm_led13, blsp_spi5, qdss_tracedata_b, _, _, _, _, _),
1544     [46] = PINGROUP(46, EAST, rgb_data5, pwm_led14, blsp_spi5, qdss_tracedata_b, _, wlan1_adc1, _, _, _),
1545     [47] = PINGROUP(47, EAST, rgb_data_b0, pwm_led15, blsp_spi_mosi_b1, qdss_tracedata_b, _, wlan1_adc0, _, _, _),
1546     [48] = PINGROUP(48, EAST, rgb_data_b1, pwm_led16, blsp_spi_miso_b1, _, qdss_cti_trig_out_b0, _, wlan2_adc1, _, _),
1547     [49] = PINGROUP(49, EAST, rgb_data_b2, pwm_led17, blsp_spi_cs_n_b1, _, qdss_tracedata_b, _, wlan2_adc0, _, _),
1548     [50] = PINGROUP(50, EAST, rgb_data_b3, pwm_led18, blsp_spi_clk_b1, qdss_tracedata_b, _, _, _, _, _),
1549     [51] = PINGROUP(51, EAST, rgb_data_b4, pwm_led19, ext_mclk1_b, qdss_traceclk_a, _, _, _, _, _),
1550     [52] = PINGROUP(52, EAST, rgb_data_b5, pwm_led20, atest_char3, i2s_3_sck_b, ldo_update, bimc_dte0, _, _, _),
1551     [53] = PINGROUP(53, EAST, rgb_hsync, pwm_led21, i2s_3_ws_b, dbg_out, _, _, _, _, _),
1552     [54] = PINGROUP(54, EAST, rgb_vsync, i2s_3_data0_b, ldo_en, bimc_dte0, _, hdmi_dtest, _, _, _),
1553     [55] = PINGROUP(55, EAST, rgb_de, i2s_3_data1_b, _, qdss_tracedata_b, _, hdmi_lbk9, _, _, _),
1554     [56] = PINGROUP(56, EAST, rgb_clk, atest_char1, i2s_3_data2_b, ebi_cdc, _, hdmi_lbk8, _, _, _),
1555     [57] = PINGROUP(57, EAST, rgb_mdp, atest_char0, i2s_3_data3_b, _, hdmi_lbk7, _, _, _, _),
1556     [58] = PINGROUP(58, EAST, rgb_data_b6, _, ebi_cdc, _, _, _, _, _, _),
1557     [59] = PINGROUP(59, EAST, rgb_data_b7, _, hdmi_lbk6, _, _, _, _, _, _),
1558     [60] = PINGROUP(60, NORTH, _, _, _, _, _, _, _, _, _),
1559     [61] = PINGROUP(61, NORTH, rgmii_int, cri_trng1, qdss_tracedata_b, _, _, _, _, _, _),
1560     [62] = PINGROUP(62, NORTH, rgmii_wol, cri_trng0, qdss_tracedata_b, gcc_tlmm, _, _, _, _, _),
1561     [63] = PINGROUP(63, NORTH, rgmii_ck, _, _, _, _, _, _, _, _),
1562     [64] = PINGROUP(64, NORTH, rgmii_tx, _, hdmi_lbk5, _, _, _, _, _, _),
1563     [65] = PINGROUP(65, NORTH, rgmii_tx, _, hdmi_pixel, _, _, _, _, _, _),
1564     [66] = PINGROUP(66, NORTH, rgmii_tx, _, hdmi_rcv, _, _, _, _, _, _),
1565     [67] = PINGROUP(67, NORTH, rgmii_tx, _, hdmi_lbk4, _, _, _, _, _, _),
1566     [68] = PINGROUP(68, NORTH, rgmii_ctl, _, _, _, _, _, _, _, _),
1567     [69] = PINGROUP(69, NORTH, rgmii_ck, ext_lpass, _, _, _, _, _, _, _),
1568     [70] = PINGROUP(70, NORTH, rgmii_rx, cri_trng, _, _, _, _, _, _, _),
1569     [71] = PINGROUP(71, NORTH, rgmii_rx, _, hdmi_lbk3, _, _, _, _, _, _),
1570     [72] = PINGROUP(72, NORTH, rgmii_rx, _, hdmi_lbk2, _, _, _, _, _, _),
1571     [73] = PINGROUP(73, NORTH, rgmii_rx, _, _, _, _, qdss_cti_trig_out_b1, _, _, _),
1572     [74] = PINGROUP(74, NORTH, rgmii_ctl, _, _, _, _, _, _, _, _),
1573     [75] = PINGROUP(75, NORTH, rgmii_mdio, _, hdmi_lbk1, _, _, _, _, _, _),
1574     [76] = PINGROUP(76, NORTH, rgmii_mdc, _, _, _, _, _, hdmi_lbk0, _, _),
1575     [77] = PINGROUP(77, NORTH, ir_in, wsa_en, _, _, _, _, _, _, _),
1576     [78] = PINGROUP(78, EAST, rgb_data6, _, _, _, _, _, _, _, _),
1577     [79] = PINGROUP(79, EAST, rgb_data7, _, _, _, _, _, _, _, _),
1578     [80] = PINGROUP(80, EAST, rgb_data6, atest_char2, _, _, _, _, _, _, _),
1579     [81] = PINGROUP(81, EAST, rgb_data7, ebi_ch0, _, _, _, _, _, _, _),
1580     [82] = PINGROUP(82, NORTH, blsp_uart3, blsp_spi3, sd_write, _, _, _, _, _, qdss_tracedata_a),
1581     [83] = PINGROUP(83, NORTH, blsp_uart3, blsp_spi3, _, _, _, _, qdss_tracedata_a, _, _),
1582     [84] = PINGROUP(84, NORTH, blsp_uart3, blsp_i2c3, blsp_spi3, gcc_gp1_clk_a, qdss_cti_trig_in_b1, _, _, _, _),
1583     [85] = PINGROUP(85, NORTH, blsp_uart3, blsp_i2c3, blsp_spi3, gcc_gp2_clk_a, qdss_tracedata_b, _, _, _, _),
1584     [86] = PINGROUP(86, EAST, ext_mclk0, mclk_in1, _, _, _, _, _, _, _),
1585     [87] = PINGROUP(87, EAST, i2s_1, dsd_clk_a, _, _, _, _, _, _, _),
1586     [88] = PINGROUP(88, EAST, i2s_1, i2s_1, _, _, _, _, _, _, _),
1587     [89] = PINGROUP(89, EAST, i2s_1, i2s_1, _, _, _, _, _, _, qdss_tracedata_b),
1588     [90] = PINGROUP(90, EAST, i2s_1, i2s_1, _, _, _, _, _, _, _),
1589     [91] = PINGROUP(91, EAST, i2s_1, i2s_1, _, _, _, _, _, _, _),
1590     [92] = PINGROUP(92, EAST, i2s_1, i2s_1, _, _, _, _, _, qdss_cti_trig_in_a1, _),
1591     [93] = PINGROUP(93, EAST, i2s_1, pwm_led22, i2s_1, _, _, _, _, _, qdss_tracedata_b),
1592     [94] = PINGROUP(94, EAST, i2s_1, pwm_led23, i2s_1, _, qdss_cti_trig_out_a0, _, rgmi_dll2, _, _),
1593     [95] = PINGROUP(95, EAST, i2s_1, pwm_led1, i2s_1, _, qdss_cti_trig_out_a1, _, _, _, _),
1594     [96] = PINGROUP(96, EAST, i2s_1, pwm_led2, _, _, _, _, _, _, _),
1595     [97] = PINGROUP(97, EAST, i2s_2, _, _, _, _, _, _, _, _),
1596     [98] = PINGROUP(98, EAST, i2s_2, _, _, _, _, _, _, _, _),
1597     [99] = PINGROUP(99, EAST, i2s_2, _, _, _, _, _, _, _, _),
1598     [100] = PINGROUP(100, EAST, i2s_2, pll_bist, _, _, _, _, _, _, _),
1599     [101] = PINGROUP(101, EAST, i2s_2, _, _, _, _, _, _, _, _),
1600     [102] = PINGROUP(102, EAST, i2s_2, _, _, _, _, _, _, _, _),
1601     [103] = PINGROUP(103, EAST, ext_mclk1_a, mclk_in2, bimc_dte1, _, _, _, _, _, _),
1602     [104] = PINGROUP(104, EAST, i2s_3_sck_a, _, _, _, _, _, _, _, _),
1603     [105] = PINGROUP(105, EAST, i2s_3_ws_a, _, _, _, _, _, _, _, _),
1604     [106] = PINGROUP(106, EAST, i2s_3_data0_a, ebi2_lcd, _, _, ebi_cdc, _, _, _, _),
1605     [107] = PINGROUP(107, EAST, i2s_3_data1_a, ebi2_lcd, _, _, ebi_cdc, _, _, _, _),
1606     [108] = PINGROUP(108, EAST, i2s_3_data2_a, ebi2_lcd, atest_char, pwm_led3, ebi_cdc, _, _, _, _),
1607     [109] = PINGROUP(109, EAST, i2s_3_data3_a, ebi2_lcd, pwm_led4, bimc_dte1, _, _, _, _, _),
1608     [110] = PINGROUP(110, EAST, i2s_4, ebi2_a, dsd_clk_b, pwm_led5, _, _, _, _, _),
1609     [111] = PINGROUP(111, EAST, i2s_4, i2s_4, pwm_led6, ebi_cdc, _, _, _, _, _),
1610     [112] = PINGROUP(112, EAST, i2s_4, i2s_4, pwm_led7, _, _, _, _, _, _),
1611     [113] = PINGROUP(113, EAST, i2s_4, i2s_4, pwm_led8, _, _, _, _, _, _),
1612     [114] = PINGROUP(114, EAST, i2s_4, i2s_4, pwm_led24, _, _, _, _, _, _),
1613     [115] = PINGROUP(115, EAST, i2s_4, i2s_4, _, _, _, _, _, _, _),
1614     [116] = PINGROUP(116, EAST, i2s_4, spkr_dac0, _, _, _, _, _, _, _),
1615     [117] = PINGROUP(117, NORTH, blsp_i2c4, blsp_spi4, pwm_led9, _, _, _, _, _, _),
1616     [118] = PINGROUP(118, NORTH, blsp_i2c4, blsp_spi4, pwm_led10, _, _, _, _, _, _),
1617     [119] = PINGROUP(119, EAST, spdifrx_opt, _, _, _, _, _, _, _, _),
1618     [120] = SDC_QDSD_PINGROUP(sdc1_rclk, 0xc2000, 15, 0),
1619     [121] = SDC_QDSD_PINGROUP(sdc1_clk, 0xc2000, 13, 6),
1620     [122] = SDC_QDSD_PINGROUP(sdc1_cmd, 0xc2000, 11, 3),
1621     [123] = SDC_QDSD_PINGROUP(sdc1_data, 0xc2000, 9, 0),
1622     [124] = SDC_QDSD_PINGROUP(sdc2_clk, 0xc3000, 14, 6),
1623     [125] = SDC_QDSD_PINGROUP(sdc2_cmd, 0xc3000, 11, 3),
1624     [126] = SDC_QDSD_PINGROUP(sdc2_data, 0xc3000, 9, 0),
1625 };
1626 
1627 static const struct msm_pinctrl_soc_data qcs404_pinctrl = {
1628     .pins = qcs404_pins,
1629     .npins = ARRAY_SIZE(qcs404_pins),
1630     .functions = qcs404_functions,
1631     .nfunctions = ARRAY_SIZE(qcs404_functions),
1632     .groups = qcs404_groups,
1633     .ngroups = ARRAY_SIZE(qcs404_groups),
1634     .ngpios = 120,
1635     .tiles = qcs404_tiles,
1636     .ntiles = ARRAY_SIZE(qcs404_tiles),
1637 };
1638 
1639 static int qcs404_pinctrl_probe(struct platform_device *pdev)
1640 {
1641     return msm_pinctrl_probe(pdev, &qcs404_pinctrl);
1642 }
1643 
1644 static const struct of_device_id qcs404_pinctrl_of_match[] = {
1645     { .compatible = "qcom,qcs404-pinctrl", },
1646     { },
1647 };
1648 
1649 static struct platform_driver qcs404_pinctrl_driver = {
1650     .driver = {
1651         .name = "qcs404-pinctrl",
1652         .of_match_table = qcs404_pinctrl_of_match,
1653     },
1654     .probe = qcs404_pinctrl_probe,
1655     .remove = msm_pinctrl_remove,
1656 };
1657 
1658 static int __init qcs404_pinctrl_init(void)
1659 {
1660     return platform_driver_register(&qcs404_pinctrl_driver);
1661 }
1662 arch_initcall(qcs404_pinctrl_init);
1663 
1664 static void __exit qcs404_pinctrl_exit(void)
1665 {
1666     platform_driver_unregister(&qcs404_pinctrl_driver);
1667 }
1668 module_exit(qcs404_pinctrl_exit);
1669 
1670 MODULE_DESCRIPTION("Qualcomm QCS404 pinctrl driver");
1671 MODULE_LICENSE("GPL v2");
1672 MODULE_DEVICE_TABLE(of, qcs404_pinctrl_of_match);