197fb5e8dSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
269b78b8dSLinus Walleij /*
369b78b8dSLinus Walleij  * Copyright (c) 2014, Sony Mobile Communications AB.
469b78b8dSLinus Walleij  */
569b78b8dSLinus Walleij 
669b78b8dSLinus Walleij #include <linux/module.h>
769b78b8dSLinus Walleij #include <linux/of.h>
869b78b8dSLinus Walleij #include <linux/platform_device.h>
969b78b8dSLinus Walleij #include <linux/pinctrl/pinmux.h>
1069b78b8dSLinus Walleij 
1169b78b8dSLinus Walleij #include "pinctrl-msm.h"
1269b78b8dSLinus Walleij 
1369b78b8dSLinus Walleij static const struct pinctrl_pin_desc msm8960_pins[] = {
1469b78b8dSLinus Walleij 	PINCTRL_PIN(0, "GPIO_0"),
1569b78b8dSLinus Walleij 	PINCTRL_PIN(1, "GPIO_1"),
1669b78b8dSLinus Walleij 	PINCTRL_PIN(2, "GPIO_2"),
1769b78b8dSLinus Walleij 	PINCTRL_PIN(3, "GPIO_3"),
1869b78b8dSLinus Walleij 	PINCTRL_PIN(4, "GPIO_4"),
1969b78b8dSLinus Walleij 	PINCTRL_PIN(5, "GPIO_5"),
2069b78b8dSLinus Walleij 	PINCTRL_PIN(6, "GPIO_6"),
2169b78b8dSLinus Walleij 	PINCTRL_PIN(7, "GPIO_7"),
2269b78b8dSLinus Walleij 	PINCTRL_PIN(8, "GPIO_8"),
2369b78b8dSLinus Walleij 	PINCTRL_PIN(9, "GPIO_9"),
2469b78b8dSLinus Walleij 	PINCTRL_PIN(10, "GPIO_10"),
2569b78b8dSLinus Walleij 	PINCTRL_PIN(11, "GPIO_11"),
2669b78b8dSLinus Walleij 	PINCTRL_PIN(12, "GPIO_12"),
2769b78b8dSLinus Walleij 	PINCTRL_PIN(13, "GPIO_13"),
2869b78b8dSLinus Walleij 	PINCTRL_PIN(14, "GPIO_14"),
2969b78b8dSLinus Walleij 	PINCTRL_PIN(15, "GPIO_15"),
3069b78b8dSLinus Walleij 	PINCTRL_PIN(16, "GPIO_16"),
3169b78b8dSLinus Walleij 	PINCTRL_PIN(17, "GPIO_17"),
3269b78b8dSLinus Walleij 	PINCTRL_PIN(18, "GPIO_18"),
3369b78b8dSLinus Walleij 	PINCTRL_PIN(19, "GPIO_19"),
3469b78b8dSLinus Walleij 	PINCTRL_PIN(20, "GPIO_20"),
3569b78b8dSLinus Walleij 	PINCTRL_PIN(21, "GPIO_21"),
3669b78b8dSLinus Walleij 	PINCTRL_PIN(22, "GPIO_22"),
3769b78b8dSLinus Walleij 	PINCTRL_PIN(23, "GPIO_23"),
3869b78b8dSLinus Walleij 	PINCTRL_PIN(24, "GPIO_24"),
3969b78b8dSLinus Walleij 	PINCTRL_PIN(25, "GPIO_25"),
4069b78b8dSLinus Walleij 	PINCTRL_PIN(26, "GPIO_26"),
4169b78b8dSLinus Walleij 	PINCTRL_PIN(27, "GPIO_27"),
4269b78b8dSLinus Walleij 	PINCTRL_PIN(28, "GPIO_28"),
4369b78b8dSLinus Walleij 	PINCTRL_PIN(29, "GPIO_29"),
4469b78b8dSLinus Walleij 	PINCTRL_PIN(30, "GPIO_30"),
4569b78b8dSLinus Walleij 	PINCTRL_PIN(31, "GPIO_31"),
4669b78b8dSLinus Walleij 	PINCTRL_PIN(32, "GPIO_32"),
4769b78b8dSLinus Walleij 	PINCTRL_PIN(33, "GPIO_33"),
4869b78b8dSLinus Walleij 	PINCTRL_PIN(34, "GPIO_34"),
4969b78b8dSLinus Walleij 	PINCTRL_PIN(35, "GPIO_35"),
5069b78b8dSLinus Walleij 	PINCTRL_PIN(36, "GPIO_36"),
5169b78b8dSLinus Walleij 	PINCTRL_PIN(37, "GPIO_37"),
5269b78b8dSLinus Walleij 	PINCTRL_PIN(38, "GPIO_38"),
5369b78b8dSLinus Walleij 	PINCTRL_PIN(39, "GPIO_39"),
5469b78b8dSLinus Walleij 	PINCTRL_PIN(40, "GPIO_40"),
5569b78b8dSLinus Walleij 	PINCTRL_PIN(41, "GPIO_41"),
5669b78b8dSLinus Walleij 	PINCTRL_PIN(42, "GPIO_42"),
5769b78b8dSLinus Walleij 	PINCTRL_PIN(43, "GPIO_43"),
5869b78b8dSLinus Walleij 	PINCTRL_PIN(44, "GPIO_44"),
5969b78b8dSLinus Walleij 	PINCTRL_PIN(45, "GPIO_45"),
6069b78b8dSLinus Walleij 	PINCTRL_PIN(46, "GPIO_46"),
6169b78b8dSLinus Walleij 	PINCTRL_PIN(47, "GPIO_47"),
6269b78b8dSLinus Walleij 	PINCTRL_PIN(48, "GPIO_48"),
6369b78b8dSLinus Walleij 	PINCTRL_PIN(49, "GPIO_49"),
6469b78b8dSLinus Walleij 	PINCTRL_PIN(50, "GPIO_50"),
6569b78b8dSLinus Walleij 	PINCTRL_PIN(51, "GPIO_51"),
6669b78b8dSLinus Walleij 	PINCTRL_PIN(52, "GPIO_52"),
6769b78b8dSLinus Walleij 	PINCTRL_PIN(53, "GPIO_53"),
6869b78b8dSLinus Walleij 	PINCTRL_PIN(54, "GPIO_54"),
6969b78b8dSLinus Walleij 	PINCTRL_PIN(55, "GPIO_55"),
7069b78b8dSLinus Walleij 	PINCTRL_PIN(56, "GPIO_56"),
7169b78b8dSLinus Walleij 	PINCTRL_PIN(57, "GPIO_57"),
7269b78b8dSLinus Walleij 	PINCTRL_PIN(58, "GPIO_58"),
7369b78b8dSLinus Walleij 	PINCTRL_PIN(59, "GPIO_59"),
7469b78b8dSLinus Walleij 	PINCTRL_PIN(60, "GPIO_60"),
7569b78b8dSLinus Walleij 	PINCTRL_PIN(61, "GPIO_61"),
7669b78b8dSLinus Walleij 	PINCTRL_PIN(62, "GPIO_62"),
7769b78b8dSLinus Walleij 	PINCTRL_PIN(63, "GPIO_63"),
7869b78b8dSLinus Walleij 	PINCTRL_PIN(64, "GPIO_64"),
7969b78b8dSLinus Walleij 	PINCTRL_PIN(65, "GPIO_65"),
8069b78b8dSLinus Walleij 	PINCTRL_PIN(66, "GPIO_66"),
8169b78b8dSLinus Walleij 	PINCTRL_PIN(67, "GPIO_67"),
8269b78b8dSLinus Walleij 	PINCTRL_PIN(68, "GPIO_68"),
8369b78b8dSLinus Walleij 	PINCTRL_PIN(69, "GPIO_69"),
8469b78b8dSLinus Walleij 	PINCTRL_PIN(70, "GPIO_70"),
8569b78b8dSLinus Walleij 	PINCTRL_PIN(71, "GPIO_71"),
8669b78b8dSLinus Walleij 	PINCTRL_PIN(72, "GPIO_72"),
8769b78b8dSLinus Walleij 	PINCTRL_PIN(73, "GPIO_73"),
8869b78b8dSLinus Walleij 	PINCTRL_PIN(74, "GPIO_74"),
8969b78b8dSLinus Walleij 	PINCTRL_PIN(75, "GPIO_75"),
9069b78b8dSLinus Walleij 	PINCTRL_PIN(76, "GPIO_76"),
9169b78b8dSLinus Walleij 	PINCTRL_PIN(77, "GPIO_77"),
9269b78b8dSLinus Walleij 	PINCTRL_PIN(78, "GPIO_78"),
9369b78b8dSLinus Walleij 	PINCTRL_PIN(79, "GPIO_79"),
9469b78b8dSLinus Walleij 	PINCTRL_PIN(80, "GPIO_80"),
9569b78b8dSLinus Walleij 	PINCTRL_PIN(81, "GPIO_81"),
9669b78b8dSLinus Walleij 	PINCTRL_PIN(82, "GPIO_82"),
9769b78b8dSLinus Walleij 	PINCTRL_PIN(83, "GPIO_83"),
9869b78b8dSLinus Walleij 	PINCTRL_PIN(84, "GPIO_84"),
9969b78b8dSLinus Walleij 	PINCTRL_PIN(85, "GPIO_85"),
10069b78b8dSLinus Walleij 	PINCTRL_PIN(86, "GPIO_86"),
10169b78b8dSLinus Walleij 	PINCTRL_PIN(87, "GPIO_87"),
10269b78b8dSLinus Walleij 	PINCTRL_PIN(88, "GPIO_88"),
10369b78b8dSLinus Walleij 	PINCTRL_PIN(89, "GPIO_89"),
10469b78b8dSLinus Walleij 	PINCTRL_PIN(90, "GPIO_90"),
10569b78b8dSLinus Walleij 	PINCTRL_PIN(91, "GPIO_91"),
10669b78b8dSLinus Walleij 	PINCTRL_PIN(92, "GPIO_92"),
10769b78b8dSLinus Walleij 	PINCTRL_PIN(93, "GPIO_93"),
10869b78b8dSLinus Walleij 	PINCTRL_PIN(94, "GPIO_94"),
10969b78b8dSLinus Walleij 	PINCTRL_PIN(95, "GPIO_95"),
11069b78b8dSLinus Walleij 	PINCTRL_PIN(96, "GPIO_96"),
11169b78b8dSLinus Walleij 	PINCTRL_PIN(97, "GPIO_97"),
11269b78b8dSLinus Walleij 	PINCTRL_PIN(98, "GPIO_98"),
11369b78b8dSLinus Walleij 	PINCTRL_PIN(99, "GPIO_99"),
11469b78b8dSLinus Walleij 	PINCTRL_PIN(100, "GPIO_100"),
11569b78b8dSLinus Walleij 	PINCTRL_PIN(101, "GPIO_101"),
11669b78b8dSLinus Walleij 	PINCTRL_PIN(102, "GPIO_102"),
11769b78b8dSLinus Walleij 	PINCTRL_PIN(103, "GPIO_103"),
11869b78b8dSLinus Walleij 	PINCTRL_PIN(104, "GPIO_104"),
11969b78b8dSLinus Walleij 	PINCTRL_PIN(105, "GPIO_105"),
12069b78b8dSLinus Walleij 	PINCTRL_PIN(106, "GPIO_106"),
12169b78b8dSLinus Walleij 	PINCTRL_PIN(107, "GPIO_107"),
12269b78b8dSLinus Walleij 	PINCTRL_PIN(108, "GPIO_108"),
12369b78b8dSLinus Walleij 	PINCTRL_PIN(109, "GPIO_109"),
12469b78b8dSLinus Walleij 	PINCTRL_PIN(110, "GPIO_110"),
12569b78b8dSLinus Walleij 	PINCTRL_PIN(111, "GPIO_111"),
12669b78b8dSLinus Walleij 	PINCTRL_PIN(112, "GPIO_112"),
12769b78b8dSLinus Walleij 	PINCTRL_PIN(113, "GPIO_113"),
12869b78b8dSLinus Walleij 	PINCTRL_PIN(114, "GPIO_114"),
12969b78b8dSLinus Walleij 	PINCTRL_PIN(115, "GPIO_115"),
13069b78b8dSLinus Walleij 	PINCTRL_PIN(116, "GPIO_116"),
13169b78b8dSLinus Walleij 	PINCTRL_PIN(117, "GPIO_117"),
13269b78b8dSLinus Walleij 	PINCTRL_PIN(118, "GPIO_118"),
13369b78b8dSLinus Walleij 	PINCTRL_PIN(119, "GPIO_119"),
13469b78b8dSLinus Walleij 	PINCTRL_PIN(120, "GPIO_120"),
13569b78b8dSLinus Walleij 	PINCTRL_PIN(121, "GPIO_121"),
13669b78b8dSLinus Walleij 	PINCTRL_PIN(122, "GPIO_122"),
13769b78b8dSLinus Walleij 	PINCTRL_PIN(123, "GPIO_123"),
13869b78b8dSLinus Walleij 	PINCTRL_PIN(124, "GPIO_124"),
13969b78b8dSLinus Walleij 	PINCTRL_PIN(125, "GPIO_125"),
14069b78b8dSLinus Walleij 	PINCTRL_PIN(126, "GPIO_126"),
14169b78b8dSLinus Walleij 	PINCTRL_PIN(127, "GPIO_127"),
14269b78b8dSLinus Walleij 	PINCTRL_PIN(128, "GPIO_128"),
14369b78b8dSLinus Walleij 	PINCTRL_PIN(129, "GPIO_129"),
14469b78b8dSLinus Walleij 	PINCTRL_PIN(130, "GPIO_130"),
14569b78b8dSLinus Walleij 	PINCTRL_PIN(131, "GPIO_131"),
14669b78b8dSLinus Walleij 	PINCTRL_PIN(132, "GPIO_132"),
14769b78b8dSLinus Walleij 	PINCTRL_PIN(133, "GPIO_133"),
14869b78b8dSLinus Walleij 	PINCTRL_PIN(134, "GPIO_134"),
14969b78b8dSLinus Walleij 	PINCTRL_PIN(135, "GPIO_135"),
15069b78b8dSLinus Walleij 	PINCTRL_PIN(136, "GPIO_136"),
15169b78b8dSLinus Walleij 	PINCTRL_PIN(137, "GPIO_137"),
15269b78b8dSLinus Walleij 	PINCTRL_PIN(138, "GPIO_138"),
15369b78b8dSLinus Walleij 	PINCTRL_PIN(139, "GPIO_139"),
15469b78b8dSLinus Walleij 	PINCTRL_PIN(140, "GPIO_140"),
15569b78b8dSLinus Walleij 	PINCTRL_PIN(141, "GPIO_141"),
15669b78b8dSLinus Walleij 	PINCTRL_PIN(142, "GPIO_142"),
15769b78b8dSLinus Walleij 	PINCTRL_PIN(143, "GPIO_143"),
15869b78b8dSLinus Walleij 	PINCTRL_PIN(144, "GPIO_144"),
15969b78b8dSLinus Walleij 	PINCTRL_PIN(145, "GPIO_145"),
16069b78b8dSLinus Walleij 	PINCTRL_PIN(146, "GPIO_146"),
16169b78b8dSLinus Walleij 	PINCTRL_PIN(147, "GPIO_147"),
16269b78b8dSLinus Walleij 	PINCTRL_PIN(148, "GPIO_148"),
16369b78b8dSLinus Walleij 	PINCTRL_PIN(149, "GPIO_149"),
16469b78b8dSLinus Walleij 	PINCTRL_PIN(150, "GPIO_150"),
16569b78b8dSLinus Walleij 	PINCTRL_PIN(151, "GPIO_151"),
16669b78b8dSLinus Walleij 
16769b78b8dSLinus Walleij 	PINCTRL_PIN(152, "SDC1_CLK"),
16869b78b8dSLinus Walleij 	PINCTRL_PIN(153, "SDC1_CMD"),
16969b78b8dSLinus Walleij 	PINCTRL_PIN(154, "SDC1_DATA"),
17069b78b8dSLinus Walleij 	PINCTRL_PIN(155, "SDC3_CLK"),
17169b78b8dSLinus Walleij 	PINCTRL_PIN(156, "SDC3_CMD"),
17269b78b8dSLinus Walleij 	PINCTRL_PIN(157, "SDC3_DATA"),
17369b78b8dSLinus Walleij };
17469b78b8dSLinus Walleij 
17569b78b8dSLinus Walleij #define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
17669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(0);
17769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(1);
17869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(2);
17969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(3);
18069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(4);
18169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(5);
18269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(6);
18369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(7);
18469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(8);
18569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(9);
18669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(10);
18769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(11);
18869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(12);
18969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(13);
19069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(14);
19169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(15);
19269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(16);
19369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(17);
19469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(18);
19569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(19);
19669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(20);
19769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(21);
19869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(22);
19969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(23);
20069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(24);
20169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(25);
20269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(26);
20369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(27);
20469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(28);
20569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(29);
20669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(30);
20769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(31);
20869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(32);
20969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(33);
21069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(34);
21169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(35);
21269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(36);
21369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(37);
21469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(38);
21569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(39);
21669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(40);
21769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(41);
21869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(42);
21969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(43);
22069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(44);
22169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(45);
22269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(46);
22369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(47);
22469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(48);
22569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(49);
22669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(50);
22769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(51);
22869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(52);
22969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(53);
23069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(54);
23169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(55);
23269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(56);
23369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(57);
23469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(58);
23569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(59);
23669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(60);
23769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(61);
23869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(62);
23969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(63);
24069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(64);
24169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(65);
24269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(66);
24369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(67);
24469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(68);
24569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(69);
24669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(70);
24769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(71);
24869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(72);
24969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(73);
25069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(74);
25169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(75);
25269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(76);
25369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(77);
25469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(78);
25569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(79);
25669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(80);
25769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(81);
25869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(82);
25969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(83);
26069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(84);
26169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(85);
26269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(86);
26369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(87);
26469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(88);
26569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(89);
26669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(90);
26769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(91);
26869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(92);
26969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(93);
27069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(94);
27169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(95);
27269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(96);
27369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(97);
27469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(98);
27569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(99);
27669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(100);
27769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(101);
27869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(102);
27969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(103);
28069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(104);
28169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(105);
28269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(106);
28369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(107);
28469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(108);
28569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(109);
28669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(110);
28769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(111);
28869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(112);
28969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(113);
29069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(114);
29169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(115);
29269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(116);
29369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(117);
29469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(118);
29569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(119);
29669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(120);
29769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(121);
29869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(122);
29969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(123);
30069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(124);
30169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(125);
30269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(126);
30369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(127);
30469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(128);
30569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(129);
30669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(130);
30769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(131);
30869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(132);
30969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(133);
31069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(134);
31169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(135);
31269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(136);
31369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(137);
31469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(138);
31569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(139);
31669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(140);
31769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(141);
31869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(142);
31969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(143);
32069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(144);
32169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(145);
32269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(146);
32369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(147);
32469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(148);
32569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(149);
32669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(150);
32769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(151);
32869b78b8dSLinus Walleij 
32969b78b8dSLinus Walleij static const unsigned int sdc1_clk_pins[] = { 152 };
33069b78b8dSLinus Walleij static const unsigned int sdc1_cmd_pins[] = { 153 };
33169b78b8dSLinus Walleij static const unsigned int sdc1_data_pins[] = { 154 };
33269b78b8dSLinus Walleij static const unsigned int sdc3_clk_pins[] = { 155 };
33369b78b8dSLinus Walleij static const unsigned int sdc3_cmd_pins[] = { 156 };
33469b78b8dSLinus Walleij static const unsigned int sdc3_data_pins[] = { 157 };
33569b78b8dSLinus Walleij 
33669b78b8dSLinus Walleij #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) \
33769b78b8dSLinus Walleij 	{						\
338*6a16d1a5SRohit Agarwal 		.grp = PINCTRL_PINGROUP("gpio" #id, 	\
339*6a16d1a5SRohit Agarwal 			gpio##id##_pins, 		\
340*6a16d1a5SRohit Agarwal 			ARRAY_SIZE(gpio##id##_pins)),	\
34169b78b8dSLinus Walleij 		.funcs = (int[]){			\
342c7a291dbSRohit Agarwal 			msm_mux_gpio,			\
343c7a291dbSRohit Agarwal 			msm_mux_##f1,			\
344c7a291dbSRohit Agarwal 			msm_mux_##f2,			\
345c7a291dbSRohit Agarwal 			msm_mux_##f3,			\
346c7a291dbSRohit Agarwal 			msm_mux_##f4,			\
347c7a291dbSRohit Agarwal 			msm_mux_##f5,			\
348c7a291dbSRohit Agarwal 			msm_mux_##f6,			\
349c7a291dbSRohit Agarwal 			msm_mux_##f7,			\
350c7a291dbSRohit Agarwal 			msm_mux_##f8,			\
351c7a291dbSRohit Agarwal 			msm_mux_##f9,			\
352c7a291dbSRohit Agarwal 			msm_mux_##f10,			\
353c7a291dbSRohit Agarwal 			msm_mux_##f11			\
35469b78b8dSLinus Walleij 		},					\
35569b78b8dSLinus Walleij 		.nfuncs = 12,				\
35669b78b8dSLinus Walleij 		.ctl_reg = 0x1000 + 0x10 * id,		\
35769b78b8dSLinus Walleij 		.io_reg = 0x1004 + 0x10 * id,		\
35869b78b8dSLinus Walleij 		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
35969b78b8dSLinus Walleij 		.intr_status_reg = 0x100c + 0x10 * id,	\
36069b78b8dSLinus Walleij 		.intr_target_reg = 0x400 + 0x4 * id,	\
36169b78b8dSLinus Walleij 		.mux_bit = 2,				\
36269b78b8dSLinus Walleij 		.pull_bit = 0,				\
36369b78b8dSLinus Walleij 		.drv_bit = 6,				\
36469b78b8dSLinus Walleij 		.oe_bit = 9,				\
36569b78b8dSLinus Walleij 		.in_bit = 0,				\
36669b78b8dSLinus Walleij 		.out_bit = 1,				\
36769b78b8dSLinus Walleij 		.intr_enable_bit = 0,			\
36869b78b8dSLinus Walleij 		.intr_status_bit = 0,			\
36969b78b8dSLinus Walleij 		.intr_ack_high = 1,			\
37069b78b8dSLinus Walleij 		.intr_target_bit = 0,			\
371f712c554SGeorgi Djakov 		.intr_target_kpss_val = 4,		\
37269b78b8dSLinus Walleij 		.intr_raw_status_bit = 3,		\
37369b78b8dSLinus Walleij 		.intr_polarity_bit = 1,			\
37469b78b8dSLinus Walleij 		.intr_detection_bit = 2,		\
37569b78b8dSLinus Walleij 		.intr_detection_width = 1,		\
37669b78b8dSLinus Walleij 	}
37769b78b8dSLinus Walleij 
37869b78b8dSLinus Walleij #define SDC_PINGROUP(pg_name, ctl, pull, drv)		\
37969b78b8dSLinus Walleij 	{						\
380*6a16d1a5SRohit Agarwal 		.grp = PINCTRL_PINGROUP(#pg_name, 	\
381*6a16d1a5SRohit Agarwal 			pg_name##_pins, 		\
382*6a16d1a5SRohit Agarwal 			ARRAY_SIZE(pg_name##_pins)),	\
38369b78b8dSLinus Walleij 		.ctl_reg = ctl,				\
38469b78b8dSLinus Walleij 		.io_reg = 0,				\
38569b78b8dSLinus Walleij 		.intr_cfg_reg = 0,			\
38669b78b8dSLinus Walleij 		.intr_status_reg = 0,			\
38769b78b8dSLinus Walleij 		.intr_target_reg = 0,			\
38869b78b8dSLinus Walleij 		.mux_bit = -1,				\
38969b78b8dSLinus Walleij 		.pull_bit = pull,			\
39069b78b8dSLinus Walleij 		.drv_bit = drv,				\
39169b78b8dSLinus Walleij 		.oe_bit = -1,				\
39269b78b8dSLinus Walleij 		.in_bit = -1,				\
39369b78b8dSLinus Walleij 		.out_bit = -1,				\
39469b78b8dSLinus Walleij 		.intr_enable_bit = -1,			\
39569b78b8dSLinus Walleij 		.intr_status_bit = -1,			\
39669b78b8dSLinus Walleij 		.intr_target_bit = -1,			\
397f712c554SGeorgi Djakov 		.intr_target_kpss_val = -1,		\
39869b78b8dSLinus Walleij 		.intr_raw_status_bit = -1,		\
39969b78b8dSLinus Walleij 		.intr_polarity_bit = -1,		\
40069b78b8dSLinus Walleij 		.intr_detection_bit = -1,		\
40169b78b8dSLinus Walleij 		.intr_detection_width = -1,		\
40269b78b8dSLinus Walleij 	}
40369b78b8dSLinus Walleij 
40469b78b8dSLinus Walleij enum msm8960_functions {
405c7a291dbSRohit Agarwal 	msm_mux_audio_pcm,
406c7a291dbSRohit Agarwal 	msm_mux_bt,
407c7a291dbSRohit Agarwal 	msm_mux_cam_mclk0,
408c7a291dbSRohit Agarwal 	msm_mux_cam_mclk1,
409c7a291dbSRohit Agarwal 	msm_mux_cam_mclk2,
410c7a291dbSRohit Agarwal 	msm_mux_codec_mic_i2s,
411c7a291dbSRohit Agarwal 	msm_mux_codec_spkr_i2s,
412c7a291dbSRohit Agarwal 	msm_mux_ext_gps,
413c7a291dbSRohit Agarwal 	msm_mux_fm,
414c7a291dbSRohit Agarwal 	msm_mux_gps_blanking,
415c7a291dbSRohit Agarwal 	msm_mux_gps_pps_in,
416c7a291dbSRohit Agarwal 	msm_mux_gps_pps_out,
417c7a291dbSRohit Agarwal 	msm_mux_gp_clk_0a,
418c7a291dbSRohit Agarwal 	msm_mux_gp_clk_0b,
419c7a291dbSRohit Agarwal 	msm_mux_gp_clk_1a,
420c7a291dbSRohit Agarwal 	msm_mux_gp_clk_1b,
421c7a291dbSRohit Agarwal 	msm_mux_gp_clk_2a,
422c7a291dbSRohit Agarwal 	msm_mux_gp_clk_2b,
423c7a291dbSRohit Agarwal 	msm_mux_gp_mn,
424c7a291dbSRohit Agarwal 	msm_mux_gp_pdm_0a,
425c7a291dbSRohit Agarwal 	msm_mux_gp_pdm_0b,
426c7a291dbSRohit Agarwal 	msm_mux_gp_pdm_1a,
427c7a291dbSRohit Agarwal 	msm_mux_gp_pdm_1b,
428c7a291dbSRohit Agarwal 	msm_mux_gp_pdm_2a,
429c7a291dbSRohit Agarwal 	msm_mux_gp_pdm_2b,
430c7a291dbSRohit Agarwal 	msm_mux_gpio,
431c7a291dbSRohit Agarwal 	msm_mux_gsbi1,
432c7a291dbSRohit Agarwal 	msm_mux_gsbi1_spi_cs1_n,
433c7a291dbSRohit Agarwal 	msm_mux_gsbi1_spi_cs2a_n,
434c7a291dbSRohit Agarwal 	msm_mux_gsbi1_spi_cs2b_n,
435c7a291dbSRohit Agarwal 	msm_mux_gsbi1_spi_cs3_n,
436c7a291dbSRohit Agarwal 	msm_mux_gsbi2,
437c7a291dbSRohit Agarwal 	msm_mux_gsbi2_spi_cs1_n,
438c7a291dbSRohit Agarwal 	msm_mux_gsbi2_spi_cs2_n,
439c7a291dbSRohit Agarwal 	msm_mux_gsbi2_spi_cs3_n,
440c7a291dbSRohit Agarwal 	msm_mux_gsbi3,
441c7a291dbSRohit Agarwal 	msm_mux_gsbi4,
442c7a291dbSRohit Agarwal 	msm_mux_gsbi4_3d_cam_i2c_l,
443c7a291dbSRohit Agarwal 	msm_mux_gsbi4_3d_cam_i2c_r,
444c7a291dbSRohit Agarwal 	msm_mux_gsbi5,
445c7a291dbSRohit Agarwal 	msm_mux_gsbi5_3d_cam_i2c_l,
446c7a291dbSRohit Agarwal 	msm_mux_gsbi5_3d_cam_i2c_r,
447c7a291dbSRohit Agarwal 	msm_mux_gsbi6,
448c7a291dbSRohit Agarwal 	msm_mux_gsbi7,
449c7a291dbSRohit Agarwal 	msm_mux_gsbi8,
450c7a291dbSRohit Agarwal 	msm_mux_gsbi9,
451c7a291dbSRohit Agarwal 	msm_mux_gsbi10,
452c7a291dbSRohit Agarwal 	msm_mux_gsbi11,
453c7a291dbSRohit Agarwal 	msm_mux_gsbi11_spi_cs1a_n,
454c7a291dbSRohit Agarwal 	msm_mux_gsbi11_spi_cs1b_n,
455c7a291dbSRohit Agarwal 	msm_mux_gsbi11_spi_cs2a_n,
456c7a291dbSRohit Agarwal 	msm_mux_gsbi11_spi_cs2b_n,
457c7a291dbSRohit Agarwal 	msm_mux_gsbi11_spi_cs3_n,
458c7a291dbSRohit Agarwal 	msm_mux_gsbi12,
459c7a291dbSRohit Agarwal 	msm_mux_hdmi_cec,
460c7a291dbSRohit Agarwal 	msm_mux_hdmi_ddc_clock,
461c7a291dbSRohit Agarwal 	msm_mux_hdmi_ddc_data,
462c7a291dbSRohit Agarwal 	msm_mux_hdmi_hot_plug_detect,
463c7a291dbSRohit Agarwal 	msm_mux_hsic,
464c7a291dbSRohit Agarwal 	msm_mux_mdp_vsync,
465c7a291dbSRohit Agarwal 	msm_mux_mi2s,
466c7a291dbSRohit Agarwal 	msm_mux_mic_i2s,
467c7a291dbSRohit Agarwal 	msm_mux_pmb_clk,
468c7a291dbSRohit Agarwal 	msm_mux_pmb_ext_ctrl,
469c7a291dbSRohit Agarwal 	msm_mux_ps_hold,
470c7a291dbSRohit Agarwal 	msm_mux_rpm_wdog,
471c7a291dbSRohit Agarwal 	msm_mux_sdc2,
472c7a291dbSRohit Agarwal 	msm_mux_sdc4,
473c7a291dbSRohit Agarwal 	msm_mux_sdc5,
474c7a291dbSRohit Agarwal 	msm_mux_slimbus1,
475c7a291dbSRohit Agarwal 	msm_mux_slimbus2,
476c7a291dbSRohit Agarwal 	msm_mux_spkr_i2s,
477c7a291dbSRohit Agarwal 	msm_mux_ssbi1,
478c7a291dbSRohit Agarwal 	msm_mux_ssbi2,
479c7a291dbSRohit Agarwal 	msm_mux_ssbi_ext_gps,
480c7a291dbSRohit Agarwal 	msm_mux_ssbi_pmic2,
481c7a291dbSRohit Agarwal 	msm_mux_ssbi_qpa1,
482c7a291dbSRohit Agarwal 	msm_mux_ssbi_ts,
483c7a291dbSRohit Agarwal 	msm_mux_tsif1,
484c7a291dbSRohit Agarwal 	msm_mux_tsif2,
485c7a291dbSRohit Agarwal 	msm_mux_ts_eoc,
486c7a291dbSRohit Agarwal 	msm_mux_usb_fs1,
487c7a291dbSRohit Agarwal 	msm_mux_usb_fs1_oe,
488c7a291dbSRohit Agarwal 	msm_mux_usb_fs1_oe_n,
489c7a291dbSRohit Agarwal 	msm_mux_usb_fs2,
490c7a291dbSRohit Agarwal 	msm_mux_usb_fs2_oe,
491c7a291dbSRohit Agarwal 	msm_mux_usb_fs2_oe_n,
492c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer1_a,
493c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer1_b,
494c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer2,
495c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer3_a,
496c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer3_b,
497c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer4_a,
498c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer4_b,
499c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer4_c,
500c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer5_a,
501c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer5_b,
502c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer6_a,
503c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer6_b,
504c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer6_c,
505c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer7_a,
506c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer7_b,
507c7a291dbSRohit Agarwal 	msm_mux_vfe_camif_timer7_c,
508c7a291dbSRohit Agarwal 	msm_mux_wlan,
509c7a291dbSRohit Agarwal 	msm_mux_NA,
51069b78b8dSLinus Walleij };
51169b78b8dSLinus Walleij 
51269b78b8dSLinus Walleij static const char * const audio_pcm_groups[] = {
51369b78b8dSLinus Walleij 	"gpio63", "gpio64", "gpio65", "gpio66"
51469b78b8dSLinus Walleij };
51569b78b8dSLinus Walleij 
51669b78b8dSLinus Walleij static const char * const bt_groups[] = {
51769b78b8dSLinus Walleij 	"gpio28", "gpio29", "gpio83"
51869b78b8dSLinus Walleij };
51969b78b8dSLinus Walleij 
52069b78b8dSLinus Walleij static const char * const cam_mclk0_groups[] = {
52169b78b8dSLinus Walleij 	"gpio5"
52269b78b8dSLinus Walleij };
52369b78b8dSLinus Walleij 
52469b78b8dSLinus Walleij static const char * const cam_mclk1_groups[] = {
52569b78b8dSLinus Walleij 	"gpio4"
52669b78b8dSLinus Walleij };
52769b78b8dSLinus Walleij 
52869b78b8dSLinus Walleij static const char * const cam_mclk2_groups[] = {
52969b78b8dSLinus Walleij 	"gpio2"
53069b78b8dSLinus Walleij };
53169b78b8dSLinus Walleij 
53269b78b8dSLinus Walleij static const char * const codec_mic_i2s_groups[] = {
53369b78b8dSLinus Walleij 	"gpio54", "gpio55", "gpio56", "gpio57", "gpio58"
53469b78b8dSLinus Walleij };
53569b78b8dSLinus Walleij 
53669b78b8dSLinus Walleij static const char * const codec_spkr_i2s_groups[] = {
53769b78b8dSLinus Walleij 	"gpio59", "gpio60", "gpio61", "gpio62"
53869b78b8dSLinus Walleij };
53969b78b8dSLinus Walleij 
54069b78b8dSLinus Walleij static const char * const ext_gps_groups[] = {
54169b78b8dSLinus Walleij 	"gpio22", "gpio23", "gpio24", "gpio25"
54269b78b8dSLinus Walleij };
54369b78b8dSLinus Walleij 
54469b78b8dSLinus Walleij static const char * const fm_groups[] = {
54569b78b8dSLinus Walleij 	"gpio26", "gpio27"
54669b78b8dSLinus Walleij };
54769b78b8dSLinus Walleij 
54869b78b8dSLinus Walleij static const char * const gps_blanking_groups[] = {
54969b78b8dSLinus Walleij 	"gpio137"
55069b78b8dSLinus Walleij };
55169b78b8dSLinus Walleij 
55269b78b8dSLinus Walleij static const char * const gps_pps_in_groups[] = {
55369b78b8dSLinus Walleij 	"gpio37"
55469b78b8dSLinus Walleij };
55569b78b8dSLinus Walleij 
55669b78b8dSLinus Walleij static const char * const gps_pps_out_groups[] = {
55769b78b8dSLinus Walleij 	"gpio37"
55869b78b8dSLinus Walleij };
55969b78b8dSLinus Walleij 
56069b78b8dSLinus Walleij static const char * const gp_clk_0a_groups[] = {
56169b78b8dSLinus Walleij 	"gpio3"
56269b78b8dSLinus Walleij };
56369b78b8dSLinus Walleij 
56469b78b8dSLinus Walleij static const char * const gp_clk_0b_groups[] = {
56569b78b8dSLinus Walleij 	"gpio54"
56669b78b8dSLinus Walleij };
56769b78b8dSLinus Walleij 
56869b78b8dSLinus Walleij static const char * const gp_clk_1a_groups[] = {
56969b78b8dSLinus Walleij 	"gpio4"
57069b78b8dSLinus Walleij };
57169b78b8dSLinus Walleij 
57269b78b8dSLinus Walleij static const char * const gp_clk_1b_groups[] = {
57369b78b8dSLinus Walleij 	"gpio70"
57469b78b8dSLinus Walleij };
57569b78b8dSLinus Walleij 
57669b78b8dSLinus Walleij static const char * const gp_clk_2a_groups[] = {
57769b78b8dSLinus Walleij 	"gpio52"
57869b78b8dSLinus Walleij };
57969b78b8dSLinus Walleij 
58069b78b8dSLinus Walleij static const char * const gp_clk_2b_groups[] = {
58169b78b8dSLinus Walleij 	"gpio37"
58269b78b8dSLinus Walleij };
58369b78b8dSLinus Walleij 
58469b78b8dSLinus Walleij static const char * const gp_mn_groups[] = {
58569b78b8dSLinus Walleij 	"gpio2"
58669b78b8dSLinus Walleij };
58769b78b8dSLinus Walleij 
58869b78b8dSLinus Walleij static const char * const gp_pdm_0a_groups[] = {
58969b78b8dSLinus Walleij 	"gpio58"
59069b78b8dSLinus Walleij };
59169b78b8dSLinus Walleij 
59269b78b8dSLinus Walleij static const char * const gp_pdm_0b_groups[] = {
59369b78b8dSLinus Walleij 	"gpio39"
59469b78b8dSLinus Walleij };
59569b78b8dSLinus Walleij 
59669b78b8dSLinus Walleij static const char * const gp_pdm_1a_groups[] = {
59769b78b8dSLinus Walleij 	"gpio94"
59869b78b8dSLinus Walleij };
59969b78b8dSLinus Walleij 
60069b78b8dSLinus Walleij static const char * const gp_pdm_1b_groups[] = {
60169b78b8dSLinus Walleij 	"gpio64"
60269b78b8dSLinus Walleij };
60369b78b8dSLinus Walleij 
60469b78b8dSLinus Walleij static const char * const gp_pdm_2a_groups[] = {
60569b78b8dSLinus Walleij 	"gpio69"
60669b78b8dSLinus Walleij };
60769b78b8dSLinus Walleij 
60869b78b8dSLinus Walleij static const char * const gp_pdm_2b_groups[] = {
60969b78b8dSLinus Walleij 	"gpio53"
61069b78b8dSLinus Walleij };
61169b78b8dSLinus Walleij 
612144ef626SBjorn Andersson static const char * const gpio_groups[] = {
613144ef626SBjorn Andersson 	"gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
614144ef626SBjorn Andersson 	"gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
615144ef626SBjorn Andersson 	"gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
616144ef626SBjorn Andersson 	"gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
617144ef626SBjorn Andersson 	"gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
618144ef626SBjorn Andersson 	"gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
619144ef626SBjorn Andersson 	"gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
620144ef626SBjorn Andersson 	"gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
621144ef626SBjorn Andersson 	"gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
622144ef626SBjorn Andersson 	"gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
623144ef626SBjorn Andersson 	"gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
624144ef626SBjorn Andersson 	"gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
625144ef626SBjorn Andersson 	"gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91",
626144ef626SBjorn Andersson 	"gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98",
627144ef626SBjorn Andersson 	"gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104",
628144ef626SBjorn Andersson 	"gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110",
629144ef626SBjorn Andersson 	"gpio111", "gpio112", "gpio113", "gpio114", "gpio115", "gpio116",
630144ef626SBjorn Andersson 	"gpio117", "gpio118", "gpio119", "gpio120", "gpio121", "gpio122",
631144ef626SBjorn Andersson 	"gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128",
632144ef626SBjorn Andersson 	"gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134",
633144ef626SBjorn Andersson 	"gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140",
634144ef626SBjorn Andersson 	"gpio141", "gpio142", "gpio143", "gpio144", "gpio145", "gpio146",
635144ef626SBjorn Andersson 	"gpio147", "gpio148", "gpio149", "gpio150", "gpio151"
636144ef626SBjorn Andersson };
637144ef626SBjorn Andersson 
63869b78b8dSLinus Walleij static const char * const gsbi1_groups[] = {
63969b78b8dSLinus Walleij 	"gpio6", "gpio7", "gpio8", "gpio9"
64069b78b8dSLinus Walleij };
64169b78b8dSLinus Walleij 
64269b78b8dSLinus Walleij static const char * const gsbi1_spi_cs1_n_groups[] = {
64369b78b8dSLinus Walleij 	"gpio14"
64469b78b8dSLinus Walleij };
64569b78b8dSLinus Walleij 
64669b78b8dSLinus Walleij static const char * const gsbi1_spi_cs2a_n_groups[] = {
64769b78b8dSLinus Walleij 	"gpio15"
64869b78b8dSLinus Walleij };
64969b78b8dSLinus Walleij 
65069b78b8dSLinus Walleij static const char * const gsbi1_spi_cs2b_n_groups[] = {
65169b78b8dSLinus Walleij 	"gpio17"
65269b78b8dSLinus Walleij };
65369b78b8dSLinus Walleij 
65469b78b8dSLinus Walleij static const char * const gsbi1_spi_cs3_n_groups[] = {
65569b78b8dSLinus Walleij 	"gpio16"
65669b78b8dSLinus Walleij };
65769b78b8dSLinus Walleij 
65869b78b8dSLinus Walleij static const char * const gsbi2_groups[] = {
65969b78b8dSLinus Walleij 	"gpio10", "gpio11", "gpio12", "gpio13"
66069b78b8dSLinus Walleij };
66169b78b8dSLinus Walleij 
66269b78b8dSLinus Walleij static const char * const gsbi2_spi_cs1_n_groups[] = {
66369b78b8dSLinus Walleij 	"gpio52"
66469b78b8dSLinus Walleij };
66569b78b8dSLinus Walleij 
66669b78b8dSLinus Walleij static const char * const gsbi2_spi_cs2_n_groups[] = {
66769b78b8dSLinus Walleij 	"gpio68"
66869b78b8dSLinus Walleij };
66969b78b8dSLinus Walleij 
67069b78b8dSLinus Walleij static const char * const gsbi2_spi_cs3_n_groups[] = {
67169b78b8dSLinus Walleij 	"gpio56"
67269b78b8dSLinus Walleij };
67369b78b8dSLinus Walleij 
67469b78b8dSLinus Walleij static const char * const gsbi3_groups[] = {
67569b78b8dSLinus Walleij 	"gpio14", "gpio15", "gpio16", "gpio17"
67669b78b8dSLinus Walleij };
67769b78b8dSLinus Walleij 
67869b78b8dSLinus Walleij static const char * const gsbi4_groups[] = {
67969b78b8dSLinus Walleij 	"gpio18", "gpio19", "gpio20", "gpio21"
68069b78b8dSLinus Walleij };
68169b78b8dSLinus Walleij 
68269b78b8dSLinus Walleij static const char * const gsbi4_3d_cam_i2c_l_groups[] = {
68369b78b8dSLinus Walleij 	"gpio18", "gpio19"
68469b78b8dSLinus Walleij };
68569b78b8dSLinus Walleij 
68669b78b8dSLinus Walleij static const char * const gsbi4_3d_cam_i2c_r_groups[] = {
68769b78b8dSLinus Walleij 	"gpio20", "gpio21"
68869b78b8dSLinus Walleij };
68969b78b8dSLinus Walleij 
69069b78b8dSLinus Walleij static const char * const gsbi5_groups[] = {
69169b78b8dSLinus Walleij 	"gpio22", "gpio23", "gpio24", "gpio25"
69269b78b8dSLinus Walleij };
69369b78b8dSLinus Walleij 
69469b78b8dSLinus Walleij static const char * const gsbi5_3d_cam_i2c_l_groups[] = {
69569b78b8dSLinus Walleij 	"gpio22", "gpio23"
69669b78b8dSLinus Walleij };
69769b78b8dSLinus Walleij 
69869b78b8dSLinus Walleij static const char * const gsbi5_3d_cam_i2c_r_groups[] = {
69969b78b8dSLinus Walleij 	"gpio24", "gpio25"
70069b78b8dSLinus Walleij };
70169b78b8dSLinus Walleij 
70269b78b8dSLinus Walleij static const char * const gsbi6_groups[] = {
70369b78b8dSLinus Walleij 	"gpio26", "gpio27", "gpio28", "gpio29"
70469b78b8dSLinus Walleij };
70569b78b8dSLinus Walleij 
70669b78b8dSLinus Walleij static const char * const gsbi7_groups[] = {
70769b78b8dSLinus Walleij 	"gpio30", "gpio31", "gpio32", "gpio33"
70869b78b8dSLinus Walleij };
70969b78b8dSLinus Walleij 
71069b78b8dSLinus Walleij static const char * const gsbi8_groups[] = {
71169b78b8dSLinus Walleij 	"gpio34", "gpio35", "gpio36", "gpio37"
71269b78b8dSLinus Walleij };
71369b78b8dSLinus Walleij 
71469b78b8dSLinus Walleij static const char * const gsbi9_groups[] = {
71569b78b8dSLinus Walleij 	"gpio93", "gpio94", "gpio95", "gpio96"
71669b78b8dSLinus Walleij };
71769b78b8dSLinus Walleij 
71869b78b8dSLinus Walleij static const char * const gsbi10_groups[] = {
71969b78b8dSLinus Walleij 	"gpio71", "gpio72", "gpio73", "gpio74"
72069b78b8dSLinus Walleij };
72169b78b8dSLinus Walleij 
72269b78b8dSLinus Walleij static const char * const gsbi11_groups[] = {
72369b78b8dSLinus Walleij 	"gpio38", "gpio39", "gpio40", "gpio41"
72469b78b8dSLinus Walleij };
72569b78b8dSLinus Walleij 
72669b78b8dSLinus Walleij static const char * const gsbi11_spi_cs1a_n_groups[] = {
72769b78b8dSLinus Walleij 	"gpio36"
72869b78b8dSLinus Walleij };
72969b78b8dSLinus Walleij 
73069b78b8dSLinus Walleij static const char * const gsbi11_spi_cs1b_n_groups[] = {
73169b78b8dSLinus Walleij 	"gpio18"
73269b78b8dSLinus Walleij };
73369b78b8dSLinus Walleij 
73469b78b8dSLinus Walleij static const char * const gsbi11_spi_cs2a_n_groups[] = {
73569b78b8dSLinus Walleij 	"gpio37"
73669b78b8dSLinus Walleij };
73769b78b8dSLinus Walleij 
73869b78b8dSLinus Walleij static const char * const gsbi11_spi_cs2b_n_groups[] = {
73969b78b8dSLinus Walleij 	"gpio19"
74069b78b8dSLinus Walleij };
74169b78b8dSLinus Walleij 
74269b78b8dSLinus Walleij static const char * const gsbi11_spi_cs3_n_groups[] = {
74369b78b8dSLinus Walleij 	"gpio76"
74469b78b8dSLinus Walleij };
74569b78b8dSLinus Walleij 
74669b78b8dSLinus Walleij static const char * const gsbi12_groups[] = {
74769b78b8dSLinus Walleij 	"gpio42", "gpio43", "gpio44", "gpio45"
74869b78b8dSLinus Walleij };
74969b78b8dSLinus Walleij 
75069b78b8dSLinus Walleij static const char * const hdmi_cec_groups[] = {
75169b78b8dSLinus Walleij 	"gpio99"
75269b78b8dSLinus Walleij };
75369b78b8dSLinus Walleij 
75469b78b8dSLinus Walleij static const char * const hdmi_ddc_clock_groups[] = {
75569b78b8dSLinus Walleij 	"gpio100"
75669b78b8dSLinus Walleij };
75769b78b8dSLinus Walleij 
75869b78b8dSLinus Walleij static const char * const hdmi_ddc_data_groups[] = {
75969b78b8dSLinus Walleij 	"gpio101"
76069b78b8dSLinus Walleij };
76169b78b8dSLinus Walleij 
76269b78b8dSLinus Walleij static const char * const hdmi_hot_plug_detect_groups[] = {
76369b78b8dSLinus Walleij 	"gpio102"
76469b78b8dSLinus Walleij };
76569b78b8dSLinus Walleij 
76669b78b8dSLinus Walleij static const char * const hsic_groups[] = {
76769b78b8dSLinus Walleij 	"gpio150", "gpio151"
76869b78b8dSLinus Walleij };
76969b78b8dSLinus Walleij 
77069b78b8dSLinus Walleij static const char * const mdp_vsync_groups[] = {
77169b78b8dSLinus Walleij 	"gpio0", "gpio1", "gpio19"
77269b78b8dSLinus Walleij };
77369b78b8dSLinus Walleij 
77469b78b8dSLinus Walleij static const char * const mi2s_groups[] = {
77569b78b8dSLinus Walleij 	"gpio47", "gpio48", "gpio49", "gpio50", "gpio51", "gpio52", "gpio53"
77669b78b8dSLinus Walleij };
77769b78b8dSLinus Walleij 
77869b78b8dSLinus Walleij static const char * const mic_i2s_groups[] = {
77969b78b8dSLinus Walleij 	"gpio71", "gpio72", "gpio73", "gpio74"
78069b78b8dSLinus Walleij };
78169b78b8dSLinus Walleij 
78269b78b8dSLinus Walleij static const char * const pmb_clk_groups[] = {
78369b78b8dSLinus Walleij 	"gpio21", "gpio86", "gpio112"
78469b78b8dSLinus Walleij };
78569b78b8dSLinus Walleij 
78669b78b8dSLinus Walleij static const char * const pmb_ext_ctrl_groups[] = {
78769b78b8dSLinus Walleij 	"gpio4", "gpio5"
78869b78b8dSLinus Walleij };
78969b78b8dSLinus Walleij 
79069b78b8dSLinus Walleij static const char * const ps_hold_groups[] = {
79169b78b8dSLinus Walleij 	"gpio108"
79269b78b8dSLinus Walleij };
79369b78b8dSLinus Walleij 
79469b78b8dSLinus Walleij static const char * const rpm_wdog_groups[] = {
79569b78b8dSLinus Walleij 	"gpio12"
79669b78b8dSLinus Walleij };
79769b78b8dSLinus Walleij 
79869b78b8dSLinus Walleij static const char * const sdc2_groups[] = {
79969b78b8dSLinus Walleij 	"gpio89", "gpio90", "gpio91", "gpio92", "gpio93", "gpio94", "gpio95",
80069b78b8dSLinus Walleij 	"gpio96", "gpio97", "gpio98"
80169b78b8dSLinus Walleij };
80269b78b8dSLinus Walleij 
80369b78b8dSLinus Walleij static const char * const sdc4_groups[] = {
80469b78b8dSLinus Walleij 	"gpio83", "gpio84", "gpio85", "gpio86", "gpio87", "gpio88"
80569b78b8dSLinus Walleij };
80669b78b8dSLinus Walleij 
80769b78b8dSLinus Walleij static const char * const sdc5_groups[] = {
80869b78b8dSLinus Walleij 	"gpio77", "gpio78", "gpio79", "gpio80", "gpio81", "gpio82"
80969b78b8dSLinus Walleij };
81069b78b8dSLinus Walleij 
81169b78b8dSLinus Walleij static const char * const slimbus1_groups[] = {
81269b78b8dSLinus Walleij 	"gpio50", "gpio51", "gpio60", "gpio61"
81369b78b8dSLinus Walleij };
81469b78b8dSLinus Walleij 
81569b78b8dSLinus Walleij static const char * const slimbus2_groups[] = {
81669b78b8dSLinus Walleij 	"gpio42", "gpio43"
81769b78b8dSLinus Walleij };
81869b78b8dSLinus Walleij 
81969b78b8dSLinus Walleij static const char * const spkr_i2s_groups[] = {
82069b78b8dSLinus Walleij 	"gpio67", "gpio68", "gpio69", "gpio70"
82169b78b8dSLinus Walleij };
82269b78b8dSLinus Walleij 
82369b78b8dSLinus Walleij static const char * const ssbi1_groups[] = {
82469b78b8dSLinus Walleij 	"gpio141", "gpio143"
82569b78b8dSLinus Walleij };
82669b78b8dSLinus Walleij 
82769b78b8dSLinus Walleij static const char * const ssbi2_groups[] = {
82869b78b8dSLinus Walleij 	"gpio140", "gpio142"
82969b78b8dSLinus Walleij };
83069b78b8dSLinus Walleij 
83169b78b8dSLinus Walleij static const char * const ssbi_ext_gps_groups[] = {
83269b78b8dSLinus Walleij 	"gpio23"
83369b78b8dSLinus Walleij };
83469b78b8dSLinus Walleij 
83569b78b8dSLinus Walleij static const char * const ssbi_pmic2_groups[] = {
83669b78b8dSLinus Walleij 	"gpio149"
83769b78b8dSLinus Walleij };
83869b78b8dSLinus Walleij 
83969b78b8dSLinus Walleij static const char * const ssbi_qpa1_groups[] = {
84069b78b8dSLinus Walleij 	"gpio131"
84169b78b8dSLinus Walleij };
84269b78b8dSLinus Walleij 
84369b78b8dSLinus Walleij static const char * const ssbi_ts_groups[] = {
84469b78b8dSLinus Walleij 	"gpio10"
84569b78b8dSLinus Walleij };
84669b78b8dSLinus Walleij 
84769b78b8dSLinus Walleij static const char * const tsif1_groups[] = {
84869b78b8dSLinus Walleij 	"gpio75", "gpio76", "gpio77", "gpio82"
84969b78b8dSLinus Walleij };
85069b78b8dSLinus Walleij 
85169b78b8dSLinus Walleij static const char * const tsif2_groups[] = {
85269b78b8dSLinus Walleij 	"gpio78", "gpio79", "gpio80", "gpio81"
85369b78b8dSLinus Walleij };
85469b78b8dSLinus Walleij 
85569b78b8dSLinus Walleij static const char * const ts_eoc_groups[] = {
85669b78b8dSLinus Walleij 	"gpio11"
85769b78b8dSLinus Walleij };
85869b78b8dSLinus Walleij 
85969b78b8dSLinus Walleij static const char * const usb_fs1_groups[] = {
86069b78b8dSLinus Walleij 	"gpio32", "gpio33"
86169b78b8dSLinus Walleij };
86269b78b8dSLinus Walleij 
86369b78b8dSLinus Walleij static const char * const usb_fs1_oe_groups[] = {
86469b78b8dSLinus Walleij 	"gpio31"
86569b78b8dSLinus Walleij };
86669b78b8dSLinus Walleij 
86769b78b8dSLinus Walleij static const char * const usb_fs1_oe_n_groups[] = {
86869b78b8dSLinus Walleij 	"gpio31"
86969b78b8dSLinus Walleij };
87069b78b8dSLinus Walleij 
87169b78b8dSLinus Walleij static const char * const usb_fs2_groups[] = {
87269b78b8dSLinus Walleij 	"gpio34", "gpio35"
87369b78b8dSLinus Walleij };
87469b78b8dSLinus Walleij 
87569b78b8dSLinus Walleij static const char * const usb_fs2_oe_groups[] = {
87669b78b8dSLinus Walleij 	"gpio36"
87769b78b8dSLinus Walleij };
87869b78b8dSLinus Walleij 
87969b78b8dSLinus Walleij static const char * const usb_fs2_oe_n_groups[] = {
88069b78b8dSLinus Walleij 	"gpio36"
88169b78b8dSLinus Walleij };
88269b78b8dSLinus Walleij 
88369b78b8dSLinus Walleij static const char * const vfe_camif_timer1_a_groups[] = {
88469b78b8dSLinus Walleij 	"gpio2"
88569b78b8dSLinus Walleij };
88669b78b8dSLinus Walleij 
88769b78b8dSLinus Walleij static const char * const vfe_camif_timer1_b_groups[] = {
88869b78b8dSLinus Walleij 	"gpio38"
88969b78b8dSLinus Walleij };
89069b78b8dSLinus Walleij 
89169b78b8dSLinus Walleij static const char * const vfe_camif_timer2_groups[] = {
89269b78b8dSLinus Walleij 	"gpio3"
89369b78b8dSLinus Walleij };
89469b78b8dSLinus Walleij 
89569b78b8dSLinus Walleij static const char * const vfe_camif_timer3_a_groups[] = {
89669b78b8dSLinus Walleij 	"gpio4"
89769b78b8dSLinus Walleij };
89869b78b8dSLinus Walleij 
89969b78b8dSLinus Walleij static const char * const vfe_camif_timer3_b_groups[] = {
90069b78b8dSLinus Walleij 	"gpio151"
90169b78b8dSLinus Walleij };
90269b78b8dSLinus Walleij 
90369b78b8dSLinus Walleij static const char * const vfe_camif_timer4_a_groups[] = {
90469b78b8dSLinus Walleij 	"gpio65"
90569b78b8dSLinus Walleij };
90669b78b8dSLinus Walleij 
90769b78b8dSLinus Walleij static const char * const vfe_camif_timer4_b_groups[] = {
90869b78b8dSLinus Walleij 	"gpio150"
90969b78b8dSLinus Walleij };
91069b78b8dSLinus Walleij 
91169b78b8dSLinus Walleij static const char * const vfe_camif_timer4_c_groups[] = {
91269b78b8dSLinus Walleij 	"gpio10"
91369b78b8dSLinus Walleij };
91469b78b8dSLinus Walleij 
91569b78b8dSLinus Walleij static const char * const vfe_camif_timer5_a_groups[] = {
91669b78b8dSLinus Walleij 	"gpio66"
91769b78b8dSLinus Walleij };
91869b78b8dSLinus Walleij 
91969b78b8dSLinus Walleij static const char * const vfe_camif_timer5_b_groups[] = {
92069b78b8dSLinus Walleij 	"gpio39"
92169b78b8dSLinus Walleij };
92269b78b8dSLinus Walleij 
92369b78b8dSLinus Walleij static const char * const vfe_camif_timer6_a_groups[] = {
92469b78b8dSLinus Walleij 	"gpio71"
92569b78b8dSLinus Walleij };
92669b78b8dSLinus Walleij 
92769b78b8dSLinus Walleij static const char * const vfe_camif_timer6_b_groups[] = {
92869b78b8dSLinus Walleij 	"gpio0"
92969b78b8dSLinus Walleij };
93069b78b8dSLinus Walleij 
93169b78b8dSLinus Walleij static const char * const vfe_camif_timer6_c_groups[] = {
93269b78b8dSLinus Walleij 	"gpio18"
93369b78b8dSLinus Walleij };
93469b78b8dSLinus Walleij 
93569b78b8dSLinus Walleij static const char * const vfe_camif_timer7_a_groups[] = {
93669b78b8dSLinus Walleij 	"gpio67"
93769b78b8dSLinus Walleij };
93869b78b8dSLinus Walleij 
93969b78b8dSLinus Walleij static const char * const vfe_camif_timer7_b_groups[] = {
94069b78b8dSLinus Walleij 	"gpio1"
94169b78b8dSLinus Walleij };
94269b78b8dSLinus Walleij 
94369b78b8dSLinus Walleij static const char * const vfe_camif_timer7_c_groups[] = {
94469b78b8dSLinus Walleij 	"gpio19"
94569b78b8dSLinus Walleij };
94669b78b8dSLinus Walleij 
94769b78b8dSLinus Walleij static const char * const wlan_groups[] = {
94869b78b8dSLinus Walleij 	"gpio84", "gpio85", "gpio86", "gpio87", "gpio88"
94969b78b8dSLinus Walleij };
95069b78b8dSLinus Walleij 
951c7a291dbSRohit Agarwal static const struct pinfunction msm8960_functions[] = {
952c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(audio_pcm),
953c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(bt),
954c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(cam_mclk0),
955c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(cam_mclk1),
956c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(cam_mclk2),
957c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(codec_mic_i2s),
958c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(codec_spkr_i2s),
959c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ext_gps),
960c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(fm),
961c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gps_blanking),
962c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gps_pps_in),
963c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gps_pps_out),
964c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_clk_0a),
965c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_clk_0b),
966c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_clk_1a),
967c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_clk_1b),
968c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_clk_2a),
969c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_clk_2b),
970c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_mn),
971c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_pdm_0a),
972c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_pdm_0b),
973c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_pdm_1a),
974c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_pdm_1b),
975c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_pdm_2a),
976c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp_pdm_2b),
977c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gpio),
978c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi1),
979c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi1_spi_cs1_n),
980c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi1_spi_cs2a_n),
981c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi1_spi_cs2b_n),
982c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi1_spi_cs3_n),
983c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi2),
984c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi2_spi_cs1_n),
985c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi2_spi_cs2_n),
986c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi2_spi_cs3_n),
987c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi3),
988c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi4),
989c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi4_3d_cam_i2c_l),
990c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi4_3d_cam_i2c_r),
991c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi5),
992c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi5_3d_cam_i2c_l),
993c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi5_3d_cam_i2c_r),
994c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi6),
995c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi7),
996c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi8),
997c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi9),
998c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi10),
999c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi11),
1000c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi11_spi_cs1a_n),
1001c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi11_spi_cs1b_n),
1002c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi11_spi_cs2a_n),
1003c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi11_spi_cs2b_n),
1004c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi11_spi_cs3_n),
1005c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gsbi12),
1006c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(hdmi_cec),
1007c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(hdmi_ddc_clock),
1008c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(hdmi_ddc_data),
1009c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(hdmi_hot_plug_detect),
1010c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(hsic),
1011c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(mdp_vsync),
1012c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(mi2s),
1013c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(mic_i2s),
1014c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(pmb_clk),
1015c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(pmb_ext_ctrl),
1016c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ps_hold),
1017c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(rpm_wdog),
1018c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(sdc2),
1019c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(sdc4),
1020c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(sdc5),
1021c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(slimbus1),
1022c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(slimbus2),
1023c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(spkr_i2s),
1024c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ssbi1),
1025c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ssbi2),
1026c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ssbi_ext_gps),
1027c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ssbi_pmic2),
1028c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ssbi_qpa1),
1029c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ssbi_ts),
1030c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(tsif1),
1031c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(tsif2),
1032c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(ts_eoc),
1033c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(usb_fs1),
1034c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(usb_fs1_oe),
1035c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(usb_fs1_oe_n),
1036c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(usb_fs2),
1037c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(usb_fs2_oe),
1038c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(usb_fs2_oe_n),
1039c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer1_a),
1040c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer1_b),
1041c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer2),
1042c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer3_a),
1043c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer3_b),
1044c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer4_a),
1045c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer4_b),
1046c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer4_c),
1047c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer5_a),
1048c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer5_b),
1049c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer6_a),
1050c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer6_b),
1051c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer6_c),
1052c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer7_a),
1053c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer7_b),
1054c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(vfe_camif_timer7_c),
1055c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(wlan),
105669b78b8dSLinus Walleij };
105769b78b8dSLinus Walleij 
105869b78b8dSLinus Walleij static const struct msm_pingroup msm8960_groups[] = {
105969b78b8dSLinus Walleij 	PINGROUP(0, mdp_vsync, vfe_camif_timer6_b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106069b78b8dSLinus Walleij 	PINGROUP(1, mdp_vsync, vfe_camif_timer7_b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106169b78b8dSLinus Walleij 	PINGROUP(2, vfe_camif_timer1_a, gp_mn, NA, cam_mclk2, NA, NA, NA, NA, NA, NA, NA),
106269b78b8dSLinus Walleij 	PINGROUP(3, vfe_camif_timer2, gp_clk_0a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106369b78b8dSLinus Walleij 	PINGROUP(4, vfe_camif_timer3_a, cam_mclk1, gp_clk_1a, pmb_ext_ctrl, NA, NA, NA, NA, NA, NA, NA),
106469b78b8dSLinus Walleij 	PINGROUP(5, cam_mclk0, pmb_ext_ctrl, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106569b78b8dSLinus Walleij 	PINGROUP(6, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106669b78b8dSLinus Walleij 	PINGROUP(7, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106769b78b8dSLinus Walleij 	PINGROUP(8, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106869b78b8dSLinus Walleij 	PINGROUP(9, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106969b78b8dSLinus Walleij 	PINGROUP(10, gsbi2, ssbi_ts, NA, vfe_camif_timer4_c, NA, NA, NA, NA, NA, NA, NA),
107069b78b8dSLinus Walleij 	PINGROUP(11, gsbi2, ts_eoc, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107169b78b8dSLinus Walleij 	PINGROUP(12, gsbi2, rpm_wdog, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107269b78b8dSLinus Walleij 	PINGROUP(13, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107369b78b8dSLinus Walleij 	PINGROUP(14, gsbi3, gsbi1_spi_cs1_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107469b78b8dSLinus Walleij 	PINGROUP(15, gsbi3, gsbi1_spi_cs2a_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107569b78b8dSLinus Walleij 	PINGROUP(16, gsbi3, gsbi1_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107669b78b8dSLinus Walleij 	PINGROUP(17, gsbi3, gsbi1_spi_cs2b_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107769b78b8dSLinus Walleij 	PINGROUP(18, gsbi4, gsbi11_spi_cs1b_n, NA, NA, gsbi4_3d_cam_i2c_l, vfe_camif_timer6_c, NA, NA, NA, NA, NA),
107869b78b8dSLinus Walleij 	PINGROUP(19, gsbi4, gsbi11_spi_cs2b_n, NA, mdp_vsync, NA, gsbi4_3d_cam_i2c_l, vfe_camif_timer7_c, NA, NA, NA, NA),
107969b78b8dSLinus Walleij 	PINGROUP(20, gsbi4, gsbi4_3d_cam_i2c_r, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108069b78b8dSLinus Walleij 	PINGROUP(21, gsbi4, pmb_clk, gsbi4_3d_cam_i2c_r, NA, NA, NA, NA, NA, NA, NA, NA),
108169b78b8dSLinus Walleij 	PINGROUP(22, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_l, NA),
108269b78b8dSLinus Walleij 	PINGROUP(23, gsbi5, ssbi_ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_l, NA),
108369b78b8dSLinus Walleij 	PINGROUP(24, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_r, NA),
108469b78b8dSLinus Walleij 	PINGROUP(25, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_r, NA),
108569b78b8dSLinus Walleij 	PINGROUP(26, fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108669b78b8dSLinus Walleij 	PINGROUP(27, fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108769b78b8dSLinus Walleij 	PINGROUP(28, bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108869b78b8dSLinus Walleij 	PINGROUP(29, bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108969b78b8dSLinus Walleij 	PINGROUP(30, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109069b78b8dSLinus Walleij 	PINGROUP(31, gsbi7, usb_fs1_oe, usb_fs1_oe_n, NA, NA, NA, NA, NA, NA, NA, NA),
109169b78b8dSLinus Walleij 	PINGROUP(32, gsbi7, usb_fs1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109269b78b8dSLinus Walleij 	PINGROUP(33, gsbi7, usb_fs1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109369b78b8dSLinus Walleij 	PINGROUP(34, gsbi8, usb_fs2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109469b78b8dSLinus Walleij 	PINGROUP(35, gsbi8, usb_fs2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109569b78b8dSLinus Walleij 	PINGROUP(36, gsbi8, usb_fs2_oe, usb_fs2_oe_n, gsbi11_spi_cs1a_n, NA, NA, NA, NA, NA, NA, NA),
109669b78b8dSLinus Walleij 	PINGROUP(37, gsbi8, gps_pps_out, gps_pps_in, gsbi11_spi_cs2a_n, gp_clk_2b, NA, NA, NA, NA, NA, NA),
109769b78b8dSLinus Walleij 	PINGROUP(38, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, vfe_camif_timer1_b, NA),
109869b78b8dSLinus Walleij 	PINGROUP(39, gsbi11, gp_pdm_0b, NA, NA, NA, NA, NA, NA, NA, NA, vfe_camif_timer5_b),
109969b78b8dSLinus Walleij 	PINGROUP(40, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110069b78b8dSLinus Walleij 	PINGROUP(41, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110169b78b8dSLinus Walleij 	PINGROUP(42, gsbi12, slimbus2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110269b78b8dSLinus Walleij 	PINGROUP(43, gsbi12, slimbus2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110369b78b8dSLinus Walleij 	PINGROUP(44, gsbi12, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110469b78b8dSLinus Walleij 	PINGROUP(45, gsbi12, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110569b78b8dSLinus Walleij 	PINGROUP(46, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110669b78b8dSLinus Walleij 	PINGROUP(47, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110769b78b8dSLinus Walleij 	PINGROUP(48, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110869b78b8dSLinus Walleij 	PINGROUP(49, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110969b78b8dSLinus Walleij 	PINGROUP(50, mi2s, slimbus1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111069b78b8dSLinus Walleij 	PINGROUP(51, mi2s, slimbus1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111169b78b8dSLinus Walleij 	PINGROUP(52, mi2s, gp_clk_2a, gsbi2_spi_cs1_n, NA, NA, NA, NA, NA, NA, NA, NA),
111269b78b8dSLinus Walleij 	PINGROUP(53, mi2s, gp_pdm_2b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111369b78b8dSLinus Walleij 	PINGROUP(54, codec_mic_i2s, gp_clk_0b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111469b78b8dSLinus Walleij 	PINGROUP(55, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111569b78b8dSLinus Walleij 	PINGROUP(56, codec_mic_i2s, gsbi2_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111669b78b8dSLinus Walleij 	PINGROUP(57, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111769b78b8dSLinus Walleij 	PINGROUP(58, codec_mic_i2s, gp_pdm_0a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111869b78b8dSLinus Walleij 	PINGROUP(59, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111969b78b8dSLinus Walleij 	PINGROUP(60, slimbus1, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112069b78b8dSLinus Walleij 	PINGROUP(61, slimbus1, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112169b78b8dSLinus Walleij 	PINGROUP(62, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112269b78b8dSLinus Walleij 	PINGROUP(63, audio_pcm, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112369b78b8dSLinus Walleij 	PINGROUP(64, audio_pcm, gp_pdm_1b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112469b78b8dSLinus Walleij 	PINGROUP(65, audio_pcm, vfe_camif_timer4_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112569b78b8dSLinus Walleij 	PINGROUP(66, audio_pcm, vfe_camif_timer5_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112669b78b8dSLinus Walleij 	PINGROUP(67, spkr_i2s, vfe_camif_timer7_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112769b78b8dSLinus Walleij 	PINGROUP(68, spkr_i2s, gsbi2_spi_cs2_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112869b78b8dSLinus Walleij 	PINGROUP(69, spkr_i2s, gp_pdm_2a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112969b78b8dSLinus Walleij 	PINGROUP(70, spkr_i2s, gp_clk_1b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113069b78b8dSLinus Walleij 	PINGROUP(71, mic_i2s, gsbi10, vfe_camif_timer6_a, NA, NA, NA, NA, NA, NA, NA, NA),
113169b78b8dSLinus Walleij 	PINGROUP(72, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113269b78b8dSLinus Walleij 	PINGROUP(73, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113369b78b8dSLinus Walleij 	PINGROUP(74, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113469b78b8dSLinus Walleij 	PINGROUP(75, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113569b78b8dSLinus Walleij 	PINGROUP(76, tsif1, gsbi11_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113669b78b8dSLinus Walleij 	PINGROUP(77, tsif1, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113769b78b8dSLinus Walleij 	PINGROUP(78, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113869b78b8dSLinus Walleij 	PINGROUP(79, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113969b78b8dSLinus Walleij 	PINGROUP(80, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114069b78b8dSLinus Walleij 	PINGROUP(81, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114169b78b8dSLinus Walleij 	PINGROUP(82, tsif1, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114269b78b8dSLinus Walleij 	PINGROUP(83, bt, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114369b78b8dSLinus Walleij 	PINGROUP(84, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114469b78b8dSLinus Walleij 	PINGROUP(85, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114569b78b8dSLinus Walleij 	PINGROUP(86, wlan, sdc4, pmb_clk, NA, NA, NA, NA, NA, NA, NA, NA),
114669b78b8dSLinus Walleij 	PINGROUP(87, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114769b78b8dSLinus Walleij 	PINGROUP(88, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114869b78b8dSLinus Walleij 	PINGROUP(89, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114969b78b8dSLinus Walleij 	PINGROUP(90, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115069b78b8dSLinus Walleij 	PINGROUP(91, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115169b78b8dSLinus Walleij 	PINGROUP(92, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115269b78b8dSLinus Walleij 	PINGROUP(93, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115369b78b8dSLinus Walleij 	PINGROUP(94, sdc2, gsbi9, gp_pdm_1a, NA, NA, NA, NA, NA, NA, NA, NA),
115469b78b8dSLinus Walleij 	PINGROUP(95, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115569b78b8dSLinus Walleij 	PINGROUP(96, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115669b78b8dSLinus Walleij 	PINGROUP(97, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115769b78b8dSLinus Walleij 	PINGROUP(98, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115869b78b8dSLinus Walleij 	PINGROUP(99, hdmi_cec, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115969b78b8dSLinus Walleij 	PINGROUP(100, hdmi_ddc_clock, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116069b78b8dSLinus Walleij 	PINGROUP(101, hdmi_ddc_data, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116169b78b8dSLinus Walleij 	PINGROUP(102, hdmi_hot_plug_detect, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116269b78b8dSLinus Walleij 	PINGROUP(103, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116369b78b8dSLinus Walleij 	PINGROUP(104, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116469b78b8dSLinus Walleij 	PINGROUP(105, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116569b78b8dSLinus Walleij 	PINGROUP(106, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116669b78b8dSLinus Walleij 	PINGROUP(107, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116769b78b8dSLinus Walleij 	PINGROUP(108, ps_hold, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116869b78b8dSLinus Walleij 	PINGROUP(109, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116969b78b8dSLinus Walleij 	PINGROUP(110, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117069b78b8dSLinus Walleij 	PINGROUP(111, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117169b78b8dSLinus Walleij 	PINGROUP(112, NA, pmb_clk, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117269b78b8dSLinus Walleij 	PINGROUP(113, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117369b78b8dSLinus Walleij 	PINGROUP(114, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117469b78b8dSLinus Walleij 	PINGROUP(115, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117569b78b8dSLinus Walleij 	PINGROUP(116, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117669b78b8dSLinus Walleij 	PINGROUP(117, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117769b78b8dSLinus Walleij 	PINGROUP(118, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117869b78b8dSLinus Walleij 	PINGROUP(119, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117969b78b8dSLinus Walleij 	PINGROUP(120, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118069b78b8dSLinus Walleij 	PINGROUP(121, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118169b78b8dSLinus Walleij 	PINGROUP(122, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118269b78b8dSLinus Walleij 	PINGROUP(123, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118369b78b8dSLinus Walleij 	PINGROUP(124, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118469b78b8dSLinus Walleij 	PINGROUP(125, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118569b78b8dSLinus Walleij 	PINGROUP(126, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118669b78b8dSLinus Walleij 	PINGROUP(127, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118769b78b8dSLinus Walleij 	PINGROUP(128, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118869b78b8dSLinus Walleij 	PINGROUP(129, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118969b78b8dSLinus Walleij 	PINGROUP(130, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119069b78b8dSLinus Walleij 	PINGROUP(131, NA, ssbi_qpa1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119169b78b8dSLinus Walleij 	PINGROUP(132, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119269b78b8dSLinus Walleij 	PINGROUP(133, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119369b78b8dSLinus Walleij 	PINGROUP(134, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119469b78b8dSLinus Walleij 	PINGROUP(135, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119569b78b8dSLinus Walleij 	PINGROUP(136, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119669b78b8dSLinus Walleij 	PINGROUP(137, gps_blanking, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119769b78b8dSLinus Walleij 	PINGROUP(138, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119869b78b8dSLinus Walleij 	PINGROUP(139, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119969b78b8dSLinus Walleij 	PINGROUP(140, ssbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120069b78b8dSLinus Walleij 	PINGROUP(141, ssbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120169b78b8dSLinus Walleij 	PINGROUP(142, ssbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120269b78b8dSLinus Walleij 	PINGROUP(143, ssbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120369b78b8dSLinus Walleij 	PINGROUP(144, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120469b78b8dSLinus Walleij 	PINGROUP(145, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120569b78b8dSLinus Walleij 	PINGROUP(146, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120669b78b8dSLinus Walleij 	PINGROUP(147, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120769b78b8dSLinus Walleij 	PINGROUP(148, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120869b78b8dSLinus Walleij 	PINGROUP(149, ssbi_pmic2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120969b78b8dSLinus Walleij 	PINGROUP(150, hsic, NA, vfe_camif_timer4_b, NA, NA, NA, NA, NA, NA, NA, NA),
121069b78b8dSLinus Walleij 	PINGROUP(151, hsic, NA, vfe_camif_timer3_b, NA, NA, NA, NA, NA, NA, NA, NA),
121169b78b8dSLinus Walleij 
121269b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_clk, 0x20a0, 13, 6),
121369b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_cmd, 0x20a0, 11, 3),
121469b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_data, 0x20a0, 9, 0),
121569b78b8dSLinus Walleij 
121669b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_clk, 0x20a4, 14, 6),
121769b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_cmd, 0x20a4, 11, 3),
121869b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_data, 0x20a4, 9, 0),
121969b78b8dSLinus Walleij };
122069b78b8dSLinus Walleij 
122169b78b8dSLinus Walleij #define NUM_GPIO_PINGROUPS 152
122269b78b8dSLinus Walleij 
122369b78b8dSLinus Walleij static const struct msm_pinctrl_soc_data msm8960_pinctrl = {
122469b78b8dSLinus Walleij 	.pins = msm8960_pins,
122569b78b8dSLinus Walleij 	.npins = ARRAY_SIZE(msm8960_pins),
122669b78b8dSLinus Walleij 	.functions = msm8960_functions,
122769b78b8dSLinus Walleij 	.nfunctions = ARRAY_SIZE(msm8960_functions),
122869b78b8dSLinus Walleij 	.groups = msm8960_groups,
122969b78b8dSLinus Walleij 	.ngroups = ARRAY_SIZE(msm8960_groups),
123069b78b8dSLinus Walleij 	.ngpios = NUM_GPIO_PINGROUPS,
123169b78b8dSLinus Walleij };
123269b78b8dSLinus Walleij 
msm8960_pinctrl_probe(struct platform_device * pdev)123369b78b8dSLinus Walleij static int msm8960_pinctrl_probe(struct platform_device *pdev)
123469b78b8dSLinus Walleij {
123569b78b8dSLinus Walleij 	return msm_pinctrl_probe(pdev, &msm8960_pinctrl);
123669b78b8dSLinus Walleij }
123769b78b8dSLinus Walleij 
123869b78b8dSLinus Walleij static const struct of_device_id msm8960_pinctrl_of_match[] = {
123969b78b8dSLinus Walleij 	{ .compatible = "qcom,msm8960-pinctrl", },
124069b78b8dSLinus Walleij 	{ },
124169b78b8dSLinus Walleij };
124269b78b8dSLinus Walleij 
124369b78b8dSLinus Walleij static struct platform_driver msm8960_pinctrl_driver = {
124469b78b8dSLinus Walleij 	.driver = {
124569b78b8dSLinus Walleij 		.name = "msm8960-pinctrl",
124669b78b8dSLinus Walleij 		.of_match_table = msm8960_pinctrl_of_match,
124769b78b8dSLinus Walleij 	},
124869b78b8dSLinus Walleij 	.probe = msm8960_pinctrl_probe,
124969b78b8dSLinus Walleij 	.remove = msm_pinctrl_remove,
125069b78b8dSLinus Walleij };
125169b78b8dSLinus Walleij 
msm8960_pinctrl_init(void)125269b78b8dSLinus Walleij static int __init msm8960_pinctrl_init(void)
125369b78b8dSLinus Walleij {
125469b78b8dSLinus Walleij 	return platform_driver_register(&msm8960_pinctrl_driver);
125569b78b8dSLinus Walleij }
125669b78b8dSLinus Walleij arch_initcall(msm8960_pinctrl_init);
125769b78b8dSLinus Walleij 
msm8960_pinctrl_exit(void)125869b78b8dSLinus Walleij static void __exit msm8960_pinctrl_exit(void)
125969b78b8dSLinus Walleij {
126069b78b8dSLinus Walleij 	platform_driver_unregister(&msm8960_pinctrl_driver);
126169b78b8dSLinus Walleij }
126269b78b8dSLinus Walleij module_exit(msm8960_pinctrl_exit);
126369b78b8dSLinus Walleij 
126469b78b8dSLinus Walleij MODULE_AUTHOR("Bjorn Andersson <bjorn.andersson@sonymobile.com>");
126569b78b8dSLinus Walleij MODULE_DESCRIPTION("Qualcomm MSM8960 pinctrl driver");
126669b78b8dSLinus Walleij MODULE_LICENSE("GPL v2");
126769b78b8dSLinus Walleij MODULE_DEVICE_TABLE(of, msm8960_pinctrl_of_match);
1268