Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * Copyright (c) 2016, 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 #define FUNCTION(fname)                 \
0014     [MSM_MUX_##fname] = {               \
0015         .name = #fname,             \
0016         .groups = fname##_groups,       \
0017         .ngroups = ARRAY_SIZE(fname##_groups),  \
0018     }
0019 
0020 #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11)  \
0021     {                       \
0022         .name = "gpio" #id,         \
0023         .pins = gpio##id##_pins,        \
0024         .npins = ARRAY_SIZE(gpio##id##_pins),   \
0025         .funcs = (int[]){           \
0026             MSM_MUX_gpio,           \
0027             MSM_MUX_##f1,           \
0028             MSM_MUX_##f2,           \
0029             MSM_MUX_##f3,           \
0030             MSM_MUX_##f4,           \
0031             MSM_MUX_##f5,           \
0032             MSM_MUX_##f6,           \
0033             MSM_MUX_##f7,           \
0034             MSM_MUX_##f8,           \
0035             MSM_MUX_##f9,           \
0036             MSM_MUX_##f10,          \
0037             MSM_MUX_##f11           \
0038         },                  \
0039         .nfuncs = 12,               \
0040         .ctl_reg = 0x1000 + 0x10 * id,      \
0041         .io_reg = 0x1004 + 0x10 * id,       \
0042         .intr_cfg_reg = 0x1008 + 0x10 * id, \
0043         .intr_status_reg = 0x100c + 0x10 * id,  \
0044         .intr_target_reg = 0x1008 + 0x10 * id,  \
0045         .mux_bit = 2,               \
0046         .pull_bit = 0,              \
0047         .drv_bit = 6,               \
0048         .oe_bit = 9,                \
0049         .in_bit = 0,                \
0050         .out_bit = 1,               \
0051         .intr_enable_bit = 0,           \
0052         .intr_status_bit = 0,           \
0053         .intr_target_bit = 5,           \
0054         .intr_target_kpss_val = 4,      \
0055         .intr_raw_status_bit = 4,       \
0056         .intr_polarity_bit = 1,         \
0057         .intr_detection_bit = 2,        \
0058         .intr_detection_width = 2,      \
0059     }
0060 
0061 #define SDC_PINGROUP(pg_name, ctl, pull, drv)       \
0062     {                       \
0063         .name = #pg_name,           \
0064         .pins = pg_name##_pins,         \
0065         .npins = ARRAY_SIZE(pg_name##_pins),    \
0066         .ctl_reg = ctl,             \
0067         .io_reg = 0,                \
0068         .intr_cfg_reg = 0,          \
0069         .intr_status_reg = 0,           \
0070         .intr_target_reg = 0,           \
0071         .mux_bit = -1,              \
0072         .pull_bit = pull,           \
0073         .drv_bit = drv,             \
0074         .oe_bit = -1,               \
0075         .in_bit = -1,               \
0076         .out_bit = -1,              \
0077         .intr_enable_bit = -1,          \
0078         .intr_status_bit = -1,          \
0079         .intr_target_bit = -1,          \
0080         .intr_target_kpss_val = -1,     \
0081         .intr_raw_status_bit = -1,      \
0082         .intr_polarity_bit = -1,        \
0083         .intr_detection_bit = -1,       \
0084         .intr_detection_width = -1,     \
0085     }
0086 static const struct pinctrl_pin_desc msm8994_pins[] = {
0087     PINCTRL_PIN(0, "GPIO_0"),
0088     PINCTRL_PIN(1, "GPIO_1"),
0089     PINCTRL_PIN(2, "GPIO_2"),
0090     PINCTRL_PIN(3, "GPIO_3"),
0091     PINCTRL_PIN(4, "GPIO_4"),
0092     PINCTRL_PIN(5, "GPIO_5"),
0093     PINCTRL_PIN(6, "GPIO_6"),
0094     PINCTRL_PIN(7, "GPIO_7"),
0095     PINCTRL_PIN(8, "GPIO_8"),
0096     PINCTRL_PIN(9, "GPIO_9"),
0097     PINCTRL_PIN(10, "GPIO_10"),
0098     PINCTRL_PIN(11, "GPIO_11"),
0099     PINCTRL_PIN(12, "GPIO_12"),
0100     PINCTRL_PIN(13, "GPIO_13"),
0101     PINCTRL_PIN(14, "GPIO_14"),
0102     PINCTRL_PIN(15, "GPIO_15"),
0103     PINCTRL_PIN(16, "GPIO_16"),
0104     PINCTRL_PIN(17, "GPIO_17"),
0105     PINCTRL_PIN(18, "GPIO_18"),
0106     PINCTRL_PIN(19, "GPIO_19"),
0107     PINCTRL_PIN(20, "GPIO_20"),
0108     PINCTRL_PIN(21, "GPIO_21"),
0109     PINCTRL_PIN(22, "GPIO_22"),
0110     PINCTRL_PIN(23, "GPIO_23"),
0111     PINCTRL_PIN(24, "GPIO_24"),
0112     PINCTRL_PIN(25, "GPIO_25"),
0113     PINCTRL_PIN(26, "GPIO_26"),
0114     PINCTRL_PIN(27, "GPIO_27"),
0115     PINCTRL_PIN(28, "GPIO_28"),
0116     PINCTRL_PIN(29, "GPIO_29"),
0117     PINCTRL_PIN(30, "GPIO_30"),
0118     PINCTRL_PIN(31, "GPIO_31"),
0119     PINCTRL_PIN(32, "GPIO_32"),
0120     PINCTRL_PIN(33, "GPIO_33"),
0121     PINCTRL_PIN(34, "GPIO_34"),
0122     PINCTRL_PIN(35, "GPIO_35"),
0123     PINCTRL_PIN(36, "GPIO_36"),
0124     PINCTRL_PIN(37, "GPIO_37"),
0125     PINCTRL_PIN(38, "GPIO_38"),
0126     PINCTRL_PIN(39, "GPIO_39"),
0127     PINCTRL_PIN(40, "GPIO_40"),
0128     PINCTRL_PIN(41, "GPIO_41"),
0129     PINCTRL_PIN(42, "GPIO_42"),
0130     PINCTRL_PIN(43, "GPIO_43"),
0131     PINCTRL_PIN(44, "GPIO_44"),
0132     PINCTRL_PIN(45, "GPIO_45"),
0133     PINCTRL_PIN(46, "GPIO_46"),
0134     PINCTRL_PIN(47, "GPIO_47"),
0135     PINCTRL_PIN(48, "GPIO_48"),
0136     PINCTRL_PIN(49, "GPIO_49"),
0137     PINCTRL_PIN(50, "GPIO_50"),
0138     PINCTRL_PIN(51, "GPIO_51"),
0139     PINCTRL_PIN(52, "GPIO_52"),
0140     PINCTRL_PIN(53, "GPIO_53"),
0141     PINCTRL_PIN(54, "GPIO_54"),
0142     PINCTRL_PIN(55, "GPIO_55"),
0143     PINCTRL_PIN(56, "GPIO_56"),
0144     PINCTRL_PIN(57, "GPIO_57"),
0145     PINCTRL_PIN(58, "GPIO_58"),
0146     PINCTRL_PIN(59, "GPIO_59"),
0147     PINCTRL_PIN(60, "GPIO_60"),
0148     PINCTRL_PIN(61, "GPIO_61"),
0149     PINCTRL_PIN(62, "GPIO_62"),
0150     PINCTRL_PIN(63, "GPIO_63"),
0151     PINCTRL_PIN(64, "GPIO_64"),
0152     PINCTRL_PIN(65, "GPIO_65"),
0153     PINCTRL_PIN(66, "GPIO_66"),
0154     PINCTRL_PIN(67, "GPIO_67"),
0155     PINCTRL_PIN(68, "GPIO_68"),
0156     PINCTRL_PIN(69, "GPIO_69"),
0157     PINCTRL_PIN(70, "GPIO_70"),
0158     PINCTRL_PIN(71, "GPIO_71"),
0159     PINCTRL_PIN(72, "GPIO_72"),
0160     PINCTRL_PIN(73, "GPIO_73"),
0161     PINCTRL_PIN(74, "GPIO_74"),
0162     PINCTRL_PIN(75, "GPIO_75"),
0163     PINCTRL_PIN(76, "GPIO_76"),
0164     PINCTRL_PIN(77, "GPIO_77"),
0165     PINCTRL_PIN(78, "GPIO_78"),
0166     PINCTRL_PIN(79, "GPIO_79"),
0167     PINCTRL_PIN(80, "GPIO_80"),
0168     PINCTRL_PIN(81, "GPIO_81"),
0169     PINCTRL_PIN(82, "GPIO_82"),
0170     PINCTRL_PIN(83, "GPIO_83"),
0171     PINCTRL_PIN(84, "GPIO_84"),
0172     PINCTRL_PIN(85, "GPIO_85"),
0173     PINCTRL_PIN(86, "GPIO_86"),
0174     PINCTRL_PIN(87, "GPIO_87"),
0175     PINCTRL_PIN(88, "GPIO_88"),
0176     PINCTRL_PIN(89, "GPIO_89"),
0177     PINCTRL_PIN(90, "GPIO_90"),
0178     PINCTRL_PIN(91, "GPIO_91"),
0179     PINCTRL_PIN(92, "GPIO_92"),
0180     PINCTRL_PIN(93, "GPIO_93"),
0181     PINCTRL_PIN(94, "GPIO_94"),
0182     PINCTRL_PIN(95, "GPIO_95"),
0183     PINCTRL_PIN(96, "GPIO_96"),
0184     PINCTRL_PIN(97, "GPIO_97"),
0185     PINCTRL_PIN(98, "GPIO_98"),
0186     PINCTRL_PIN(99, "GPIO_99"),
0187     PINCTRL_PIN(100, "GPIO_100"),
0188     PINCTRL_PIN(101, "GPIO_101"),
0189     PINCTRL_PIN(102, "GPIO_102"),
0190     PINCTRL_PIN(103, "GPIO_103"),
0191     PINCTRL_PIN(104, "GPIO_104"),
0192     PINCTRL_PIN(105, "GPIO_105"),
0193     PINCTRL_PIN(106, "GPIO_106"),
0194     PINCTRL_PIN(107, "GPIO_107"),
0195     PINCTRL_PIN(108, "GPIO_108"),
0196     PINCTRL_PIN(109, "GPIO_109"),
0197     PINCTRL_PIN(110, "GPIO_110"),
0198     PINCTRL_PIN(111, "GPIO_111"),
0199     PINCTRL_PIN(112, "GPIO_112"),
0200     PINCTRL_PIN(113, "GPIO_113"),
0201     PINCTRL_PIN(114, "GPIO_114"),
0202     PINCTRL_PIN(115, "GPIO_115"),
0203     PINCTRL_PIN(116, "GPIO_116"),
0204     PINCTRL_PIN(117, "GPIO_117"),
0205     PINCTRL_PIN(118, "GPIO_118"),
0206     PINCTRL_PIN(119, "GPIO_119"),
0207     PINCTRL_PIN(120, "GPIO_120"),
0208     PINCTRL_PIN(121, "GPIO_121"),
0209     PINCTRL_PIN(122, "GPIO_122"),
0210     PINCTRL_PIN(123, "GPIO_123"),
0211     PINCTRL_PIN(124, "GPIO_124"),
0212     PINCTRL_PIN(125, "GPIO_125"),
0213     PINCTRL_PIN(126, "GPIO_126"),
0214     PINCTRL_PIN(127, "GPIO_127"),
0215     PINCTRL_PIN(128, "GPIO_128"),
0216     PINCTRL_PIN(129, "GPIO_129"),
0217     PINCTRL_PIN(130, "GPIO_130"),
0218     PINCTRL_PIN(131, "GPIO_131"),
0219     PINCTRL_PIN(132, "GPIO_132"),
0220     PINCTRL_PIN(133, "GPIO_133"),
0221     PINCTRL_PIN(134, "GPIO_134"),
0222     PINCTRL_PIN(135, "GPIO_135"),
0223     PINCTRL_PIN(136, "GPIO_136"),
0224     PINCTRL_PIN(137, "GPIO_137"),
0225     PINCTRL_PIN(138, "GPIO_138"),
0226     PINCTRL_PIN(139, "GPIO_139"),
0227     PINCTRL_PIN(140, "GPIO_140"),
0228     PINCTRL_PIN(141, "GPIO_141"),
0229     PINCTRL_PIN(142, "GPIO_142"),
0230     PINCTRL_PIN(143, "GPIO_143"),
0231     PINCTRL_PIN(144, "GPIO_144"),
0232     PINCTRL_PIN(145, "GPIO_145"),
0233     PINCTRL_PIN(146, "SDC1_RCLK"),
0234     PINCTRL_PIN(147, "SDC1_CLK"),
0235     PINCTRL_PIN(148, "SDC1_CMD"),
0236     PINCTRL_PIN(149, "SDC1_DATA"),
0237     PINCTRL_PIN(150, "SDC2_CLK"),
0238     PINCTRL_PIN(151, "SDC2_CMD"),
0239     PINCTRL_PIN(152, "SDC2_DATA"),
0240     PINCTRL_PIN(153, "SDC3_CLK"),
0241     PINCTRL_PIN(154, "SDC3_CMD"),
0242     PINCTRL_PIN(155, "SDC3_DATA"),
0243 };
0244 
0245 #define DECLARE_MSM_GPIO_PINS(pin) \
0246     static const unsigned int gpio##pin##_pins[] = { pin }
0247 DECLARE_MSM_GPIO_PINS(0);
0248 DECLARE_MSM_GPIO_PINS(1);
0249 DECLARE_MSM_GPIO_PINS(2);
0250 DECLARE_MSM_GPIO_PINS(3);
0251 DECLARE_MSM_GPIO_PINS(4);
0252 DECLARE_MSM_GPIO_PINS(5);
0253 DECLARE_MSM_GPIO_PINS(6);
0254 DECLARE_MSM_GPIO_PINS(7);
0255 DECLARE_MSM_GPIO_PINS(8);
0256 DECLARE_MSM_GPIO_PINS(9);
0257 DECLARE_MSM_GPIO_PINS(10);
0258 DECLARE_MSM_GPIO_PINS(11);
0259 DECLARE_MSM_GPIO_PINS(12);
0260 DECLARE_MSM_GPIO_PINS(13);
0261 DECLARE_MSM_GPIO_PINS(14);
0262 DECLARE_MSM_GPIO_PINS(15);
0263 DECLARE_MSM_GPIO_PINS(16);
0264 DECLARE_MSM_GPIO_PINS(17);
0265 DECLARE_MSM_GPIO_PINS(18);
0266 DECLARE_MSM_GPIO_PINS(19);
0267 DECLARE_MSM_GPIO_PINS(20);
0268 DECLARE_MSM_GPIO_PINS(21);
0269 DECLARE_MSM_GPIO_PINS(22);
0270 DECLARE_MSM_GPIO_PINS(23);
0271 DECLARE_MSM_GPIO_PINS(24);
0272 DECLARE_MSM_GPIO_PINS(25);
0273 DECLARE_MSM_GPIO_PINS(26);
0274 DECLARE_MSM_GPIO_PINS(27);
0275 DECLARE_MSM_GPIO_PINS(28);
0276 DECLARE_MSM_GPIO_PINS(29);
0277 DECLARE_MSM_GPIO_PINS(30);
0278 DECLARE_MSM_GPIO_PINS(31);
0279 DECLARE_MSM_GPIO_PINS(32);
0280 DECLARE_MSM_GPIO_PINS(33);
0281 DECLARE_MSM_GPIO_PINS(34);
0282 DECLARE_MSM_GPIO_PINS(35);
0283 DECLARE_MSM_GPIO_PINS(36);
0284 DECLARE_MSM_GPIO_PINS(37);
0285 DECLARE_MSM_GPIO_PINS(38);
0286 DECLARE_MSM_GPIO_PINS(39);
0287 DECLARE_MSM_GPIO_PINS(40);
0288 DECLARE_MSM_GPIO_PINS(41);
0289 DECLARE_MSM_GPIO_PINS(42);
0290 DECLARE_MSM_GPIO_PINS(43);
0291 DECLARE_MSM_GPIO_PINS(44);
0292 DECLARE_MSM_GPIO_PINS(45);
0293 DECLARE_MSM_GPIO_PINS(46);
0294 DECLARE_MSM_GPIO_PINS(47);
0295 DECLARE_MSM_GPIO_PINS(48);
0296 DECLARE_MSM_GPIO_PINS(49);
0297 DECLARE_MSM_GPIO_PINS(50);
0298 DECLARE_MSM_GPIO_PINS(51);
0299 DECLARE_MSM_GPIO_PINS(52);
0300 DECLARE_MSM_GPIO_PINS(53);
0301 DECLARE_MSM_GPIO_PINS(54);
0302 DECLARE_MSM_GPIO_PINS(55);
0303 DECLARE_MSM_GPIO_PINS(56);
0304 DECLARE_MSM_GPIO_PINS(57);
0305 DECLARE_MSM_GPIO_PINS(58);
0306 DECLARE_MSM_GPIO_PINS(59);
0307 DECLARE_MSM_GPIO_PINS(60);
0308 DECLARE_MSM_GPIO_PINS(61);
0309 DECLARE_MSM_GPIO_PINS(62);
0310 DECLARE_MSM_GPIO_PINS(63);
0311 DECLARE_MSM_GPIO_PINS(64);
0312 DECLARE_MSM_GPIO_PINS(65);
0313 DECLARE_MSM_GPIO_PINS(66);
0314 DECLARE_MSM_GPIO_PINS(67);
0315 DECLARE_MSM_GPIO_PINS(68);
0316 DECLARE_MSM_GPIO_PINS(69);
0317 DECLARE_MSM_GPIO_PINS(70);
0318 DECLARE_MSM_GPIO_PINS(71);
0319 DECLARE_MSM_GPIO_PINS(72);
0320 DECLARE_MSM_GPIO_PINS(73);
0321 DECLARE_MSM_GPIO_PINS(74);
0322 DECLARE_MSM_GPIO_PINS(75);
0323 DECLARE_MSM_GPIO_PINS(76);
0324 DECLARE_MSM_GPIO_PINS(77);
0325 DECLARE_MSM_GPIO_PINS(78);
0326 DECLARE_MSM_GPIO_PINS(79);
0327 DECLARE_MSM_GPIO_PINS(80);
0328 DECLARE_MSM_GPIO_PINS(81);
0329 DECLARE_MSM_GPIO_PINS(82);
0330 DECLARE_MSM_GPIO_PINS(83);
0331 DECLARE_MSM_GPIO_PINS(84);
0332 DECLARE_MSM_GPIO_PINS(85);
0333 DECLARE_MSM_GPIO_PINS(86);
0334 DECLARE_MSM_GPIO_PINS(87);
0335 DECLARE_MSM_GPIO_PINS(88);
0336 DECLARE_MSM_GPIO_PINS(89);
0337 DECLARE_MSM_GPIO_PINS(90);
0338 DECLARE_MSM_GPIO_PINS(91);
0339 DECLARE_MSM_GPIO_PINS(92);
0340 DECLARE_MSM_GPIO_PINS(93);
0341 DECLARE_MSM_GPIO_PINS(94);
0342 DECLARE_MSM_GPIO_PINS(95);
0343 DECLARE_MSM_GPIO_PINS(96);
0344 DECLARE_MSM_GPIO_PINS(97);
0345 DECLARE_MSM_GPIO_PINS(98);
0346 DECLARE_MSM_GPIO_PINS(99);
0347 DECLARE_MSM_GPIO_PINS(100);
0348 DECLARE_MSM_GPIO_PINS(101);
0349 DECLARE_MSM_GPIO_PINS(102);
0350 DECLARE_MSM_GPIO_PINS(103);
0351 DECLARE_MSM_GPIO_PINS(104);
0352 DECLARE_MSM_GPIO_PINS(105);
0353 DECLARE_MSM_GPIO_PINS(106);
0354 DECLARE_MSM_GPIO_PINS(107);
0355 DECLARE_MSM_GPIO_PINS(108);
0356 DECLARE_MSM_GPIO_PINS(109);
0357 DECLARE_MSM_GPIO_PINS(110);
0358 DECLARE_MSM_GPIO_PINS(111);
0359 DECLARE_MSM_GPIO_PINS(112);
0360 DECLARE_MSM_GPIO_PINS(113);
0361 DECLARE_MSM_GPIO_PINS(114);
0362 DECLARE_MSM_GPIO_PINS(115);
0363 DECLARE_MSM_GPIO_PINS(116);
0364 DECLARE_MSM_GPIO_PINS(117);
0365 DECLARE_MSM_GPIO_PINS(118);
0366 DECLARE_MSM_GPIO_PINS(119);
0367 DECLARE_MSM_GPIO_PINS(120);
0368 DECLARE_MSM_GPIO_PINS(121);
0369 DECLARE_MSM_GPIO_PINS(122);
0370 DECLARE_MSM_GPIO_PINS(123);
0371 DECLARE_MSM_GPIO_PINS(124);
0372 DECLARE_MSM_GPIO_PINS(125);
0373 DECLARE_MSM_GPIO_PINS(126);
0374 DECLARE_MSM_GPIO_PINS(127);
0375 DECLARE_MSM_GPIO_PINS(128);
0376 DECLARE_MSM_GPIO_PINS(129);
0377 DECLARE_MSM_GPIO_PINS(130);
0378 DECLARE_MSM_GPIO_PINS(131);
0379 DECLARE_MSM_GPIO_PINS(132);
0380 DECLARE_MSM_GPIO_PINS(133);
0381 DECLARE_MSM_GPIO_PINS(134);
0382 DECLARE_MSM_GPIO_PINS(135);
0383 DECLARE_MSM_GPIO_PINS(136);
0384 DECLARE_MSM_GPIO_PINS(137);
0385 DECLARE_MSM_GPIO_PINS(138);
0386 DECLARE_MSM_GPIO_PINS(139);
0387 DECLARE_MSM_GPIO_PINS(140);
0388 DECLARE_MSM_GPIO_PINS(141);
0389 DECLARE_MSM_GPIO_PINS(142);
0390 DECLARE_MSM_GPIO_PINS(143);
0391 DECLARE_MSM_GPIO_PINS(144);
0392 DECLARE_MSM_GPIO_PINS(145);
0393 
0394 static const unsigned int sdc1_rclk_pins[] = { 146 };
0395 static const unsigned int sdc1_clk_pins[] = { 147 };
0396 static const unsigned int sdc1_cmd_pins[] = { 148 };
0397 static const unsigned int sdc1_data_pins[] = { 149 };
0398 static const unsigned int sdc2_clk_pins[] = { 150 };
0399 static const unsigned int sdc2_cmd_pins[] = { 151 };
0400 static const unsigned int sdc2_data_pins[] = { 152 };
0401 static const unsigned int sdc3_clk_pins[] = { 153 };
0402 static const unsigned int sdc3_cmd_pins[] = { 154 };
0403 static const unsigned int sdc3_data_pins[] = { 155 };
0404 
0405 enum msm8994_functions {
0406     MSM_MUX_audio_ref_clk,
0407     MSM_MUX_blsp_i2c1,
0408     MSM_MUX_blsp_i2c2,
0409     MSM_MUX_blsp_i2c3,
0410     MSM_MUX_blsp_i2c4,
0411     MSM_MUX_blsp_i2c5,
0412     MSM_MUX_blsp_i2c6,
0413     MSM_MUX_blsp_i2c7,
0414     MSM_MUX_blsp_i2c8,
0415     MSM_MUX_blsp_i2c9,
0416     MSM_MUX_blsp_i2c10,
0417     MSM_MUX_blsp_i2c11,
0418     MSM_MUX_blsp_i2c12,
0419     MSM_MUX_blsp_spi1,
0420     MSM_MUX_blsp_spi1_cs1,
0421     MSM_MUX_blsp_spi1_cs2,
0422     MSM_MUX_blsp_spi1_cs3,
0423     MSM_MUX_blsp_spi2,
0424     MSM_MUX_blsp_spi2_cs1,
0425     MSM_MUX_blsp_spi2_cs2,
0426     MSM_MUX_blsp_spi2_cs3,
0427     MSM_MUX_blsp_spi3,
0428     MSM_MUX_blsp_spi4,
0429     MSM_MUX_blsp_spi5,
0430     MSM_MUX_blsp_spi6,
0431     MSM_MUX_blsp_spi7,
0432     MSM_MUX_blsp_spi8,
0433     MSM_MUX_blsp_spi9,
0434     MSM_MUX_blsp_spi10,
0435     MSM_MUX_blsp_spi10_cs1,
0436     MSM_MUX_blsp_spi10_cs2,
0437     MSM_MUX_blsp_spi10_cs3,
0438     MSM_MUX_blsp_spi11,
0439     MSM_MUX_blsp_spi12,
0440     MSM_MUX_blsp_uart1,
0441     MSM_MUX_blsp_uart2,
0442     MSM_MUX_blsp_uart3,
0443     MSM_MUX_blsp_uart4,
0444     MSM_MUX_blsp_uart5,
0445     MSM_MUX_blsp_uart6,
0446     MSM_MUX_blsp_uart7,
0447     MSM_MUX_blsp_uart8,
0448     MSM_MUX_blsp_uart9,
0449     MSM_MUX_blsp_uart10,
0450     MSM_MUX_blsp_uart11,
0451     MSM_MUX_blsp_uart12,
0452     MSM_MUX_blsp_uim1,
0453     MSM_MUX_blsp_uim2,
0454     MSM_MUX_blsp_uim3,
0455     MSM_MUX_blsp_uim4,
0456     MSM_MUX_blsp_uim5,
0457     MSM_MUX_blsp_uim6,
0458     MSM_MUX_blsp_uim7,
0459     MSM_MUX_blsp_uim8,
0460     MSM_MUX_blsp_uim9,
0461     MSM_MUX_blsp_uim10,
0462     MSM_MUX_blsp_uim11,
0463     MSM_MUX_blsp_uim12,
0464     MSM_MUX_blsp11_i2c_scl_b,
0465     MSM_MUX_blsp11_i2c_sda_b,
0466     MSM_MUX_blsp11_uart_rx_b,
0467     MSM_MUX_blsp11_uart_tx_b,
0468     MSM_MUX_cam_mclk0,
0469     MSM_MUX_cam_mclk1,
0470     MSM_MUX_cam_mclk2,
0471     MSM_MUX_cam_mclk3,
0472     MSM_MUX_cci_async_in0,
0473     MSM_MUX_cci_async_in1,
0474     MSM_MUX_cci_async_in2,
0475     MSM_MUX_cci_i2c0,
0476     MSM_MUX_cci_i2c1,
0477     MSM_MUX_cci_timer0,
0478     MSM_MUX_cci_timer1,
0479     MSM_MUX_cci_timer2,
0480     MSM_MUX_cci_timer3,
0481     MSM_MUX_cci_timer4,
0482     MSM_MUX_gcc_gp1_clk_a,
0483     MSM_MUX_gcc_gp1_clk_b,
0484     MSM_MUX_gcc_gp2_clk_a,
0485     MSM_MUX_gcc_gp2_clk_b,
0486     MSM_MUX_gcc_gp3_clk_a,
0487     MSM_MUX_gcc_gp3_clk_b,
0488     MSM_MUX_gp_mn,
0489     MSM_MUX_gp_pdm0,
0490     MSM_MUX_gp_pdm1,
0491     MSM_MUX_gp_pdm2,
0492     MSM_MUX_gp0_clk,
0493     MSM_MUX_gp1_clk,
0494     MSM_MUX_gps_tx,
0495     MSM_MUX_gsm_tx,
0496     MSM_MUX_hdmi_cec,
0497     MSM_MUX_hdmi_ddc,
0498     MSM_MUX_hdmi_hpd,
0499     MSM_MUX_hdmi_rcv,
0500     MSM_MUX_mdp_vsync,
0501     MSM_MUX_mss_lte,
0502     MSM_MUX_nav_pps,
0503     MSM_MUX_nav_tsync,
0504     MSM_MUX_qdss_cti_trig_in_a,
0505     MSM_MUX_qdss_cti_trig_in_b,
0506     MSM_MUX_qdss_cti_trig_in_c,
0507     MSM_MUX_qdss_cti_trig_in_d,
0508     MSM_MUX_qdss_cti_trig_out_a,
0509     MSM_MUX_qdss_cti_trig_out_b,
0510     MSM_MUX_qdss_cti_trig_out_c,
0511     MSM_MUX_qdss_cti_trig_out_d,
0512     MSM_MUX_qdss_traceclk_a,
0513     MSM_MUX_qdss_traceclk_b,
0514     MSM_MUX_qdss_tracectl_a,
0515     MSM_MUX_qdss_tracectl_b,
0516     MSM_MUX_qdss_tracedata_a,
0517     MSM_MUX_qdss_tracedata_b,
0518     MSM_MUX_qua_mi2s,
0519     MSM_MUX_pci_e0,
0520     MSM_MUX_pci_e1,
0521     MSM_MUX_pri_mi2s,
0522     MSM_MUX_sdc4,
0523     MSM_MUX_sec_mi2s,
0524     MSM_MUX_slimbus,
0525     MSM_MUX_spkr_i2s,
0526     MSM_MUX_ter_mi2s,
0527     MSM_MUX_tsif1,
0528     MSM_MUX_tsif2,
0529     MSM_MUX_uim1,
0530     MSM_MUX_uim2,
0531     MSM_MUX_uim3,
0532     MSM_MUX_uim4,
0533     MSM_MUX_uim_batt_alarm,
0534     MSM_MUX_gpio,
0535     MSM_MUX_NA,
0536 };
0537 
0538 static const char * const gpio_groups[] = {
0539     "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
0540     "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
0541     "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
0542     "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
0543     "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
0544     "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
0545     "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
0546     "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
0547     "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
0548     "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
0549     "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
0550     "gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
0551     "gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91",
0552     "gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98",
0553     "gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104",
0554     "gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110",
0555     "gpio111", "gpio112", "gpio113", "gpio114", "gpio115", "gpio116",
0556     "gpio117", "gpio118", "gpio119", "gpio120", "gpio121", "gpio122",
0557     "gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128",
0558     "gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134",
0559     "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140",
0560     "gpio141", "gpio142", "gpio143", "gpio144", "gpio145",
0561 };
0562 
0563 static const char * const blsp_spi1_groups[] = {
0564     "gpio0", "gpio1", "gpio2", "gpio3"
0565 };
0566 static const char * const blsp_uart1_groups[] = {
0567     "gpio0", "gpio1", "gpio2", "gpio3"
0568 };
0569 static const char * const blsp_uim1_groups[] = {
0570     "gpio0", "gpio1"
0571 };
0572 static const char * const hdmi_rcv_groups[] = {
0573     "gpio0"
0574 };
0575 static const char * const blsp_i2c1_groups[] = {
0576     "gpio2", "gpio3"
0577 };
0578 static const char * const blsp_spi2_groups[] = {
0579     "gpio4", "gpio5", "gpio6", "gpio7"
0580 };
0581 static const char * const blsp_uart2_groups[] = {
0582     "gpio4", "gpio5", "gpio6", "gpio7"
0583 };
0584 static const char * const blsp_uim2_groups[] = {
0585     "gpio4", "gpio5"
0586 };
0587 static const char * const qdss_cti_trig_out_b_groups[] = {
0588     "gpio4",
0589 };
0590 static const char * const qdss_cti_trig_in_b_groups[] = {
0591     "gpio5",
0592 };
0593 static const char * const blsp_i2c2_groups[] = {
0594     "gpio6", "gpio7"
0595 };
0596 static const char * const blsp_spi3_groups[] = {
0597     "gpio8", "gpio9", "gpio10", "gpio11"
0598 };
0599 static const char * const blsp_uart3_groups[] = {
0600     "gpio8", "gpio9", "gpio10", "gpio11"
0601 };
0602 static const char * const blsp_uim3_groups[] = {
0603     "gpio8", "gpio9"
0604 };
0605 static const char * const blsp_spi1_cs1_groups[] = {
0606     "gpio8"
0607 };
0608 static const char * const blsp_spi1_cs2_groups[] = {
0609     "gpio9", "gpio11"
0610 };
0611 static const char * const mdp_vsync_groups[] = {
0612     "gpio10", "gpio11", "gpio12"
0613 };
0614 static const char * const blsp_i2c3_groups[] = {
0615     "gpio10", "gpio11"
0616 };
0617 static const char * const blsp_spi1_cs3_groups[] = {
0618     "gpio10"
0619 };
0620 static const char * const qdss_tracedata_b_groups[] = {
0621     "gpio13", "gpio14", "gpio15", "gpio16", "gpio17", "gpio18",
0622     "gpio19", "gpio21", "gpio22", "gpio23", "gpio25", "gpio26",
0623     "gpio57", "gpio58", "gpio92", "gpio93",
0624 };
0625 static const char * const cam_mclk0_groups[] = {
0626     "gpio13"
0627 };
0628 static const char * const cam_mclk1_groups[] = {
0629     "gpio14"
0630 };
0631 static const char * const cam_mclk2_groups[] = {
0632     "gpio15"
0633 };
0634 static const char * const cam_mclk3_groups[] = {
0635     "gpio16"
0636 };
0637 static const char * const cci_i2c0_groups[] = {
0638     "gpio17", "gpio18"
0639 };
0640 static const char * const blsp_spi4_groups[] = {
0641     "gpio17", "gpio18", "gpio19", "gpio20"
0642 };
0643 static const char * const blsp_uart4_groups[] = {
0644     "gpio17", "gpio18", "gpio19", "gpio20"
0645 };
0646 static const char * const blsp_uim4_groups[] = {
0647     "gpio17", "gpio18"
0648 };
0649 static const char * const cci_i2c1_groups[] = {
0650     "gpio19", "gpio20"
0651 };
0652 static const char * const blsp_i2c4_groups[] = {
0653     "gpio19", "gpio20"
0654 };
0655 static const char * const cci_timer0_groups[] = {
0656     "gpio21"
0657 };
0658 static const char * const blsp_spi5_groups[] = {
0659     "gpio21", "gpio22", "gpio23", "gpio24"
0660 };
0661 static const char * const blsp_uart5_groups[] = {
0662     "gpio21", "gpio22", "gpio23", "gpio24"
0663 };
0664 static const char * const blsp_uim5_groups[] = {
0665     "gpio21", "gpio22"
0666 };
0667 static const char * const cci_timer1_groups[] = {
0668     "gpio22"
0669 };
0670 static const char * const cci_timer2_groups[] = {
0671     "gpio23"
0672 };
0673 static const char * const blsp_i2c5_groups[] = {
0674     "gpio23", "gpio24"
0675 };
0676 static const char * const cci_timer3_groups[] = {
0677     "gpio24"
0678 };
0679 static const char * const cci_async_in1_groups[] = {
0680     "gpio24"
0681 };
0682 static const char * const cci_timer4_groups[] = {
0683     "gpio25"
0684 };
0685 static const char * const cci_async_in2_groups[] = {
0686     "gpio25"
0687 };
0688 static const char * const blsp_spi6_groups[] = {
0689     "gpio25", "gpio26", "gpio27", "gpio28"
0690 };
0691 static const char * const blsp_uart6_groups[] = {
0692     "gpio25", "gpio26", "gpio27", "gpio28"
0693 };
0694 static const char * const blsp_uim6_groups[] = {
0695     "gpio25", "gpio26"
0696 };
0697 static const char * const cci_async_in0_groups[] = {
0698     "gpio26"
0699 };
0700 static const char * const gp0_clk_groups[] = {
0701     "gpio26"
0702 };
0703 static const char * const gp1_clk_groups[] = {
0704     "gpio27", "gpio57", "gpio78"
0705 };
0706 static const char * const blsp_i2c6_groups[] = {
0707     "gpio27", "gpio28"
0708 };
0709 static const char * const qdss_tracectl_a_groups[] = {
0710     "gpio27",
0711 };
0712 static const char * const qdss_traceclk_a_groups[] = {
0713     "gpio28",
0714 };
0715 static const char * const gp_mn_groups[] = {
0716     "gpio29"
0717 };
0718 static const char * const hdmi_cec_groups[] = {
0719     "gpio31"
0720 };
0721 static const char * const hdmi_ddc_groups[] = {
0722     "gpio32", "gpio33"
0723 };
0724 static const char * const hdmi_hpd_groups[] = {
0725     "gpio34"
0726 };
0727 static const char * const uim3_groups[] = {
0728     "gpio35", "gpio36", "gpio37", "gpio38"
0729 };
0730 static const char * const pci_e1_groups[] = {
0731     "gpio35", "gpio36",
0732 };
0733 static const char * const blsp_spi7_groups[] = {
0734     "gpio41", "gpio42", "gpio43", "gpio44"
0735 };
0736 static const char * const blsp_uart7_groups[] = {
0737     "gpio41", "gpio42", "gpio43", "gpio44"
0738 };
0739 static const char * const blsp_uim7_groups[] = {
0740     "gpio41", "gpio42"
0741 };
0742 static const char * const qdss_cti_trig_out_c_groups[] = {
0743     "gpio41",
0744 };
0745 static const char * const qdss_cti_trig_in_c_groups[] = {
0746     "gpio42",
0747 };
0748 static const char * const blsp_i2c7_groups[] = {
0749     "gpio43", "gpio44"
0750 };
0751 static const char * const blsp_spi8_groups[] = {
0752     "gpio45", "gpio46", "gpio47", "gpio48"
0753 };
0754 static const char * const blsp_uart8_groups[] = {
0755     "gpio45", "gpio46", "gpio47", "gpio48"
0756 };
0757 static const char * const blsp_uim8_groups[] = {
0758     "gpio45", "gpio46"
0759 };
0760 static const char * const blsp_i2c8_groups[] = {
0761     "gpio47", "gpio48"
0762 };
0763 static const char * const blsp_spi10_cs1_groups[] = {
0764     "gpio47", "gpio67"
0765 };
0766 static const char * const blsp_spi10_cs2_groups[] = {
0767     "gpio48", "gpio68"
0768 };
0769 static const char * const uim2_groups[] = {
0770     "gpio49", "gpio50", "gpio51", "gpio52"
0771 };
0772 static const char * const blsp_spi9_groups[] = {
0773     "gpio49", "gpio50", "gpio51", "gpio52"
0774 };
0775 static const char * const blsp_uart9_groups[] = {
0776     "gpio49", "gpio50", "gpio51", "gpio52"
0777 };
0778 static const char * const blsp_uim9_groups[] = {
0779     "gpio49", "gpio50"
0780 };
0781 static const char * const blsp_i2c9_groups[] = {
0782     "gpio51", "gpio52"
0783 };
0784 static const char * const pci_e0_groups[] = {
0785     "gpio53", "gpio54",
0786 };
0787 static const char * const uim4_groups[] = {
0788     "gpio53", "gpio54", "gpio55", "gpio56"
0789 };
0790 static const char * const blsp_spi10_groups[] = {
0791     "gpio53", "gpio54", "gpio55", "gpio56"
0792 };
0793 static const char * const blsp_uart10_groups[] = {
0794     "gpio53", "gpio54", "gpio55", "gpio56"
0795 };
0796 static const char * const blsp_uim10_groups[] = {
0797     "gpio53", "gpio54"
0798 };
0799 static const char * const qdss_tracedata_a_groups[] = {
0800     "gpio53", "gpio54", "gpio63", "gpio64", "gpio65",
0801     "gpio66", "gpio67", "gpio74", "gpio75", "gpio76",
0802     "gpio77", "gpio85", "gpio86", "gpio87", "gpio89",
0803     "gpio90"
0804 };
0805 static const char * const gp_pdm0_groups[] = {
0806     "gpio54", "gpio95"
0807 };
0808 static const char * const blsp_i2c10_groups[] = {
0809     "gpio55", "gpio56"
0810 };
0811 static const char * const qdss_cti_trig_in_a_groups[] = {
0812     "gpio55",
0813 };
0814 static const char * const qdss_cti_trig_out_a_groups[] = {
0815     "gpio56",
0816 };
0817 static const char * const qua_mi2s_groups[] = {
0818     "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
0819 };
0820 static const char * const gcc_gp1_clk_a_groups[] = {
0821     "gpio57"
0822 };
0823 static const char * const gcc_gp2_clk_a_groups[] = {
0824     "gpio58"
0825 };
0826 static const char * const gcc_gp3_clk_a_groups[] = {
0827     "gpio59"
0828 };
0829 static const char * const blsp_spi2_cs1_groups[] = {
0830     "gpio62"
0831 };
0832 static const char * const blsp_spi2_cs2_groups[] = {
0833     "gpio63"
0834 };
0835 static const char * const gp_pdm2_groups[] = {
0836     "gpio63", "gpio79"
0837 };
0838 static const char * const pri_mi2s_groups[] = {
0839     "gpio64", "gpio65", "gpio66", "gpio67", "gpio68"
0840 };
0841 static const char * const blsp_spi2_cs3_groups[] = {
0842     "gpio66"
0843 };
0844 static const char * const spkr_i2s_groups[] = {
0845     "gpio69", "gpio70", "gpio71", "gpio72"
0846 };
0847 static const char * const audio_ref_clk_groups[] = {
0848     "gpio69"
0849 };
0850 static const char * const slimbus_groups[] = {
0851     "gpio70", "gpio71"
0852 };
0853 static const char * const ter_mi2s_groups[] = {
0854     "gpio73", "gpio74", "gpio75", "gpio76", "gpio77"
0855 };
0856 static const char * const gp_pdm1_groups[] = {
0857     "gpio74", "gpio86"
0858 };
0859 static const char * const sec_mi2s_groups[] = {
0860     "gpio78", "gpio79", "gpio80", "gpio81", "gpio82"
0861 };
0862 static const char * const gcc_gp1_clk_b_groups[] = {
0863     "gpio78"
0864 };
0865 static const char * const blsp_spi11_groups[] = {
0866     "gpio81", "gpio82", "gpio83", "gpio84"
0867 };
0868 static const char * const blsp_uart11_groups[] = {
0869     "gpio81", "gpio82", "gpio83", "gpio84"
0870 };
0871 static const char * const blsp_uim11_groups[] = {
0872     "gpio81", "gpio82"
0873 };
0874 static const char * const gcc_gp2_clk_b_groups[] = {
0875     "gpio81"
0876 };
0877 static const char * const gcc_gp3_clk_b_groups[] = {
0878     "gpio82"
0879 };
0880 static const char * const blsp_i2c11_groups[] = {
0881     "gpio83", "gpio84"
0882 };
0883 static const char * const blsp_uart12_groups[] = {
0884     "gpio85", "gpio86", "gpio87", "gpio88"
0885 };
0886 static const char * const blsp_uim12_groups[] = {
0887     "gpio85", "gpio86"
0888 };
0889 static const char * const blsp_i2c12_groups[] = {
0890     "gpio87", "gpio88"
0891 };
0892 static const char * const blsp_spi12_groups[] = {
0893     "gpio85", "gpio86", "gpio87", "gpio88"
0894 };
0895 static const char * const tsif1_groups[] = {
0896     "gpio89", "gpio90", "gpio91", "gpio110", "gpio111"
0897 };
0898 static const char * const blsp_spi10_cs3_groups[] = {
0899     "gpio90"
0900 };
0901 static const char * const sdc4_groups[] = {
0902     "gpio91", "gpio92", "gpio93", "gpio94", "gpio95", "gpio96"
0903 };
0904 static const char * const qdss_traceclk_b_groups[] = {
0905     "gpio91",
0906 };
0907 static const char * const tsif2_groups[] = {
0908     "gpio92", "gpio93", "gpio94", "gpio95", "gpio96"
0909 };
0910 static const char * const qdss_tracectl_b_groups[] = {
0911     "gpio94",
0912 };
0913 static const char * const qdss_cti_trig_out_d_groups[] = {
0914     "gpio95",
0915 };
0916 static const char * const qdss_cti_trig_in_d_groups[] = {
0917     "gpio96",
0918 };
0919 static const char * const uim1_groups[] = {
0920     "gpio97", "gpio98", "gpio99", "gpio100"
0921 };
0922 static const char * const uim_batt_alarm_groups[] = {
0923     "gpio101"
0924 };
0925 static const char * const blsp11_uart_tx_b_groups[] = {
0926     "gpio111"
0927 };
0928 static const char * const blsp11_uart_rx_b_groups[] = {
0929     "gpio112"
0930 };
0931 static const char * const blsp11_i2c_sda_b_groups[] = {
0932     "gpio113"
0933 };
0934 static const char * const blsp11_i2c_scl_b_groups[] = {
0935     "gpio114"
0936 };
0937 static const char * const gsm_tx_groups[] = {
0938     "gpio126", "gpio131", "gpio132", "gpio133"
0939 };
0940 static const char * const nav_tsync_groups[] = {
0941     "gpio127"
0942 };
0943 static const char * const nav_pps_groups[] = {
0944     "gpio127"
0945 };
0946 static const char * const gps_tx_groups[] = {
0947     "gpio130"
0948 };
0949 static const char * const mss_lte_groups[] = {
0950     "gpio134", "gpio135"
0951 };
0952 
0953 static const struct msm_function msm8994_functions[] = {
0954     FUNCTION(audio_ref_clk),
0955     FUNCTION(blsp_i2c1),
0956     FUNCTION(blsp_i2c2),
0957     FUNCTION(blsp_i2c3),
0958     FUNCTION(blsp_i2c4),
0959     FUNCTION(blsp_i2c5),
0960     FUNCTION(blsp_i2c6),
0961     FUNCTION(blsp_i2c7),
0962     FUNCTION(blsp_i2c8),
0963     FUNCTION(blsp_i2c9),
0964     FUNCTION(blsp_i2c10),
0965     FUNCTION(blsp_i2c11),
0966     FUNCTION(blsp_i2c12),
0967     FUNCTION(blsp_spi1),
0968     FUNCTION(blsp_spi1_cs1),
0969     FUNCTION(blsp_spi1_cs2),
0970     FUNCTION(blsp_spi1_cs3),
0971     FUNCTION(blsp_spi2),
0972     FUNCTION(blsp_spi2_cs1),
0973     FUNCTION(blsp_spi2_cs2),
0974     FUNCTION(blsp_spi2_cs3),
0975     FUNCTION(blsp_spi3),
0976     FUNCTION(blsp_spi4),
0977     FUNCTION(blsp_spi5),
0978     FUNCTION(blsp_spi6),
0979     FUNCTION(blsp_spi7),
0980     FUNCTION(blsp_spi8),
0981     FUNCTION(blsp_spi9),
0982     FUNCTION(blsp_spi10),
0983     FUNCTION(blsp_spi10_cs1),
0984     FUNCTION(blsp_spi10_cs2),
0985     FUNCTION(blsp_spi10_cs3),
0986     FUNCTION(blsp_spi11),
0987     FUNCTION(blsp_spi12),
0988     FUNCTION(blsp_uart1),
0989     FUNCTION(blsp_uart2),
0990     FUNCTION(blsp_uart3),
0991     FUNCTION(blsp_uart4),
0992     FUNCTION(blsp_uart5),
0993     FUNCTION(blsp_uart6),
0994     FUNCTION(blsp_uart7),
0995     FUNCTION(blsp_uart8),
0996     FUNCTION(blsp_uart9),
0997     FUNCTION(blsp_uart10),
0998     FUNCTION(blsp_uart11),
0999     FUNCTION(blsp_uart12),
1000     FUNCTION(blsp_uim1),
1001     FUNCTION(blsp_uim2),
1002     FUNCTION(blsp_uim3),
1003     FUNCTION(blsp_uim4),
1004     FUNCTION(blsp_uim5),
1005     FUNCTION(blsp_uim6),
1006     FUNCTION(blsp_uim7),
1007     FUNCTION(blsp_uim8),
1008     FUNCTION(blsp_uim9),
1009     FUNCTION(blsp_uim10),
1010     FUNCTION(blsp_uim11),
1011     FUNCTION(blsp_uim12),
1012     FUNCTION(blsp11_i2c_scl_b),
1013     FUNCTION(blsp11_i2c_sda_b),
1014     FUNCTION(blsp11_uart_rx_b),
1015     FUNCTION(blsp11_uart_tx_b),
1016     FUNCTION(cam_mclk0),
1017     FUNCTION(cam_mclk1),
1018     FUNCTION(cam_mclk2),
1019     FUNCTION(cam_mclk3),
1020     FUNCTION(cci_async_in0),
1021     FUNCTION(cci_async_in1),
1022     FUNCTION(cci_async_in2),
1023     FUNCTION(cci_i2c0),
1024     FUNCTION(cci_i2c1),
1025     FUNCTION(cci_timer0),
1026     FUNCTION(cci_timer1),
1027     FUNCTION(cci_timer2),
1028     FUNCTION(cci_timer3),
1029     FUNCTION(cci_timer4),
1030     FUNCTION(gcc_gp1_clk_a),
1031     FUNCTION(gcc_gp1_clk_b),
1032     FUNCTION(gcc_gp2_clk_a),
1033     FUNCTION(gcc_gp2_clk_b),
1034     FUNCTION(gcc_gp3_clk_a),
1035     FUNCTION(gcc_gp3_clk_b),
1036     FUNCTION(gp_mn),
1037     FUNCTION(gp_pdm0),
1038     FUNCTION(gp_pdm1),
1039     FUNCTION(gp_pdm2),
1040     FUNCTION(gp0_clk),
1041     FUNCTION(gp1_clk),
1042     FUNCTION(gps_tx),
1043     FUNCTION(gsm_tx),
1044     FUNCTION(hdmi_cec),
1045     FUNCTION(hdmi_ddc),
1046     FUNCTION(hdmi_hpd),
1047     FUNCTION(hdmi_rcv),
1048     FUNCTION(mdp_vsync),
1049     FUNCTION(mss_lte),
1050     FUNCTION(nav_pps),
1051     FUNCTION(nav_tsync),
1052     FUNCTION(qdss_cti_trig_in_a),
1053     FUNCTION(qdss_cti_trig_in_b),
1054     FUNCTION(qdss_cti_trig_in_c),
1055     FUNCTION(qdss_cti_trig_in_d),
1056     FUNCTION(qdss_cti_trig_out_a),
1057     FUNCTION(qdss_cti_trig_out_b),
1058     FUNCTION(qdss_cti_trig_out_c),
1059     FUNCTION(qdss_cti_trig_out_d),
1060     FUNCTION(qdss_traceclk_a),
1061     FUNCTION(qdss_traceclk_b),
1062     FUNCTION(qdss_tracectl_a),
1063     FUNCTION(qdss_tracectl_b),
1064     FUNCTION(qdss_tracedata_a),
1065     FUNCTION(qdss_tracedata_b),
1066     FUNCTION(qua_mi2s),
1067     FUNCTION(pci_e0),
1068     FUNCTION(pci_e1),
1069     FUNCTION(pri_mi2s),
1070     FUNCTION(sdc4),
1071     FUNCTION(sec_mi2s),
1072     FUNCTION(slimbus),
1073     FUNCTION(spkr_i2s),
1074     FUNCTION(ter_mi2s),
1075     FUNCTION(tsif1),
1076     FUNCTION(tsif2),
1077     FUNCTION(uim_batt_alarm),
1078     FUNCTION(uim1),
1079     FUNCTION(uim2),
1080     FUNCTION(uim3),
1081     FUNCTION(uim4),
1082     FUNCTION(gpio),
1083 };
1084 
1085 static const struct msm_pingroup msm8994_groups[] = {
1086     PINGROUP(0,   blsp_spi1, blsp_uart1, blsp_uim1, hdmi_rcv, NA, NA, NA,
1087          NA, NA, NA, NA),
1088     PINGROUP(1,   blsp_spi1, blsp_uart1, blsp_uim1, NA, NA, NA, NA, NA, NA,
1089          NA, NA),
1090     PINGROUP(2,   blsp_spi1, blsp_uart1, blsp_i2c1, NA, NA, NA, NA, NA, NA,
1091          NA, NA),
1092     PINGROUP(3,   blsp_spi1, blsp_uart1, blsp_i2c1, NA, NA, NA, NA, NA, NA,
1093          NA, NA),
1094     PINGROUP(4,   blsp_spi2, blsp_uart2, blsp_uim2, NA, qdss_cti_trig_out_b,
1095          NA, NA, NA, NA, NA, NA),
1096     PINGROUP(5,   blsp_spi2, blsp_uart2, blsp_uim2, NA, qdss_cti_trig_in_b,
1097          NA, NA, NA, NA, NA, NA),
1098     PINGROUP(6,   blsp_spi2, blsp_uart2, blsp_i2c2, NA, NA, NA, NA, NA, NA,
1099          NA, NA),
1100     PINGROUP(7,   blsp_spi2, blsp_uart2, blsp_i2c2, NA, NA, NA, NA, NA, NA,
1101          NA, NA),
1102     PINGROUP(8,   blsp_spi3, blsp_uart3, blsp_uim3, blsp_spi1_cs1, NA, NA,
1103          NA, NA, NA, NA, NA),
1104     PINGROUP(9,   blsp_spi3, blsp_uart3, blsp_uim3, blsp_spi1_cs2, NA, NA,
1105          NA, NA, NA, NA, NA),
1106     PINGROUP(10,  mdp_vsync, blsp_spi3, blsp_uart3, blsp_i2c3,
1107          blsp_spi1_cs3, NA, NA, NA, NA, NA, NA),
1108     PINGROUP(11,  mdp_vsync, blsp_spi3, blsp_uart3, blsp_i2c3,
1109          blsp_spi1_cs2, NA, NA, NA, NA, NA, NA),
1110     PINGROUP(12,  mdp_vsync, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1111     PINGROUP(13,  cam_mclk0, NA, NA, qdss_tracedata_b, NA, NA, NA, NA, NA,
1112          NA, NA),
1113     PINGROUP(14,  cam_mclk1, NA, NA, qdss_tracedata_b, NA, NA, NA, NA, NA,
1114          NA, NA),
1115     PINGROUP(15,  cam_mclk2, NA, qdss_tracedata_b, NA, NA, NA, NA, NA, NA,
1116          NA, NA),
1117     PINGROUP(16,  cam_mclk3, NA, qdss_tracedata_b, NA, NA, NA, NA, NA, NA,
1118          NA, NA),
1119     PINGROUP(17,  cci_i2c0, blsp_spi4, blsp_uart4, blsp_uim4, NA,
1120          qdss_tracedata_b, NA, NA, NA, NA, NA),
1121     PINGROUP(18,  cci_i2c0, blsp_spi4, blsp_uart4, blsp_uim4, NA,
1122          qdss_tracedata_b, NA, NA, NA, NA, NA),
1123     PINGROUP(19,  cci_i2c1, blsp_spi4, blsp_uart4, blsp_i2c4, NA,
1124          qdss_tracedata_b, NA, NA, NA, NA, NA),
1125     PINGROUP(20,  cci_i2c1, blsp_spi4, blsp_uart4, blsp_i2c4, NA, NA, NA,
1126          NA, NA, NA, NA),
1127     PINGROUP(21,  cci_timer0, blsp_spi5, blsp_uart5, blsp_uim5, NA,
1128          qdss_tracedata_b, NA, NA, NA, NA, NA),
1129     PINGROUP(22,  cci_timer1, blsp_spi5, blsp_uart5, blsp_uim5, NA,
1130          qdss_tracedata_b, NA, NA, NA, NA, NA),
1131     PINGROUP(23,  cci_timer2, blsp_spi5, blsp_uart5, blsp_i2c5, NA, NA,
1132          qdss_tracedata_b, NA, NA, NA, NA),
1133     PINGROUP(24,  cci_timer3, cci_async_in1, blsp_spi5, blsp_uart5,
1134          blsp_i2c5, NA, NA, NA, NA, NA, NA),
1135     PINGROUP(25,  cci_timer4, cci_async_in2, blsp_spi6, blsp_uart6,
1136          blsp_uim6, NA, NA, qdss_tracedata_b, NA, NA, NA),
1137     PINGROUP(26,  cci_async_in0, blsp_spi6, blsp_uart6, blsp_uim6, gp0_clk,
1138          NA, qdss_tracedata_b, NA, NA, NA, NA),
1139     PINGROUP(27,  blsp_spi6, blsp_uart6, blsp_i2c6, gp1_clk,
1140          qdss_tracectl_a, NA, NA, NA, NA, NA, NA),
1141     PINGROUP(28,  blsp_spi6, blsp_uart6, blsp_i2c6, qdss_traceclk_a, NA,
1142          NA, NA, NA, NA, NA, NA),
1143     PINGROUP(29,  gp_mn, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1144     PINGROUP(30,  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1145     PINGROUP(31,  hdmi_cec, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1146     PINGROUP(32,  hdmi_ddc, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1147     PINGROUP(33,  hdmi_ddc, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1148     PINGROUP(34,  hdmi_hpd, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1149     PINGROUP(35,  uim3, pci_e1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1150     PINGROUP(36,  uim3, pci_e1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1151     PINGROUP(37,  uim3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1152     PINGROUP(38,  uim3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1153     PINGROUP(39,  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1154     PINGROUP(40,  NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1155     PINGROUP(41,  blsp_spi7, blsp_uart7, blsp_uim7, qdss_cti_trig_out_c,
1156          NA, NA, NA, NA, NA, NA, NA),
1157     PINGROUP(42,  blsp_spi7, blsp_uart7, blsp_uim7, qdss_cti_trig_in_c, NA,
1158          NA, NA, NA, NA, NA, NA),
1159     PINGROUP(43,  blsp_spi7, blsp_uart7, blsp_i2c7, NA, NA, NA, NA, NA, NA,
1160          NA, NA),
1161     PINGROUP(44,  blsp_spi7, blsp_uart7, blsp_i2c7, NA, NA, NA, NA, NA, NA,
1162          NA, NA),
1163     PINGROUP(45,  blsp_spi8, blsp_uart8, blsp_uim8, NA, NA, NA, NA, NA, NA,
1164          NA, NA),
1165     PINGROUP(46,  blsp_spi8, blsp_uart8, blsp_uim8, NA, NA, NA, NA, NA, NA,
1166          NA, NA),
1167     PINGROUP(47,  blsp_spi8, blsp_uart8, blsp_i2c8, blsp_spi10_cs1, NA, NA,
1168          NA, NA, NA, NA, NA),
1169     PINGROUP(48,  blsp_spi8, blsp_uart8, blsp_i2c8, blsp_spi10_cs2, NA, NA,
1170          NA, NA, NA, NA, NA),
1171     PINGROUP(49,  uim2, blsp_spi9, blsp_uart9, blsp_uim9, NA, NA, NA, NA,
1172          NA, NA, NA),
1173     PINGROUP(50,  uim2, blsp_spi9, blsp_uart9, blsp_uim9, NA, NA, NA, NA,
1174          NA, NA, NA),
1175     PINGROUP(51,  uim2, blsp_spi9, blsp_uart9, blsp_i2c9, NA, NA, NA, NA,
1176          NA, NA, NA),
1177     PINGROUP(52,  uim2, blsp_spi9, blsp_uart9, blsp_i2c9, NA, NA, NA, NA,
1178          NA, NA, NA),
1179     PINGROUP(53,  uim4, pci_e0, blsp_spi10, blsp_uart10, blsp_uim10, NA,
1180          NA, qdss_tracedata_a, NA, NA, NA),
1181     PINGROUP(54,  uim4, pci_e0, blsp_spi10, blsp_uart10, blsp_uim10,
1182          gp_pdm0, NA, NA, qdss_tracedata_a, NA, NA),
1183     PINGROUP(55,  uim4, blsp_spi10, blsp_uart10, blsp_i2c10, NA, NA, NA,
1184          qdss_cti_trig_in_a, NA, NA, NA),
1185     PINGROUP(56,  uim4, blsp_spi10, blsp_uart10, blsp_i2c10, NA, NA,
1186          qdss_cti_trig_out_a, NA, NA, NA, NA),
1187     PINGROUP(57,  qua_mi2s, gcc_gp1_clk_a, NA, NA, qdss_tracedata_b, NA, NA,
1188          NA, NA, NA, NA),
1189     PINGROUP(58,  qua_mi2s, gcc_gp2_clk_a, NA, NA, qdss_tracedata_b, NA, NA,
1190          NA, NA, NA, NA),
1191     PINGROUP(59,  qua_mi2s, gcc_gp3_clk_a, NA, NA, NA, NA, NA, NA, NA, NA,
1192          NA),
1193     PINGROUP(60,  qua_mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1194     PINGROUP(61,  qua_mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1195     PINGROUP(62,  qua_mi2s, blsp_spi2_cs1, NA, NA, NA, NA, NA, NA, NA, NA,
1196          NA),
1197     PINGROUP(63,  qua_mi2s, blsp_spi2_cs2, gp_pdm2, NA, NA, NA, NA, NA,
1198          qdss_tracedata_a, NA, NA),
1199     PINGROUP(64,  pri_mi2s, NA, NA, NA, qdss_tracedata_a, NA, NA, NA, NA,
1200          NA, NA),
1201     PINGROUP(65,  pri_mi2s, NA, NA, NA, qdss_tracedata_a, NA, NA, NA, NA,
1202          NA, NA),
1203     PINGROUP(66,  pri_mi2s, blsp_spi2_cs3, NA, NA, NA, qdss_tracedata_a,
1204          NA, NA, NA, NA, NA),
1205     PINGROUP(67,  pri_mi2s, blsp_spi10_cs1, NA, NA, NA, qdss_tracedata_a,
1206          NA, NA, NA, NA, NA),
1207     PINGROUP(68,  pri_mi2s, blsp_spi10_cs2, NA, NA, NA, NA, NA, NA, NA, NA,
1208          NA),
1209     PINGROUP(69,  spkr_i2s, audio_ref_clk, NA, NA, NA, NA, NA, NA, NA, NA,
1210          NA),
1211     PINGROUP(70,  slimbus, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1212     PINGROUP(71,  slimbus, spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1213     PINGROUP(72,  spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1214     PINGROUP(73,  ter_mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1215     PINGROUP(74,  ter_mi2s, gp_pdm1, NA, NA, NA, qdss_tracedata_a, NA, NA,
1216          NA, NA, NA),
1217     PINGROUP(75,  ter_mi2s, NA, NA, qdss_tracedata_a, NA, NA, NA, NA, NA,
1218          NA, NA),
1219     PINGROUP(76,  ter_mi2s, NA, NA, qdss_tracedata_a, NA, NA, NA, NA, NA,
1220          NA, NA),
1221     PINGROUP(77,  ter_mi2s, NA, NA, qdss_tracedata_a, NA, NA, NA, NA, NA,
1222          NA, NA),
1223     PINGROUP(78,  sec_mi2s, gcc_gp1_clk_b, NA, NA, NA, NA, NA, NA, NA, NA,
1224          NA),
1225     PINGROUP(79,  sec_mi2s, gp_pdm2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1226     PINGROUP(80,  sec_mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1227     PINGROUP(81,  sec_mi2s, blsp_spi11, blsp_uart11, blsp_uim11,
1228          gcc_gp2_clk_b, NA, NA, NA, NA, NA, NA),
1229     PINGROUP(82,  sec_mi2s, blsp_spi11, blsp_uart11, blsp_uim11,
1230          gcc_gp3_clk_b, NA, NA, NA, NA, NA, NA),
1231     PINGROUP(83,  blsp_spi11, blsp_uart11, blsp_i2c11, NA, NA, NA, NA, NA,
1232          NA, NA, NA),
1233     PINGROUP(84,  blsp_spi11, blsp_uart11, blsp_i2c11, NA, NA, NA, NA, NA,
1234          NA, NA, NA),
1235     PINGROUP(85,  blsp_spi12, blsp_uart12, blsp_uim12, NA, NA,
1236          qdss_tracedata_a, NA, NA, NA, NA, NA),
1237     PINGROUP(86,  blsp_spi12, blsp_uart12, blsp_uim12, gp_pdm1, NA,
1238          qdss_tracedata_a, NA, NA, NA, NA, NA),
1239     PINGROUP(87,  blsp_spi12, blsp_uart12, blsp_i2c12, NA,
1240          qdss_tracedata_a, NA, NA, NA, NA, NA, NA),
1241     PINGROUP(88,  blsp_spi12, blsp_uart12, blsp_i2c12, NA, NA, NA, NA, NA,
1242          NA, NA, NA),
1243     PINGROUP(89,  tsif1, NA, qdss_tracedata_a, NA, NA, NA, NA, NA, NA, NA,
1244          NA),
1245     PINGROUP(90,  tsif1, blsp_spi10_cs3, qdss_tracedata_a, NA, NA, NA, NA,
1246          NA, NA, NA, NA),
1247     PINGROUP(91,  tsif1, sdc4, NA, NA, NA, NA, qdss_traceclk_b, NA, NA, NA,
1248          NA),
1249     PINGROUP(92,  tsif2, sdc4, NA, NA, qdss_tracedata_b, NA, NA, NA, NA,
1250          NA, NA),
1251     PINGROUP(93,  tsif2, sdc4, NA, NA, NA, NA, qdss_tracedata_b, NA, NA,
1252          NA, NA),
1253     PINGROUP(94,  tsif2, sdc4, NA, NA, NA, NA, qdss_tracectl_b, NA, NA, NA,
1254          NA),
1255     PINGROUP(95,  tsif2, sdc4, gp_pdm0, NA, NA, NA, qdss_cti_trig_out_d,
1256          NA, NA, NA, NA),
1257     PINGROUP(96,  tsif2, sdc4, qdss_cti_trig_in_d, NA, NA, NA, NA, NA, NA,
1258          NA, NA),
1259     PINGROUP(97,  uim1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1260     PINGROUP(98,  uim1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1261     PINGROUP(99,  uim1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1262     PINGROUP(100, uim1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1263     PINGROUP(101, uim_batt_alarm, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1264     PINGROUP(102, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1265     PINGROUP(103, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1266     PINGROUP(104, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1267     PINGROUP(105, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1268     PINGROUP(106, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1269     PINGROUP(107, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1270     PINGROUP(108, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1271     PINGROUP(109, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1272     PINGROUP(110, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1273     PINGROUP(111, tsif1, blsp11_uart_tx_b, NA, NA, NA, NA, NA, NA, NA, NA,
1274          NA),
1275     PINGROUP(112, blsp11_uart_rx_b, NA, NA, NA, NA, NA, NA, NA, NA, NA,
1276          NA),
1277     PINGROUP(113, blsp11_i2c_sda_b, NA, NA, NA, NA, NA, NA, NA, NA, NA,
1278          NA),
1279     PINGROUP(114, blsp11_i2c_scl_b, NA, NA, NA, NA, NA, NA, NA, NA, NA,
1280          NA),
1281     PINGROUP(115, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1282     PINGROUP(116, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1283     PINGROUP(117, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1284     PINGROUP(118, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1285     PINGROUP(119, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1286     PINGROUP(120, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1287     PINGROUP(121, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1288     PINGROUP(122, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1289     PINGROUP(123, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1290     PINGROUP(124, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1291     PINGROUP(125, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1292     PINGROUP(126, NA, gsm_tx, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1293     PINGROUP(127, NA, nav_tsync, nav_pps, NA, NA, NA, NA, NA, NA, NA,
1294          NA),
1295     PINGROUP(128, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1296     PINGROUP(129, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1297     PINGROUP(130, gps_tx, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1298     PINGROUP(131, gsm_tx, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1299     PINGROUP(132, gsm_tx, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1300     PINGROUP(133, gsm_tx, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1301     PINGROUP(134, mss_lte, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1302     PINGROUP(135, mss_lte, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1303     PINGROUP(136, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1304     PINGROUP(137, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1305     PINGROUP(138, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1306     PINGROUP(139, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1307     PINGROUP(140, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1308     PINGROUP(141, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1309     PINGROUP(142, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1310     PINGROUP(143, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1311     PINGROUP(144, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1312     PINGROUP(145, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
1313     SDC_PINGROUP(sdc1_rclk, 0x2044, 15, 0),
1314     SDC_PINGROUP(sdc1_clk, 0x2044, 13, 6),
1315     SDC_PINGROUP(sdc1_cmd, 0x2044, 11, 3),
1316     SDC_PINGROUP(sdc1_data, 0x2044, 9, 0),
1317     SDC_PINGROUP(sdc2_clk, 0x2048, 14, 6),
1318     SDC_PINGROUP(sdc2_cmd, 0x2048, 11, 3),
1319     SDC_PINGROUP(sdc2_data, 0x2048, 9, 0),
1320     SDC_PINGROUP(sdc3_clk, 0x206c, 14, 6),
1321     SDC_PINGROUP(sdc3_cmd, 0x206c, 11, 3),
1322     SDC_PINGROUP(sdc3_data, 0x206c, 9, 0),
1323 };
1324 
1325 #define NUM_GPIO_PINGROUPS 146
1326 
1327 static const struct msm_pinctrl_soc_data msm8994_pinctrl = {
1328     .pins = msm8994_pins,
1329     .npins = ARRAY_SIZE(msm8994_pins),
1330     .functions = msm8994_functions,
1331     .nfunctions = ARRAY_SIZE(msm8994_functions),
1332     .groups = msm8994_groups,
1333     .ngroups = ARRAY_SIZE(msm8994_groups),
1334     .ngpios = NUM_GPIO_PINGROUPS,
1335 };
1336 
1337 static int msm8994_pinctrl_probe(struct platform_device *pdev)
1338 {
1339     return msm_pinctrl_probe(pdev, &msm8994_pinctrl);
1340 }
1341 
1342 static const struct of_device_id msm8994_pinctrl_of_match[] = {
1343     { .compatible = "qcom,msm8992-pinctrl", },
1344     { .compatible = "qcom,msm8994-pinctrl", },
1345     { }
1346 };
1347 
1348 static struct platform_driver msm8994_pinctrl_driver = {
1349     .driver = {
1350         .name = "msm8994-pinctrl",
1351         .of_match_table = msm8994_pinctrl_of_match,
1352     },
1353     .probe = msm8994_pinctrl_probe,
1354     .remove = msm_pinctrl_remove,
1355 };
1356 
1357 static int __init msm8994_pinctrl_init(void)
1358 {
1359     return platform_driver_register(&msm8994_pinctrl_driver);
1360 }
1361 arch_initcall(msm8994_pinctrl_init);
1362 
1363 static void __exit msm8994_pinctrl_exit(void)
1364 {
1365     platform_driver_unregister(&msm8994_pinctrl_driver);
1366 }
1367 module_exit(msm8994_pinctrl_exit);
1368 
1369 MODULE_DESCRIPTION("Qualcomm MSM8994 pinctrl driver");
1370 MODULE_LICENSE("GPL v2");
1371 MODULE_DEVICE_TABLE(of, msm8994_pinctrl_of_match);