169b78b8dSLinus Walleij /*
269b78b8dSLinus Walleij  * Copyright (c) 2014, Sony Mobile Communications AB.
369b78b8dSLinus Walleij  *
469b78b8dSLinus Walleij  * This program is free software; you can redistribute it and/or modify
569b78b8dSLinus Walleij  * it under the terms of the GNU General Public License version 2 and
669b78b8dSLinus Walleij  * only version 2 as published by the Free Software Foundation.
769b78b8dSLinus Walleij  *
869b78b8dSLinus Walleij  * This program is distributed in the hope that it will be useful,
969b78b8dSLinus Walleij  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1069b78b8dSLinus Walleij  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1169b78b8dSLinus Walleij  * GNU General Public License for more details.
1269b78b8dSLinus Walleij  */
1369b78b8dSLinus Walleij 
1469b78b8dSLinus Walleij #include <linux/module.h>
1569b78b8dSLinus Walleij #include <linux/of.h>
1669b78b8dSLinus Walleij #include <linux/platform_device.h>
1769b78b8dSLinus Walleij #include <linux/pinctrl/pinctrl.h>
1869b78b8dSLinus Walleij #include <linux/pinctrl/pinmux.h>
1969b78b8dSLinus Walleij 
2069b78b8dSLinus Walleij #include "pinctrl-msm.h"
2169b78b8dSLinus Walleij 
2269b78b8dSLinus Walleij static const struct pinctrl_pin_desc msm8960_pins[] = {
2369b78b8dSLinus Walleij 	PINCTRL_PIN(0, "GPIO_0"),
2469b78b8dSLinus Walleij 	PINCTRL_PIN(1, "GPIO_1"),
2569b78b8dSLinus Walleij 	PINCTRL_PIN(2, "GPIO_2"),
2669b78b8dSLinus Walleij 	PINCTRL_PIN(3, "GPIO_3"),
2769b78b8dSLinus Walleij 	PINCTRL_PIN(4, "GPIO_4"),
2869b78b8dSLinus Walleij 	PINCTRL_PIN(5, "GPIO_5"),
2969b78b8dSLinus Walleij 	PINCTRL_PIN(6, "GPIO_6"),
3069b78b8dSLinus Walleij 	PINCTRL_PIN(7, "GPIO_7"),
3169b78b8dSLinus Walleij 	PINCTRL_PIN(8, "GPIO_8"),
3269b78b8dSLinus Walleij 	PINCTRL_PIN(9, "GPIO_9"),
3369b78b8dSLinus Walleij 	PINCTRL_PIN(10, "GPIO_10"),
3469b78b8dSLinus Walleij 	PINCTRL_PIN(11, "GPIO_11"),
3569b78b8dSLinus Walleij 	PINCTRL_PIN(12, "GPIO_12"),
3669b78b8dSLinus Walleij 	PINCTRL_PIN(13, "GPIO_13"),
3769b78b8dSLinus Walleij 	PINCTRL_PIN(14, "GPIO_14"),
3869b78b8dSLinus Walleij 	PINCTRL_PIN(15, "GPIO_15"),
3969b78b8dSLinus Walleij 	PINCTRL_PIN(16, "GPIO_16"),
4069b78b8dSLinus Walleij 	PINCTRL_PIN(17, "GPIO_17"),
4169b78b8dSLinus Walleij 	PINCTRL_PIN(18, "GPIO_18"),
4269b78b8dSLinus Walleij 	PINCTRL_PIN(19, "GPIO_19"),
4369b78b8dSLinus Walleij 	PINCTRL_PIN(20, "GPIO_20"),
4469b78b8dSLinus Walleij 	PINCTRL_PIN(21, "GPIO_21"),
4569b78b8dSLinus Walleij 	PINCTRL_PIN(22, "GPIO_22"),
4669b78b8dSLinus Walleij 	PINCTRL_PIN(23, "GPIO_23"),
4769b78b8dSLinus Walleij 	PINCTRL_PIN(24, "GPIO_24"),
4869b78b8dSLinus Walleij 	PINCTRL_PIN(25, "GPIO_25"),
4969b78b8dSLinus Walleij 	PINCTRL_PIN(26, "GPIO_26"),
5069b78b8dSLinus Walleij 	PINCTRL_PIN(27, "GPIO_27"),
5169b78b8dSLinus Walleij 	PINCTRL_PIN(28, "GPIO_28"),
5269b78b8dSLinus Walleij 	PINCTRL_PIN(29, "GPIO_29"),
5369b78b8dSLinus Walleij 	PINCTRL_PIN(30, "GPIO_30"),
5469b78b8dSLinus Walleij 	PINCTRL_PIN(31, "GPIO_31"),
5569b78b8dSLinus Walleij 	PINCTRL_PIN(32, "GPIO_32"),
5669b78b8dSLinus Walleij 	PINCTRL_PIN(33, "GPIO_33"),
5769b78b8dSLinus Walleij 	PINCTRL_PIN(34, "GPIO_34"),
5869b78b8dSLinus Walleij 	PINCTRL_PIN(35, "GPIO_35"),
5969b78b8dSLinus Walleij 	PINCTRL_PIN(36, "GPIO_36"),
6069b78b8dSLinus Walleij 	PINCTRL_PIN(37, "GPIO_37"),
6169b78b8dSLinus Walleij 	PINCTRL_PIN(38, "GPIO_38"),
6269b78b8dSLinus Walleij 	PINCTRL_PIN(39, "GPIO_39"),
6369b78b8dSLinus Walleij 	PINCTRL_PIN(40, "GPIO_40"),
6469b78b8dSLinus Walleij 	PINCTRL_PIN(41, "GPIO_41"),
6569b78b8dSLinus Walleij 	PINCTRL_PIN(42, "GPIO_42"),
6669b78b8dSLinus Walleij 	PINCTRL_PIN(43, "GPIO_43"),
6769b78b8dSLinus Walleij 	PINCTRL_PIN(44, "GPIO_44"),
6869b78b8dSLinus Walleij 	PINCTRL_PIN(45, "GPIO_45"),
6969b78b8dSLinus Walleij 	PINCTRL_PIN(46, "GPIO_46"),
7069b78b8dSLinus Walleij 	PINCTRL_PIN(47, "GPIO_47"),
7169b78b8dSLinus Walleij 	PINCTRL_PIN(48, "GPIO_48"),
7269b78b8dSLinus Walleij 	PINCTRL_PIN(49, "GPIO_49"),
7369b78b8dSLinus Walleij 	PINCTRL_PIN(50, "GPIO_50"),
7469b78b8dSLinus Walleij 	PINCTRL_PIN(51, "GPIO_51"),
7569b78b8dSLinus Walleij 	PINCTRL_PIN(52, "GPIO_52"),
7669b78b8dSLinus Walleij 	PINCTRL_PIN(53, "GPIO_53"),
7769b78b8dSLinus Walleij 	PINCTRL_PIN(54, "GPIO_54"),
7869b78b8dSLinus Walleij 	PINCTRL_PIN(55, "GPIO_55"),
7969b78b8dSLinus Walleij 	PINCTRL_PIN(56, "GPIO_56"),
8069b78b8dSLinus Walleij 	PINCTRL_PIN(57, "GPIO_57"),
8169b78b8dSLinus Walleij 	PINCTRL_PIN(58, "GPIO_58"),
8269b78b8dSLinus Walleij 	PINCTRL_PIN(59, "GPIO_59"),
8369b78b8dSLinus Walleij 	PINCTRL_PIN(60, "GPIO_60"),
8469b78b8dSLinus Walleij 	PINCTRL_PIN(61, "GPIO_61"),
8569b78b8dSLinus Walleij 	PINCTRL_PIN(62, "GPIO_62"),
8669b78b8dSLinus Walleij 	PINCTRL_PIN(63, "GPIO_63"),
8769b78b8dSLinus Walleij 	PINCTRL_PIN(64, "GPIO_64"),
8869b78b8dSLinus Walleij 	PINCTRL_PIN(65, "GPIO_65"),
8969b78b8dSLinus Walleij 	PINCTRL_PIN(66, "GPIO_66"),
9069b78b8dSLinus Walleij 	PINCTRL_PIN(67, "GPIO_67"),
9169b78b8dSLinus Walleij 	PINCTRL_PIN(68, "GPIO_68"),
9269b78b8dSLinus Walleij 	PINCTRL_PIN(69, "GPIO_69"),
9369b78b8dSLinus Walleij 	PINCTRL_PIN(70, "GPIO_70"),
9469b78b8dSLinus Walleij 	PINCTRL_PIN(71, "GPIO_71"),
9569b78b8dSLinus Walleij 	PINCTRL_PIN(72, "GPIO_72"),
9669b78b8dSLinus Walleij 	PINCTRL_PIN(73, "GPIO_73"),
9769b78b8dSLinus Walleij 	PINCTRL_PIN(74, "GPIO_74"),
9869b78b8dSLinus Walleij 	PINCTRL_PIN(75, "GPIO_75"),
9969b78b8dSLinus Walleij 	PINCTRL_PIN(76, "GPIO_76"),
10069b78b8dSLinus Walleij 	PINCTRL_PIN(77, "GPIO_77"),
10169b78b8dSLinus Walleij 	PINCTRL_PIN(78, "GPIO_78"),
10269b78b8dSLinus Walleij 	PINCTRL_PIN(79, "GPIO_79"),
10369b78b8dSLinus Walleij 	PINCTRL_PIN(80, "GPIO_80"),
10469b78b8dSLinus Walleij 	PINCTRL_PIN(81, "GPIO_81"),
10569b78b8dSLinus Walleij 	PINCTRL_PIN(82, "GPIO_82"),
10669b78b8dSLinus Walleij 	PINCTRL_PIN(83, "GPIO_83"),
10769b78b8dSLinus Walleij 	PINCTRL_PIN(84, "GPIO_84"),
10869b78b8dSLinus Walleij 	PINCTRL_PIN(85, "GPIO_85"),
10969b78b8dSLinus Walleij 	PINCTRL_PIN(86, "GPIO_86"),
11069b78b8dSLinus Walleij 	PINCTRL_PIN(87, "GPIO_87"),
11169b78b8dSLinus Walleij 	PINCTRL_PIN(88, "GPIO_88"),
11269b78b8dSLinus Walleij 	PINCTRL_PIN(89, "GPIO_89"),
11369b78b8dSLinus Walleij 	PINCTRL_PIN(90, "GPIO_90"),
11469b78b8dSLinus Walleij 	PINCTRL_PIN(91, "GPIO_91"),
11569b78b8dSLinus Walleij 	PINCTRL_PIN(92, "GPIO_92"),
11669b78b8dSLinus Walleij 	PINCTRL_PIN(93, "GPIO_93"),
11769b78b8dSLinus Walleij 	PINCTRL_PIN(94, "GPIO_94"),
11869b78b8dSLinus Walleij 	PINCTRL_PIN(95, "GPIO_95"),
11969b78b8dSLinus Walleij 	PINCTRL_PIN(96, "GPIO_96"),
12069b78b8dSLinus Walleij 	PINCTRL_PIN(97, "GPIO_97"),
12169b78b8dSLinus Walleij 	PINCTRL_PIN(98, "GPIO_98"),
12269b78b8dSLinus Walleij 	PINCTRL_PIN(99, "GPIO_99"),
12369b78b8dSLinus Walleij 	PINCTRL_PIN(100, "GPIO_100"),
12469b78b8dSLinus Walleij 	PINCTRL_PIN(101, "GPIO_101"),
12569b78b8dSLinus Walleij 	PINCTRL_PIN(102, "GPIO_102"),
12669b78b8dSLinus Walleij 	PINCTRL_PIN(103, "GPIO_103"),
12769b78b8dSLinus Walleij 	PINCTRL_PIN(104, "GPIO_104"),
12869b78b8dSLinus Walleij 	PINCTRL_PIN(105, "GPIO_105"),
12969b78b8dSLinus Walleij 	PINCTRL_PIN(106, "GPIO_106"),
13069b78b8dSLinus Walleij 	PINCTRL_PIN(107, "GPIO_107"),
13169b78b8dSLinus Walleij 	PINCTRL_PIN(108, "GPIO_108"),
13269b78b8dSLinus Walleij 	PINCTRL_PIN(109, "GPIO_109"),
13369b78b8dSLinus Walleij 	PINCTRL_PIN(110, "GPIO_110"),
13469b78b8dSLinus Walleij 	PINCTRL_PIN(111, "GPIO_111"),
13569b78b8dSLinus Walleij 	PINCTRL_PIN(112, "GPIO_112"),
13669b78b8dSLinus Walleij 	PINCTRL_PIN(113, "GPIO_113"),
13769b78b8dSLinus Walleij 	PINCTRL_PIN(114, "GPIO_114"),
13869b78b8dSLinus Walleij 	PINCTRL_PIN(115, "GPIO_115"),
13969b78b8dSLinus Walleij 	PINCTRL_PIN(116, "GPIO_116"),
14069b78b8dSLinus Walleij 	PINCTRL_PIN(117, "GPIO_117"),
14169b78b8dSLinus Walleij 	PINCTRL_PIN(118, "GPIO_118"),
14269b78b8dSLinus Walleij 	PINCTRL_PIN(119, "GPIO_119"),
14369b78b8dSLinus Walleij 	PINCTRL_PIN(120, "GPIO_120"),
14469b78b8dSLinus Walleij 	PINCTRL_PIN(121, "GPIO_121"),
14569b78b8dSLinus Walleij 	PINCTRL_PIN(122, "GPIO_122"),
14669b78b8dSLinus Walleij 	PINCTRL_PIN(123, "GPIO_123"),
14769b78b8dSLinus Walleij 	PINCTRL_PIN(124, "GPIO_124"),
14869b78b8dSLinus Walleij 	PINCTRL_PIN(125, "GPIO_125"),
14969b78b8dSLinus Walleij 	PINCTRL_PIN(126, "GPIO_126"),
15069b78b8dSLinus Walleij 	PINCTRL_PIN(127, "GPIO_127"),
15169b78b8dSLinus Walleij 	PINCTRL_PIN(128, "GPIO_128"),
15269b78b8dSLinus Walleij 	PINCTRL_PIN(129, "GPIO_129"),
15369b78b8dSLinus Walleij 	PINCTRL_PIN(130, "GPIO_130"),
15469b78b8dSLinus Walleij 	PINCTRL_PIN(131, "GPIO_131"),
15569b78b8dSLinus Walleij 	PINCTRL_PIN(132, "GPIO_132"),
15669b78b8dSLinus Walleij 	PINCTRL_PIN(133, "GPIO_133"),
15769b78b8dSLinus Walleij 	PINCTRL_PIN(134, "GPIO_134"),
15869b78b8dSLinus Walleij 	PINCTRL_PIN(135, "GPIO_135"),
15969b78b8dSLinus Walleij 	PINCTRL_PIN(136, "GPIO_136"),
16069b78b8dSLinus Walleij 	PINCTRL_PIN(137, "GPIO_137"),
16169b78b8dSLinus Walleij 	PINCTRL_PIN(138, "GPIO_138"),
16269b78b8dSLinus Walleij 	PINCTRL_PIN(139, "GPIO_139"),
16369b78b8dSLinus Walleij 	PINCTRL_PIN(140, "GPIO_140"),
16469b78b8dSLinus Walleij 	PINCTRL_PIN(141, "GPIO_141"),
16569b78b8dSLinus Walleij 	PINCTRL_PIN(142, "GPIO_142"),
16669b78b8dSLinus Walleij 	PINCTRL_PIN(143, "GPIO_143"),
16769b78b8dSLinus Walleij 	PINCTRL_PIN(144, "GPIO_144"),
16869b78b8dSLinus Walleij 	PINCTRL_PIN(145, "GPIO_145"),
16969b78b8dSLinus Walleij 	PINCTRL_PIN(146, "GPIO_146"),
17069b78b8dSLinus Walleij 	PINCTRL_PIN(147, "GPIO_147"),
17169b78b8dSLinus Walleij 	PINCTRL_PIN(148, "GPIO_148"),
17269b78b8dSLinus Walleij 	PINCTRL_PIN(149, "GPIO_149"),
17369b78b8dSLinus Walleij 	PINCTRL_PIN(150, "GPIO_150"),
17469b78b8dSLinus Walleij 	PINCTRL_PIN(151, "GPIO_151"),
17569b78b8dSLinus Walleij 
17669b78b8dSLinus Walleij 	PINCTRL_PIN(152, "SDC1_CLK"),
17769b78b8dSLinus Walleij 	PINCTRL_PIN(153, "SDC1_CMD"),
17869b78b8dSLinus Walleij 	PINCTRL_PIN(154, "SDC1_DATA"),
17969b78b8dSLinus Walleij 	PINCTRL_PIN(155, "SDC3_CLK"),
18069b78b8dSLinus Walleij 	PINCTRL_PIN(156, "SDC3_CMD"),
18169b78b8dSLinus Walleij 	PINCTRL_PIN(157, "SDC3_DATA"),
18269b78b8dSLinus Walleij };
18369b78b8dSLinus Walleij 
18469b78b8dSLinus Walleij #define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
18569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(0);
18669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(1);
18769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(2);
18869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(3);
18969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(4);
19069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(5);
19169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(6);
19269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(7);
19369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(8);
19469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(9);
19569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(10);
19669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(11);
19769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(12);
19869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(13);
19969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(14);
20069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(15);
20169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(16);
20269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(17);
20369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(18);
20469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(19);
20569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(20);
20669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(21);
20769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(22);
20869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(23);
20969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(24);
21069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(25);
21169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(26);
21269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(27);
21369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(28);
21469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(29);
21569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(30);
21669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(31);
21769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(32);
21869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(33);
21969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(34);
22069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(35);
22169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(36);
22269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(37);
22369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(38);
22469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(39);
22569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(40);
22669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(41);
22769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(42);
22869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(43);
22969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(44);
23069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(45);
23169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(46);
23269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(47);
23369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(48);
23469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(49);
23569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(50);
23669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(51);
23769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(52);
23869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(53);
23969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(54);
24069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(55);
24169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(56);
24269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(57);
24369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(58);
24469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(59);
24569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(60);
24669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(61);
24769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(62);
24869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(63);
24969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(64);
25069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(65);
25169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(66);
25269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(67);
25369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(68);
25469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(69);
25569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(70);
25669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(71);
25769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(72);
25869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(73);
25969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(74);
26069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(75);
26169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(76);
26269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(77);
26369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(78);
26469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(79);
26569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(80);
26669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(81);
26769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(82);
26869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(83);
26969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(84);
27069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(85);
27169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(86);
27269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(87);
27369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(88);
27469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(89);
27569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(90);
27669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(91);
27769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(92);
27869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(93);
27969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(94);
28069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(95);
28169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(96);
28269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(97);
28369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(98);
28469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(99);
28569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(100);
28669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(101);
28769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(102);
28869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(103);
28969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(104);
29069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(105);
29169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(106);
29269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(107);
29369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(108);
29469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(109);
29569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(110);
29669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(111);
29769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(112);
29869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(113);
29969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(114);
30069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(115);
30169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(116);
30269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(117);
30369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(118);
30469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(119);
30569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(120);
30669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(121);
30769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(122);
30869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(123);
30969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(124);
31069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(125);
31169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(126);
31269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(127);
31369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(128);
31469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(129);
31569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(130);
31669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(131);
31769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(132);
31869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(133);
31969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(134);
32069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(135);
32169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(136);
32269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(137);
32369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(138);
32469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(139);
32569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(140);
32669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(141);
32769b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(142);
32869b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(143);
32969b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(144);
33069b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(145);
33169b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(146);
33269b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(147);
33369b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(148);
33469b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(149);
33569b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(150);
33669b78b8dSLinus Walleij DECLARE_MSM_GPIO_PINS(151);
33769b78b8dSLinus Walleij 
33869b78b8dSLinus Walleij static const unsigned int sdc1_clk_pins[] = { 152 };
33969b78b8dSLinus Walleij static const unsigned int sdc1_cmd_pins[] = { 153 };
34069b78b8dSLinus Walleij static const unsigned int sdc1_data_pins[] = { 154 };
34169b78b8dSLinus Walleij static const unsigned int sdc3_clk_pins[] = { 155 };
34269b78b8dSLinus Walleij static const unsigned int sdc3_cmd_pins[] = { 156 };
34369b78b8dSLinus Walleij static const unsigned int sdc3_data_pins[] = { 157 };
34469b78b8dSLinus Walleij 
34569b78b8dSLinus Walleij #define FUNCTION(fname)					\
34669b78b8dSLinus Walleij 	[MSM_MUX_##fname] = {				\
34769b78b8dSLinus Walleij 		.name = #fname,				\
34869b78b8dSLinus Walleij 		.groups = fname##_groups,		\
34969b78b8dSLinus Walleij 		.ngroups = ARRAY_SIZE(fname##_groups),	\
35069b78b8dSLinus Walleij 	}
35169b78b8dSLinus Walleij 
35269b78b8dSLinus Walleij #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) \
35369b78b8dSLinus Walleij 	{						\
35469b78b8dSLinus Walleij 		.name = "gpio" #id,			\
35569b78b8dSLinus Walleij 		.pins = gpio##id##_pins,		\
35669b78b8dSLinus Walleij 		.npins = ARRAY_SIZE(gpio##id##_pins),	\
35769b78b8dSLinus Walleij 		.funcs = (int[]){			\
35869b78b8dSLinus Walleij 			MSM_MUX_NA, /* gpio mode */	\
35969b78b8dSLinus Walleij 			MSM_MUX_##f1,			\
36069b78b8dSLinus Walleij 			MSM_MUX_##f2,			\
36169b78b8dSLinus Walleij 			MSM_MUX_##f3,			\
36269b78b8dSLinus Walleij 			MSM_MUX_##f4,			\
36369b78b8dSLinus Walleij 			MSM_MUX_##f5,			\
36469b78b8dSLinus Walleij 			MSM_MUX_##f6,			\
36569b78b8dSLinus Walleij 			MSM_MUX_##f7,			\
36669b78b8dSLinus Walleij 			MSM_MUX_##f8,			\
36769b78b8dSLinus Walleij 			MSM_MUX_##f9,			\
36869b78b8dSLinus Walleij 			MSM_MUX_##f10,			\
36969b78b8dSLinus Walleij 			MSM_MUX_##f11			\
37069b78b8dSLinus Walleij 		},					\
37169b78b8dSLinus Walleij 		.nfuncs = 12,				\
37269b78b8dSLinus Walleij 		.ctl_reg = 0x1000 + 0x10 * id,		\
37369b78b8dSLinus Walleij 		.io_reg = 0x1004 + 0x10 * id,		\
37469b78b8dSLinus Walleij 		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
37569b78b8dSLinus Walleij 		.intr_status_reg = 0x100c + 0x10 * id,	\
37669b78b8dSLinus Walleij 		.intr_target_reg = 0x400 + 0x4 * id,	\
37769b78b8dSLinus Walleij 		.mux_bit = 2,				\
37869b78b8dSLinus Walleij 		.pull_bit = 0,				\
37969b78b8dSLinus Walleij 		.drv_bit = 6,				\
38069b78b8dSLinus Walleij 		.oe_bit = 9,				\
38169b78b8dSLinus Walleij 		.in_bit = 0,				\
38269b78b8dSLinus Walleij 		.out_bit = 1,				\
38369b78b8dSLinus Walleij 		.intr_enable_bit = 0,			\
38469b78b8dSLinus Walleij 		.intr_status_bit = 0,			\
38569b78b8dSLinus Walleij 		.intr_ack_high = 1,			\
38669b78b8dSLinus Walleij 		.intr_target_bit = 0,			\
38769b78b8dSLinus Walleij 		.intr_raw_status_bit = 3,		\
38869b78b8dSLinus Walleij 		.intr_polarity_bit = 1,			\
38969b78b8dSLinus Walleij 		.intr_detection_bit = 2,		\
39069b78b8dSLinus Walleij 		.intr_detection_width = 1,		\
39169b78b8dSLinus Walleij 	}
39269b78b8dSLinus Walleij 
39369b78b8dSLinus Walleij #define SDC_PINGROUP(pg_name, ctl, pull, drv)		\
39469b78b8dSLinus Walleij 	{						\
39569b78b8dSLinus Walleij 		.name = #pg_name,			\
39669b78b8dSLinus Walleij 		.pins = pg_name##_pins,			\
39769b78b8dSLinus Walleij 		.npins = ARRAY_SIZE(pg_name##_pins),	\
39869b78b8dSLinus Walleij 		.ctl_reg = ctl,				\
39969b78b8dSLinus Walleij 		.io_reg = 0,				\
40069b78b8dSLinus Walleij 		.intr_cfg_reg = 0,			\
40169b78b8dSLinus Walleij 		.intr_status_reg = 0,			\
40269b78b8dSLinus Walleij 		.intr_target_reg = 0,			\
40369b78b8dSLinus Walleij 		.mux_bit = -1,				\
40469b78b8dSLinus Walleij 		.pull_bit = pull,			\
40569b78b8dSLinus Walleij 		.drv_bit = drv,				\
40669b78b8dSLinus Walleij 		.oe_bit = -1,				\
40769b78b8dSLinus Walleij 		.in_bit = -1,				\
40869b78b8dSLinus Walleij 		.out_bit = -1,				\
40969b78b8dSLinus Walleij 		.intr_enable_bit = -1,			\
41069b78b8dSLinus Walleij 		.intr_status_bit = -1,			\
41169b78b8dSLinus Walleij 		.intr_target_bit = -1,			\
41269b78b8dSLinus Walleij 		.intr_raw_status_bit = -1,		\
41369b78b8dSLinus Walleij 		.intr_polarity_bit = -1,		\
41469b78b8dSLinus Walleij 		.intr_detection_bit = -1,		\
41569b78b8dSLinus Walleij 		.intr_detection_width = -1,		\
41669b78b8dSLinus Walleij 	}
41769b78b8dSLinus Walleij 
41869b78b8dSLinus Walleij enum msm8960_functions {
41969b78b8dSLinus Walleij 	MSM_MUX_audio_pcm,
42069b78b8dSLinus Walleij 	MSM_MUX_bt,
42169b78b8dSLinus Walleij 	MSM_MUX_cam_mclk0,
42269b78b8dSLinus Walleij 	MSM_MUX_cam_mclk1,
42369b78b8dSLinus Walleij 	MSM_MUX_cam_mclk2,
42469b78b8dSLinus Walleij 	MSM_MUX_codec_mic_i2s,
42569b78b8dSLinus Walleij 	MSM_MUX_codec_spkr_i2s,
42669b78b8dSLinus Walleij 	MSM_MUX_ext_gps,
42769b78b8dSLinus Walleij 	MSM_MUX_fm,
42869b78b8dSLinus Walleij 	MSM_MUX_gps_blanking,
42969b78b8dSLinus Walleij 	MSM_MUX_gps_pps_in,
43069b78b8dSLinus Walleij 	MSM_MUX_gps_pps_out,
43169b78b8dSLinus Walleij 	MSM_MUX_gp_clk_0a,
43269b78b8dSLinus Walleij 	MSM_MUX_gp_clk_0b,
43369b78b8dSLinus Walleij 	MSM_MUX_gp_clk_1a,
43469b78b8dSLinus Walleij 	MSM_MUX_gp_clk_1b,
43569b78b8dSLinus Walleij 	MSM_MUX_gp_clk_2a,
43669b78b8dSLinus Walleij 	MSM_MUX_gp_clk_2b,
43769b78b8dSLinus Walleij 	MSM_MUX_gp_mn,
43869b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_0a,
43969b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_0b,
44069b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_1a,
44169b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_1b,
44269b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_2a,
44369b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_2b,
44469b78b8dSLinus Walleij 	MSM_MUX_gsbi1,
44569b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs1_n,
44669b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs2a_n,
44769b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs2b_n,
44869b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs3_n,
44969b78b8dSLinus Walleij 	MSM_MUX_gsbi2,
45069b78b8dSLinus Walleij 	MSM_MUX_gsbi2_spi_cs1_n,
45169b78b8dSLinus Walleij 	MSM_MUX_gsbi2_spi_cs2_n,
45269b78b8dSLinus Walleij 	MSM_MUX_gsbi2_spi_cs3_n,
45369b78b8dSLinus Walleij 	MSM_MUX_gsbi3,
45469b78b8dSLinus Walleij 	MSM_MUX_gsbi4,
45569b78b8dSLinus Walleij 	MSM_MUX_gsbi4_3d_cam_i2c_l,
45669b78b8dSLinus Walleij 	MSM_MUX_gsbi4_3d_cam_i2c_r,
45769b78b8dSLinus Walleij 	MSM_MUX_gsbi5,
45869b78b8dSLinus Walleij 	MSM_MUX_gsbi5_3d_cam_i2c_l,
45969b78b8dSLinus Walleij 	MSM_MUX_gsbi5_3d_cam_i2c_r,
46069b78b8dSLinus Walleij 	MSM_MUX_gsbi6,
46169b78b8dSLinus Walleij 	MSM_MUX_gsbi7,
46269b78b8dSLinus Walleij 	MSM_MUX_gsbi8,
46369b78b8dSLinus Walleij 	MSM_MUX_gsbi9,
46469b78b8dSLinus Walleij 	MSM_MUX_gsbi10,
46569b78b8dSLinus Walleij 	MSM_MUX_gsbi11,
46669b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs1a_n,
46769b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs1b_n,
46869b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs2a_n,
46969b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs2b_n,
47069b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs3_n,
47169b78b8dSLinus Walleij 	MSM_MUX_gsbi12,
47269b78b8dSLinus Walleij 	MSM_MUX_hdmi_cec,
47369b78b8dSLinus Walleij 	MSM_MUX_hdmi_ddc_clock,
47469b78b8dSLinus Walleij 	MSM_MUX_hdmi_ddc_data,
47569b78b8dSLinus Walleij 	MSM_MUX_hdmi_hot_plug_detect,
47669b78b8dSLinus Walleij 	MSM_MUX_hsic,
47769b78b8dSLinus Walleij 	MSM_MUX_mdp_vsync,
47869b78b8dSLinus Walleij 	MSM_MUX_mi2s,
47969b78b8dSLinus Walleij 	MSM_MUX_mic_i2s,
48069b78b8dSLinus Walleij 	MSM_MUX_pmb_clk,
48169b78b8dSLinus Walleij 	MSM_MUX_pmb_ext_ctrl,
48269b78b8dSLinus Walleij 	MSM_MUX_ps_hold,
48369b78b8dSLinus Walleij 	MSM_MUX_rpm_wdog,
48469b78b8dSLinus Walleij 	MSM_MUX_sdc2,
48569b78b8dSLinus Walleij 	MSM_MUX_sdc4,
48669b78b8dSLinus Walleij 	MSM_MUX_sdc5,
48769b78b8dSLinus Walleij 	MSM_MUX_slimbus1,
48869b78b8dSLinus Walleij 	MSM_MUX_slimbus2,
48969b78b8dSLinus Walleij 	MSM_MUX_spkr_i2s,
49069b78b8dSLinus Walleij 	MSM_MUX_ssbi1,
49169b78b8dSLinus Walleij 	MSM_MUX_ssbi2,
49269b78b8dSLinus Walleij 	MSM_MUX_ssbi_ext_gps,
49369b78b8dSLinus Walleij 	MSM_MUX_ssbi_pmic2,
49469b78b8dSLinus Walleij 	MSM_MUX_ssbi_qpa1,
49569b78b8dSLinus Walleij 	MSM_MUX_ssbi_ts,
49669b78b8dSLinus Walleij 	MSM_MUX_tsif1,
49769b78b8dSLinus Walleij 	MSM_MUX_tsif2,
49869b78b8dSLinus Walleij 	MSM_MUX_ts_eoc,
49969b78b8dSLinus Walleij 	MSM_MUX_usb_fs1,
50069b78b8dSLinus Walleij 	MSM_MUX_usb_fs1_oe,
50169b78b8dSLinus Walleij 	MSM_MUX_usb_fs1_oe_n,
50269b78b8dSLinus Walleij 	MSM_MUX_usb_fs2,
50369b78b8dSLinus Walleij 	MSM_MUX_usb_fs2_oe,
50469b78b8dSLinus Walleij 	MSM_MUX_usb_fs2_oe_n,
50569b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer1_a,
50669b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer1_b,
50769b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer2,
50869b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer3_a,
50969b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer3_b,
51069b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer4_a,
51169b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer4_b,
51269b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer4_c,
51369b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer5_a,
51469b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer5_b,
51569b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer6_a,
51669b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer6_b,
51769b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer6_c,
51869b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer7_a,
51969b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer7_b,
52069b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer7_c,
52169b78b8dSLinus Walleij 	MSM_MUX_wlan,
52269b78b8dSLinus Walleij 	MSM_MUX_NA,
52369b78b8dSLinus Walleij };
52469b78b8dSLinus Walleij 
52569b78b8dSLinus Walleij static const char * const audio_pcm_groups[] = {
52669b78b8dSLinus Walleij 	"gpio63", "gpio64", "gpio65", "gpio66"
52769b78b8dSLinus Walleij };
52869b78b8dSLinus Walleij 
52969b78b8dSLinus Walleij static const char * const bt_groups[] = {
53069b78b8dSLinus Walleij 	"gpio28", "gpio29", "gpio83"
53169b78b8dSLinus Walleij };
53269b78b8dSLinus Walleij 
53369b78b8dSLinus Walleij static const char * const cam_mclk0_groups[] = {
53469b78b8dSLinus Walleij 	"gpio5"
53569b78b8dSLinus Walleij };
53669b78b8dSLinus Walleij 
53769b78b8dSLinus Walleij static const char * const cam_mclk1_groups[] = {
53869b78b8dSLinus Walleij 	"gpio4"
53969b78b8dSLinus Walleij };
54069b78b8dSLinus Walleij 
54169b78b8dSLinus Walleij static const char * const cam_mclk2_groups[] = {
54269b78b8dSLinus Walleij 	"gpio2"
54369b78b8dSLinus Walleij };
54469b78b8dSLinus Walleij 
54569b78b8dSLinus Walleij static const char * const codec_mic_i2s_groups[] = {
54669b78b8dSLinus Walleij 	"gpio54", "gpio55", "gpio56", "gpio57", "gpio58"
54769b78b8dSLinus Walleij };
54869b78b8dSLinus Walleij 
54969b78b8dSLinus Walleij static const char * const codec_spkr_i2s_groups[] = {
55069b78b8dSLinus Walleij 	"gpio59", "gpio60", "gpio61", "gpio62"
55169b78b8dSLinus Walleij };
55269b78b8dSLinus Walleij 
55369b78b8dSLinus Walleij static const char * const ext_gps_groups[] = {
55469b78b8dSLinus Walleij 	"gpio22", "gpio23", "gpio24", "gpio25"
55569b78b8dSLinus Walleij };
55669b78b8dSLinus Walleij 
55769b78b8dSLinus Walleij static const char * const fm_groups[] = {
55869b78b8dSLinus Walleij 	"gpio26", "gpio27"
55969b78b8dSLinus Walleij };
56069b78b8dSLinus Walleij 
56169b78b8dSLinus Walleij static const char * const gps_blanking_groups[] = {
56269b78b8dSLinus Walleij 	"gpio137"
56369b78b8dSLinus Walleij };
56469b78b8dSLinus Walleij 
56569b78b8dSLinus Walleij static const char * const gps_pps_in_groups[] = {
56669b78b8dSLinus Walleij 	"gpio37"
56769b78b8dSLinus Walleij };
56869b78b8dSLinus Walleij 
56969b78b8dSLinus Walleij static const char * const gps_pps_out_groups[] = {
57069b78b8dSLinus Walleij 	"gpio37"
57169b78b8dSLinus Walleij };
57269b78b8dSLinus Walleij 
57369b78b8dSLinus Walleij static const char * const gp_clk_0a_groups[] = {
57469b78b8dSLinus Walleij 	"gpio3"
57569b78b8dSLinus Walleij };
57669b78b8dSLinus Walleij 
57769b78b8dSLinus Walleij static const char * const gp_clk_0b_groups[] = {
57869b78b8dSLinus Walleij 	"gpio54"
57969b78b8dSLinus Walleij };
58069b78b8dSLinus Walleij 
58169b78b8dSLinus Walleij static const char * const gp_clk_1a_groups[] = {
58269b78b8dSLinus Walleij 	"gpio4"
58369b78b8dSLinus Walleij };
58469b78b8dSLinus Walleij 
58569b78b8dSLinus Walleij static const char * const gp_clk_1b_groups[] = {
58669b78b8dSLinus Walleij 	"gpio70"
58769b78b8dSLinus Walleij };
58869b78b8dSLinus Walleij 
58969b78b8dSLinus Walleij static const char * const gp_clk_2a_groups[] = {
59069b78b8dSLinus Walleij 	"gpio52"
59169b78b8dSLinus Walleij };
59269b78b8dSLinus Walleij 
59369b78b8dSLinus Walleij static const char * const gp_clk_2b_groups[] = {
59469b78b8dSLinus Walleij 	"gpio37"
59569b78b8dSLinus Walleij };
59669b78b8dSLinus Walleij 
59769b78b8dSLinus Walleij static const char * const gp_mn_groups[] = {
59869b78b8dSLinus Walleij 	"gpio2"
59969b78b8dSLinus Walleij };
60069b78b8dSLinus Walleij 
60169b78b8dSLinus Walleij static const char * const gp_pdm_0a_groups[] = {
60269b78b8dSLinus Walleij 	"gpio58"
60369b78b8dSLinus Walleij };
60469b78b8dSLinus Walleij 
60569b78b8dSLinus Walleij static const char * const gp_pdm_0b_groups[] = {
60669b78b8dSLinus Walleij 	"gpio39"
60769b78b8dSLinus Walleij };
60869b78b8dSLinus Walleij 
60969b78b8dSLinus Walleij static const char * const gp_pdm_1a_groups[] = {
61069b78b8dSLinus Walleij 	"gpio94"
61169b78b8dSLinus Walleij };
61269b78b8dSLinus Walleij 
61369b78b8dSLinus Walleij static const char * const gp_pdm_1b_groups[] = {
61469b78b8dSLinus Walleij 	"gpio64"
61569b78b8dSLinus Walleij };
61669b78b8dSLinus Walleij 
61769b78b8dSLinus Walleij static const char * const gp_pdm_2a_groups[] = {
61869b78b8dSLinus Walleij 	"gpio69"
61969b78b8dSLinus Walleij };
62069b78b8dSLinus Walleij 
62169b78b8dSLinus Walleij static const char * const gp_pdm_2b_groups[] = {
62269b78b8dSLinus Walleij 	"gpio53"
62369b78b8dSLinus Walleij };
62469b78b8dSLinus Walleij 
62569b78b8dSLinus Walleij static const char * const gsbi1_groups[] = {
62669b78b8dSLinus Walleij 	"gpio6", "gpio7", "gpio8", "gpio9"
62769b78b8dSLinus Walleij };
62869b78b8dSLinus Walleij 
62969b78b8dSLinus Walleij static const char * const gsbi1_spi_cs1_n_groups[] = {
63069b78b8dSLinus Walleij 	"gpio14"
63169b78b8dSLinus Walleij };
63269b78b8dSLinus Walleij 
63369b78b8dSLinus Walleij static const char * const gsbi1_spi_cs2a_n_groups[] = {
63469b78b8dSLinus Walleij 	"gpio15"
63569b78b8dSLinus Walleij };
63669b78b8dSLinus Walleij 
63769b78b8dSLinus Walleij static const char * const gsbi1_spi_cs2b_n_groups[] = {
63869b78b8dSLinus Walleij 	"gpio17"
63969b78b8dSLinus Walleij };
64069b78b8dSLinus Walleij 
64169b78b8dSLinus Walleij static const char * const gsbi1_spi_cs3_n_groups[] = {
64269b78b8dSLinus Walleij 	"gpio16"
64369b78b8dSLinus Walleij };
64469b78b8dSLinus Walleij 
64569b78b8dSLinus Walleij static const char * const gsbi2_groups[] = {
64669b78b8dSLinus Walleij 	"gpio10", "gpio11", "gpio12", "gpio13"
64769b78b8dSLinus Walleij };
64869b78b8dSLinus Walleij 
64969b78b8dSLinus Walleij static const char * const gsbi2_spi_cs1_n_groups[] = {
65069b78b8dSLinus Walleij 	"gpio52"
65169b78b8dSLinus Walleij };
65269b78b8dSLinus Walleij 
65369b78b8dSLinus Walleij static const char * const gsbi2_spi_cs2_n_groups[] = {
65469b78b8dSLinus Walleij 	"gpio68"
65569b78b8dSLinus Walleij };
65669b78b8dSLinus Walleij 
65769b78b8dSLinus Walleij static const char * const gsbi2_spi_cs3_n_groups[] = {
65869b78b8dSLinus Walleij 	"gpio56"
65969b78b8dSLinus Walleij };
66069b78b8dSLinus Walleij 
66169b78b8dSLinus Walleij static const char * const gsbi3_groups[] = {
66269b78b8dSLinus Walleij 	"gpio14", "gpio15", "gpio16", "gpio17"
66369b78b8dSLinus Walleij };
66469b78b8dSLinus Walleij 
66569b78b8dSLinus Walleij static const char * const gsbi4_groups[] = {
66669b78b8dSLinus Walleij 	"gpio18", "gpio19", "gpio20", "gpio21"
66769b78b8dSLinus Walleij };
66869b78b8dSLinus Walleij 
66969b78b8dSLinus Walleij static const char * const gsbi4_3d_cam_i2c_l_groups[] = {
67069b78b8dSLinus Walleij 	"gpio18", "gpio19"
67169b78b8dSLinus Walleij };
67269b78b8dSLinus Walleij 
67369b78b8dSLinus Walleij static const char * const gsbi4_3d_cam_i2c_r_groups[] = {
67469b78b8dSLinus Walleij 	"gpio20", "gpio21"
67569b78b8dSLinus Walleij };
67669b78b8dSLinus Walleij 
67769b78b8dSLinus Walleij static const char * const gsbi5_groups[] = {
67869b78b8dSLinus Walleij 	"gpio22", "gpio23", "gpio24", "gpio25"
67969b78b8dSLinus Walleij };
68069b78b8dSLinus Walleij 
68169b78b8dSLinus Walleij static const char * const gsbi5_3d_cam_i2c_l_groups[] = {
68269b78b8dSLinus Walleij 	"gpio22", "gpio23"
68369b78b8dSLinus Walleij };
68469b78b8dSLinus Walleij 
68569b78b8dSLinus Walleij static const char * const gsbi5_3d_cam_i2c_r_groups[] = {
68669b78b8dSLinus Walleij 	"gpio24", "gpio25"
68769b78b8dSLinus Walleij };
68869b78b8dSLinus Walleij 
68969b78b8dSLinus Walleij static const char * const gsbi6_groups[] = {
69069b78b8dSLinus Walleij 	"gpio26", "gpio27", "gpio28", "gpio29"
69169b78b8dSLinus Walleij };
69269b78b8dSLinus Walleij 
69369b78b8dSLinus Walleij static const char * const gsbi7_groups[] = {
69469b78b8dSLinus Walleij 	"gpio30", "gpio31", "gpio32", "gpio33"
69569b78b8dSLinus Walleij };
69669b78b8dSLinus Walleij 
69769b78b8dSLinus Walleij static const char * const gsbi8_groups[] = {
69869b78b8dSLinus Walleij 	"gpio34", "gpio35", "gpio36", "gpio37"
69969b78b8dSLinus Walleij };
70069b78b8dSLinus Walleij 
70169b78b8dSLinus Walleij static const char * const gsbi9_groups[] = {
70269b78b8dSLinus Walleij 	"gpio93", "gpio94", "gpio95", "gpio96"
70369b78b8dSLinus Walleij };
70469b78b8dSLinus Walleij 
70569b78b8dSLinus Walleij static const char * const gsbi10_groups[] = {
70669b78b8dSLinus Walleij 	"gpio71", "gpio72", "gpio73", "gpio74"
70769b78b8dSLinus Walleij };
70869b78b8dSLinus Walleij 
70969b78b8dSLinus Walleij static const char * const gsbi11_groups[] = {
71069b78b8dSLinus Walleij 	"gpio38", "gpio39", "gpio40", "gpio41"
71169b78b8dSLinus Walleij };
71269b78b8dSLinus Walleij 
71369b78b8dSLinus Walleij static const char * const gsbi11_spi_cs1a_n_groups[] = {
71469b78b8dSLinus Walleij 	"gpio36"
71569b78b8dSLinus Walleij };
71669b78b8dSLinus Walleij 
71769b78b8dSLinus Walleij static const char * const gsbi11_spi_cs1b_n_groups[] = {
71869b78b8dSLinus Walleij 	"gpio18"
71969b78b8dSLinus Walleij };
72069b78b8dSLinus Walleij 
72169b78b8dSLinus Walleij static const char * const gsbi11_spi_cs2a_n_groups[] = {
72269b78b8dSLinus Walleij 	"gpio37"
72369b78b8dSLinus Walleij };
72469b78b8dSLinus Walleij 
72569b78b8dSLinus Walleij static const char * const gsbi11_spi_cs2b_n_groups[] = {
72669b78b8dSLinus Walleij 	"gpio19"
72769b78b8dSLinus Walleij };
72869b78b8dSLinus Walleij 
72969b78b8dSLinus Walleij static const char * const gsbi11_spi_cs3_n_groups[] = {
73069b78b8dSLinus Walleij 	"gpio76"
73169b78b8dSLinus Walleij };
73269b78b8dSLinus Walleij 
73369b78b8dSLinus Walleij static const char * const gsbi12_groups[] = {
73469b78b8dSLinus Walleij 	"gpio42", "gpio43", "gpio44", "gpio45"
73569b78b8dSLinus Walleij };
73669b78b8dSLinus Walleij 
73769b78b8dSLinus Walleij static const char * const hdmi_cec_groups[] = {
73869b78b8dSLinus Walleij 	"gpio99"
73969b78b8dSLinus Walleij };
74069b78b8dSLinus Walleij 
74169b78b8dSLinus Walleij static const char * const hdmi_ddc_clock_groups[] = {
74269b78b8dSLinus Walleij 	"gpio100"
74369b78b8dSLinus Walleij };
74469b78b8dSLinus Walleij 
74569b78b8dSLinus Walleij static const char * const hdmi_ddc_data_groups[] = {
74669b78b8dSLinus Walleij 	"gpio101"
74769b78b8dSLinus Walleij };
74869b78b8dSLinus Walleij 
74969b78b8dSLinus Walleij static const char * const hdmi_hot_plug_detect_groups[] = {
75069b78b8dSLinus Walleij 	"gpio102"
75169b78b8dSLinus Walleij };
75269b78b8dSLinus Walleij 
75369b78b8dSLinus Walleij static const char * const hsic_groups[] = {
75469b78b8dSLinus Walleij 	"gpio150", "gpio151"
75569b78b8dSLinus Walleij };
75669b78b8dSLinus Walleij 
75769b78b8dSLinus Walleij static const char * const mdp_vsync_groups[] = {
75869b78b8dSLinus Walleij 	"gpio0", "gpio1", "gpio19"
75969b78b8dSLinus Walleij };
76069b78b8dSLinus Walleij 
76169b78b8dSLinus Walleij static const char * const mi2s_groups[] = {
76269b78b8dSLinus Walleij 	"gpio47", "gpio48", "gpio49", "gpio50", "gpio51", "gpio52", "gpio53"
76369b78b8dSLinus Walleij };
76469b78b8dSLinus Walleij 
76569b78b8dSLinus Walleij static const char * const mic_i2s_groups[] = {
76669b78b8dSLinus Walleij 	"gpio71", "gpio72", "gpio73", "gpio74"
76769b78b8dSLinus Walleij };
76869b78b8dSLinus Walleij 
76969b78b8dSLinus Walleij static const char * const pmb_clk_groups[] = {
77069b78b8dSLinus Walleij 	"gpio21", "gpio86", "gpio112"
77169b78b8dSLinus Walleij };
77269b78b8dSLinus Walleij 
77369b78b8dSLinus Walleij static const char * const pmb_ext_ctrl_groups[] = {
77469b78b8dSLinus Walleij 	"gpio4", "gpio5"
77569b78b8dSLinus Walleij };
77669b78b8dSLinus Walleij 
77769b78b8dSLinus Walleij static const char * const ps_hold_groups[] = {
77869b78b8dSLinus Walleij 	"gpio108"
77969b78b8dSLinus Walleij };
78069b78b8dSLinus Walleij 
78169b78b8dSLinus Walleij static const char * const rpm_wdog_groups[] = {
78269b78b8dSLinus Walleij 	"gpio12"
78369b78b8dSLinus Walleij };
78469b78b8dSLinus Walleij 
78569b78b8dSLinus Walleij static const char * const sdc2_groups[] = {
78669b78b8dSLinus Walleij 	"gpio89", "gpio90", "gpio91", "gpio92", "gpio93", "gpio94", "gpio95",
78769b78b8dSLinus Walleij 	"gpio96", "gpio97", "gpio98"
78869b78b8dSLinus Walleij };
78969b78b8dSLinus Walleij 
79069b78b8dSLinus Walleij static const char * const sdc4_groups[] = {
79169b78b8dSLinus Walleij 	"gpio83", "gpio84", "gpio85", "gpio86", "gpio87", "gpio88"
79269b78b8dSLinus Walleij };
79369b78b8dSLinus Walleij 
79469b78b8dSLinus Walleij static const char * const sdc5_groups[] = {
79569b78b8dSLinus Walleij 	"gpio77", "gpio78", "gpio79", "gpio80", "gpio81", "gpio82"
79669b78b8dSLinus Walleij };
79769b78b8dSLinus Walleij 
79869b78b8dSLinus Walleij static const char * const slimbus1_groups[] = {
79969b78b8dSLinus Walleij 	"gpio50", "gpio51", "gpio60", "gpio61"
80069b78b8dSLinus Walleij };
80169b78b8dSLinus Walleij 
80269b78b8dSLinus Walleij static const char * const slimbus2_groups[] = {
80369b78b8dSLinus Walleij 	"gpio42", "gpio43"
80469b78b8dSLinus Walleij };
80569b78b8dSLinus Walleij 
80669b78b8dSLinus Walleij static const char * const spkr_i2s_groups[] = {
80769b78b8dSLinus Walleij 	"gpio67", "gpio68", "gpio69", "gpio70"
80869b78b8dSLinus Walleij };
80969b78b8dSLinus Walleij 
81069b78b8dSLinus Walleij static const char * const ssbi1_groups[] = {
81169b78b8dSLinus Walleij 	"gpio141", "gpio143"
81269b78b8dSLinus Walleij };
81369b78b8dSLinus Walleij 
81469b78b8dSLinus Walleij static const char * const ssbi2_groups[] = {
81569b78b8dSLinus Walleij 	"gpio140", "gpio142"
81669b78b8dSLinus Walleij };
81769b78b8dSLinus Walleij 
81869b78b8dSLinus Walleij static const char * const ssbi_ext_gps_groups[] = {
81969b78b8dSLinus Walleij 	"gpio23"
82069b78b8dSLinus Walleij };
82169b78b8dSLinus Walleij 
82269b78b8dSLinus Walleij static const char * const ssbi_pmic2_groups[] = {
82369b78b8dSLinus Walleij 	"gpio149"
82469b78b8dSLinus Walleij };
82569b78b8dSLinus Walleij 
82669b78b8dSLinus Walleij static const char * const ssbi_qpa1_groups[] = {
82769b78b8dSLinus Walleij 	"gpio131"
82869b78b8dSLinus Walleij };
82969b78b8dSLinus Walleij 
83069b78b8dSLinus Walleij static const char * const ssbi_ts_groups[] = {
83169b78b8dSLinus Walleij 	"gpio10"
83269b78b8dSLinus Walleij };
83369b78b8dSLinus Walleij 
83469b78b8dSLinus Walleij static const char * const tsif1_groups[] = {
83569b78b8dSLinus Walleij 	"gpio75", "gpio76", "gpio77", "gpio82"
83669b78b8dSLinus Walleij };
83769b78b8dSLinus Walleij 
83869b78b8dSLinus Walleij static const char * const tsif2_groups[] = {
83969b78b8dSLinus Walleij 	"gpio78", "gpio79", "gpio80", "gpio81"
84069b78b8dSLinus Walleij };
84169b78b8dSLinus Walleij 
84269b78b8dSLinus Walleij static const char * const ts_eoc_groups[] = {
84369b78b8dSLinus Walleij 	"gpio11"
84469b78b8dSLinus Walleij };
84569b78b8dSLinus Walleij 
84669b78b8dSLinus Walleij static const char * const usb_fs1_groups[] = {
84769b78b8dSLinus Walleij 	"gpio32", "gpio33"
84869b78b8dSLinus Walleij };
84969b78b8dSLinus Walleij 
85069b78b8dSLinus Walleij static const char * const usb_fs1_oe_groups[] = {
85169b78b8dSLinus Walleij 	"gpio31"
85269b78b8dSLinus Walleij };
85369b78b8dSLinus Walleij 
85469b78b8dSLinus Walleij static const char * const usb_fs1_oe_n_groups[] = {
85569b78b8dSLinus Walleij 	"gpio31"
85669b78b8dSLinus Walleij };
85769b78b8dSLinus Walleij 
85869b78b8dSLinus Walleij static const char * const usb_fs2_groups[] = {
85969b78b8dSLinus Walleij 	"gpio34", "gpio35"
86069b78b8dSLinus Walleij };
86169b78b8dSLinus Walleij 
86269b78b8dSLinus Walleij static const char * const usb_fs2_oe_groups[] = {
86369b78b8dSLinus Walleij 	"gpio36"
86469b78b8dSLinus Walleij };
86569b78b8dSLinus Walleij 
86669b78b8dSLinus Walleij static const char * const usb_fs2_oe_n_groups[] = {
86769b78b8dSLinus Walleij 	"gpio36"
86869b78b8dSLinus Walleij };
86969b78b8dSLinus Walleij 
87069b78b8dSLinus Walleij static const char * const vfe_camif_timer1_a_groups[] = {
87169b78b8dSLinus Walleij 	"gpio2"
87269b78b8dSLinus Walleij };
87369b78b8dSLinus Walleij 
87469b78b8dSLinus Walleij static const char * const vfe_camif_timer1_b_groups[] = {
87569b78b8dSLinus Walleij 	"gpio38"
87669b78b8dSLinus Walleij };
87769b78b8dSLinus Walleij 
87869b78b8dSLinus Walleij static const char * const vfe_camif_timer2_groups[] = {
87969b78b8dSLinus Walleij 	"gpio3"
88069b78b8dSLinus Walleij };
88169b78b8dSLinus Walleij 
88269b78b8dSLinus Walleij static const char * const vfe_camif_timer3_a_groups[] = {
88369b78b8dSLinus Walleij 	"gpio4"
88469b78b8dSLinus Walleij };
88569b78b8dSLinus Walleij 
88669b78b8dSLinus Walleij static const char * const vfe_camif_timer3_b_groups[] = {
88769b78b8dSLinus Walleij 	"gpio151"
88869b78b8dSLinus Walleij };
88969b78b8dSLinus Walleij 
89069b78b8dSLinus Walleij static const char * const vfe_camif_timer4_a_groups[] = {
89169b78b8dSLinus Walleij 	"gpio65"
89269b78b8dSLinus Walleij };
89369b78b8dSLinus Walleij 
89469b78b8dSLinus Walleij static const char * const vfe_camif_timer4_b_groups[] = {
89569b78b8dSLinus Walleij 	"gpio150"
89669b78b8dSLinus Walleij };
89769b78b8dSLinus Walleij 
89869b78b8dSLinus Walleij static const char * const vfe_camif_timer4_c_groups[] = {
89969b78b8dSLinus Walleij 	"gpio10"
90069b78b8dSLinus Walleij };
90169b78b8dSLinus Walleij 
90269b78b8dSLinus Walleij static const char * const vfe_camif_timer5_a_groups[] = {
90369b78b8dSLinus Walleij 	"gpio66"
90469b78b8dSLinus Walleij };
90569b78b8dSLinus Walleij 
90669b78b8dSLinus Walleij static const char * const vfe_camif_timer5_b_groups[] = {
90769b78b8dSLinus Walleij 	"gpio39"
90869b78b8dSLinus Walleij };
90969b78b8dSLinus Walleij 
91069b78b8dSLinus Walleij static const char * const vfe_camif_timer6_a_groups[] = {
91169b78b8dSLinus Walleij 	"gpio71"
91269b78b8dSLinus Walleij };
91369b78b8dSLinus Walleij 
91469b78b8dSLinus Walleij static const char * const vfe_camif_timer6_b_groups[] = {
91569b78b8dSLinus Walleij 	"gpio0"
91669b78b8dSLinus Walleij };
91769b78b8dSLinus Walleij 
91869b78b8dSLinus Walleij static const char * const vfe_camif_timer6_c_groups[] = {
91969b78b8dSLinus Walleij 	"gpio18"
92069b78b8dSLinus Walleij };
92169b78b8dSLinus Walleij 
92269b78b8dSLinus Walleij static const char * const vfe_camif_timer7_a_groups[] = {
92369b78b8dSLinus Walleij 	"gpio67"
92469b78b8dSLinus Walleij };
92569b78b8dSLinus Walleij 
92669b78b8dSLinus Walleij static const char * const vfe_camif_timer7_b_groups[] = {
92769b78b8dSLinus Walleij 	"gpio1"
92869b78b8dSLinus Walleij };
92969b78b8dSLinus Walleij 
93069b78b8dSLinus Walleij static const char * const vfe_camif_timer7_c_groups[] = {
93169b78b8dSLinus Walleij 	"gpio19"
93269b78b8dSLinus Walleij };
93369b78b8dSLinus Walleij 
93469b78b8dSLinus Walleij static const char * const wlan_groups[] = {
93569b78b8dSLinus Walleij 	"gpio84", "gpio85", "gpio86", "gpio87", "gpio88"
93669b78b8dSLinus Walleij };
93769b78b8dSLinus Walleij 
93869b78b8dSLinus Walleij static const struct msm_function msm8960_functions[] = {
93969b78b8dSLinus Walleij 	FUNCTION(audio_pcm),
94069b78b8dSLinus Walleij 	FUNCTION(bt),
94169b78b8dSLinus Walleij 	FUNCTION(cam_mclk0),
94269b78b8dSLinus Walleij 	FUNCTION(cam_mclk1),
94369b78b8dSLinus Walleij 	FUNCTION(cam_mclk2),
94469b78b8dSLinus Walleij 	FUNCTION(codec_mic_i2s),
94569b78b8dSLinus Walleij 	FUNCTION(codec_spkr_i2s),
94669b78b8dSLinus Walleij 	FUNCTION(ext_gps),
94769b78b8dSLinus Walleij 	FUNCTION(fm),
94869b78b8dSLinus Walleij 	FUNCTION(gps_blanking),
94969b78b8dSLinus Walleij 	FUNCTION(gps_pps_in),
95069b78b8dSLinus Walleij 	FUNCTION(gps_pps_out),
95169b78b8dSLinus Walleij 	FUNCTION(gp_clk_0a),
95269b78b8dSLinus Walleij 	FUNCTION(gp_clk_0b),
95369b78b8dSLinus Walleij 	FUNCTION(gp_clk_1a),
95469b78b8dSLinus Walleij 	FUNCTION(gp_clk_1b),
95569b78b8dSLinus Walleij 	FUNCTION(gp_clk_2a),
95669b78b8dSLinus Walleij 	FUNCTION(gp_clk_2b),
95769b78b8dSLinus Walleij 	FUNCTION(gp_mn),
95869b78b8dSLinus Walleij 	FUNCTION(gp_pdm_0a),
95969b78b8dSLinus Walleij 	FUNCTION(gp_pdm_0b),
96069b78b8dSLinus Walleij 	FUNCTION(gp_pdm_1a),
96169b78b8dSLinus Walleij 	FUNCTION(gp_pdm_1b),
96269b78b8dSLinus Walleij 	FUNCTION(gp_pdm_2a),
96369b78b8dSLinus Walleij 	FUNCTION(gp_pdm_2b),
96469b78b8dSLinus Walleij 	FUNCTION(gsbi1),
96569b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs1_n),
96669b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs2a_n),
96769b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs2b_n),
96869b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs3_n),
96969b78b8dSLinus Walleij 	FUNCTION(gsbi2),
97069b78b8dSLinus Walleij 	FUNCTION(gsbi2_spi_cs1_n),
97169b78b8dSLinus Walleij 	FUNCTION(gsbi2_spi_cs2_n),
97269b78b8dSLinus Walleij 	FUNCTION(gsbi2_spi_cs3_n),
97369b78b8dSLinus Walleij 	FUNCTION(gsbi3),
97469b78b8dSLinus Walleij 	FUNCTION(gsbi4),
97569b78b8dSLinus Walleij 	FUNCTION(gsbi4_3d_cam_i2c_l),
97669b78b8dSLinus Walleij 	FUNCTION(gsbi4_3d_cam_i2c_r),
97769b78b8dSLinus Walleij 	FUNCTION(gsbi5),
97869b78b8dSLinus Walleij 	FUNCTION(gsbi5_3d_cam_i2c_l),
97969b78b8dSLinus Walleij 	FUNCTION(gsbi5_3d_cam_i2c_r),
98069b78b8dSLinus Walleij 	FUNCTION(gsbi6),
98169b78b8dSLinus Walleij 	FUNCTION(gsbi7),
98269b78b8dSLinus Walleij 	FUNCTION(gsbi8),
98369b78b8dSLinus Walleij 	FUNCTION(gsbi9),
98469b78b8dSLinus Walleij 	FUNCTION(gsbi10),
98569b78b8dSLinus Walleij 	FUNCTION(gsbi11),
98669b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs1a_n),
98769b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs1b_n),
98869b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs2a_n),
98969b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs2b_n),
99069b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs3_n),
99169b78b8dSLinus Walleij 	FUNCTION(gsbi12),
99269b78b8dSLinus Walleij 	FUNCTION(hdmi_cec),
99369b78b8dSLinus Walleij 	FUNCTION(hdmi_ddc_clock),
99469b78b8dSLinus Walleij 	FUNCTION(hdmi_ddc_data),
99569b78b8dSLinus Walleij 	FUNCTION(hdmi_hot_plug_detect),
99669b78b8dSLinus Walleij 	FUNCTION(hsic),
99769b78b8dSLinus Walleij 	FUNCTION(mdp_vsync),
99869b78b8dSLinus Walleij 	FUNCTION(mi2s),
99969b78b8dSLinus Walleij 	FUNCTION(mic_i2s),
100069b78b8dSLinus Walleij 	FUNCTION(pmb_clk),
100169b78b8dSLinus Walleij 	FUNCTION(pmb_ext_ctrl),
100269b78b8dSLinus Walleij 	FUNCTION(ps_hold),
100369b78b8dSLinus Walleij 	FUNCTION(rpm_wdog),
100469b78b8dSLinus Walleij 	FUNCTION(sdc2),
100569b78b8dSLinus Walleij 	FUNCTION(sdc4),
100669b78b8dSLinus Walleij 	FUNCTION(sdc5),
100769b78b8dSLinus Walleij 	FUNCTION(slimbus1),
100869b78b8dSLinus Walleij 	FUNCTION(slimbus2),
100969b78b8dSLinus Walleij 	FUNCTION(spkr_i2s),
101069b78b8dSLinus Walleij 	FUNCTION(ssbi1),
101169b78b8dSLinus Walleij 	FUNCTION(ssbi2),
101269b78b8dSLinus Walleij 	FUNCTION(ssbi_ext_gps),
101369b78b8dSLinus Walleij 	FUNCTION(ssbi_pmic2),
101469b78b8dSLinus Walleij 	FUNCTION(ssbi_qpa1),
101569b78b8dSLinus Walleij 	FUNCTION(ssbi_ts),
101669b78b8dSLinus Walleij 	FUNCTION(tsif1),
101769b78b8dSLinus Walleij 	FUNCTION(tsif2),
101869b78b8dSLinus Walleij 	FUNCTION(ts_eoc),
101969b78b8dSLinus Walleij 	FUNCTION(usb_fs1),
102069b78b8dSLinus Walleij 	FUNCTION(usb_fs1_oe),
102169b78b8dSLinus Walleij 	FUNCTION(usb_fs1_oe_n),
102269b78b8dSLinus Walleij 	FUNCTION(usb_fs2),
102369b78b8dSLinus Walleij 	FUNCTION(usb_fs2_oe),
102469b78b8dSLinus Walleij 	FUNCTION(usb_fs2_oe_n),
102569b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer1_a),
102669b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer1_b),
102769b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer2),
102869b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer3_a),
102969b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer3_b),
103069b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer4_a),
103169b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer4_b),
103269b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer4_c),
103369b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer5_a),
103469b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer5_b),
103569b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer6_a),
103669b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer6_b),
103769b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer6_c),
103869b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer7_a),
103969b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer7_b),
104069b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer7_c),
104169b78b8dSLinus Walleij 	FUNCTION(wlan),
104269b78b8dSLinus Walleij };
104369b78b8dSLinus Walleij 
104469b78b8dSLinus Walleij static const struct msm_pingroup msm8960_groups[] = {
104569b78b8dSLinus Walleij 	PINGROUP(0, mdp_vsync, vfe_camif_timer6_b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
104669b78b8dSLinus Walleij 	PINGROUP(1, mdp_vsync, vfe_camif_timer7_b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
104769b78b8dSLinus Walleij 	PINGROUP(2, vfe_camif_timer1_a, gp_mn, NA, cam_mclk2, NA, NA, NA, NA, NA, NA, NA),
104869b78b8dSLinus Walleij 	PINGROUP(3, vfe_camif_timer2, gp_clk_0a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
104969b78b8dSLinus Walleij 	PINGROUP(4, vfe_camif_timer3_a, cam_mclk1, gp_clk_1a, pmb_ext_ctrl, NA, NA, NA, NA, NA, NA, NA),
105069b78b8dSLinus Walleij 	PINGROUP(5, cam_mclk0, pmb_ext_ctrl, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105169b78b8dSLinus Walleij 	PINGROUP(6, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105269b78b8dSLinus Walleij 	PINGROUP(7, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105369b78b8dSLinus Walleij 	PINGROUP(8, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105469b78b8dSLinus Walleij 	PINGROUP(9, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105569b78b8dSLinus Walleij 	PINGROUP(10, gsbi2, ssbi_ts, NA, vfe_camif_timer4_c, NA, NA, NA, NA, NA, NA, NA),
105669b78b8dSLinus Walleij 	PINGROUP(11, gsbi2, ts_eoc, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105769b78b8dSLinus Walleij 	PINGROUP(12, gsbi2, rpm_wdog, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105869b78b8dSLinus Walleij 	PINGROUP(13, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
105969b78b8dSLinus Walleij 	PINGROUP(14, gsbi3, gsbi1_spi_cs1_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106069b78b8dSLinus Walleij 	PINGROUP(15, gsbi3, gsbi1_spi_cs2a_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106169b78b8dSLinus Walleij 	PINGROUP(16, gsbi3, gsbi1_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106269b78b8dSLinus Walleij 	PINGROUP(17, gsbi3, gsbi1_spi_cs2b_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106369b78b8dSLinus Walleij 	PINGROUP(18, gsbi4, gsbi11_spi_cs1b_n, NA, NA, gsbi4_3d_cam_i2c_l, vfe_camif_timer6_c, NA, NA, NA, NA, NA),
106469b78b8dSLinus 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),
106569b78b8dSLinus Walleij 	PINGROUP(20, gsbi4, gsbi4_3d_cam_i2c_r, NA, NA, NA, NA, NA, NA, NA, NA, NA),
106669b78b8dSLinus Walleij 	PINGROUP(21, gsbi4, pmb_clk, gsbi4_3d_cam_i2c_r, NA, NA, NA, NA, NA, NA, NA, NA),
106769b78b8dSLinus Walleij 	PINGROUP(22, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_l, NA),
106869b78b8dSLinus Walleij 	PINGROUP(23, gsbi5, ssbi_ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_l, NA),
106969b78b8dSLinus Walleij 	PINGROUP(24, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_r, NA),
107069b78b8dSLinus Walleij 	PINGROUP(25, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_r, NA),
107169b78b8dSLinus Walleij 	PINGROUP(26, fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107269b78b8dSLinus Walleij 	PINGROUP(27, fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107369b78b8dSLinus Walleij 	PINGROUP(28, bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107469b78b8dSLinus Walleij 	PINGROUP(29, bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107569b78b8dSLinus Walleij 	PINGROUP(30, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107669b78b8dSLinus Walleij 	PINGROUP(31, gsbi7, usb_fs1_oe, usb_fs1_oe_n, NA, NA, NA, NA, NA, NA, NA, NA),
107769b78b8dSLinus Walleij 	PINGROUP(32, gsbi7, usb_fs1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107869b78b8dSLinus Walleij 	PINGROUP(33, gsbi7, usb_fs1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107969b78b8dSLinus Walleij 	PINGROUP(34, gsbi8, usb_fs2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108069b78b8dSLinus Walleij 	PINGROUP(35, gsbi8, usb_fs2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108169b78b8dSLinus Walleij 	PINGROUP(36, gsbi8, usb_fs2_oe, usb_fs2_oe_n, gsbi11_spi_cs1a_n, NA, NA, NA, NA, NA, NA, NA),
108269b78b8dSLinus Walleij 	PINGROUP(37, gsbi8, gps_pps_out, gps_pps_in, gsbi11_spi_cs2a_n, gp_clk_2b, NA, NA, NA, NA, NA, NA),
108369b78b8dSLinus Walleij 	PINGROUP(38, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, vfe_camif_timer1_b, NA),
108469b78b8dSLinus Walleij 	PINGROUP(39, gsbi11, gp_pdm_0b, NA, NA, NA, NA, NA, NA, NA, NA, vfe_camif_timer5_b),
108569b78b8dSLinus Walleij 	PINGROUP(40, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108669b78b8dSLinus Walleij 	PINGROUP(41, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108769b78b8dSLinus Walleij 	PINGROUP(42, gsbi12, slimbus2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108869b78b8dSLinus Walleij 	PINGROUP(43, gsbi12, slimbus2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108969b78b8dSLinus Walleij 	PINGROUP(44, gsbi12, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109069b78b8dSLinus Walleij 	PINGROUP(45, gsbi12, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109169b78b8dSLinus Walleij 	PINGROUP(46, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109269b78b8dSLinus Walleij 	PINGROUP(47, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109369b78b8dSLinus Walleij 	PINGROUP(48, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109469b78b8dSLinus Walleij 	PINGROUP(49, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109569b78b8dSLinus Walleij 	PINGROUP(50, mi2s, slimbus1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109669b78b8dSLinus Walleij 	PINGROUP(51, mi2s, slimbus1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109769b78b8dSLinus Walleij 	PINGROUP(52, mi2s, gp_clk_2a, gsbi2_spi_cs1_n, NA, NA, NA, NA, NA, NA, NA, NA),
109869b78b8dSLinus Walleij 	PINGROUP(53, mi2s, gp_pdm_2b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109969b78b8dSLinus Walleij 	PINGROUP(54, codec_mic_i2s, gp_clk_0b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110069b78b8dSLinus Walleij 	PINGROUP(55, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110169b78b8dSLinus Walleij 	PINGROUP(56, codec_mic_i2s, gsbi2_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110269b78b8dSLinus Walleij 	PINGROUP(57, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110369b78b8dSLinus Walleij 	PINGROUP(58, codec_mic_i2s, gp_pdm_0a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110469b78b8dSLinus Walleij 	PINGROUP(59, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110569b78b8dSLinus Walleij 	PINGROUP(60, slimbus1, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110669b78b8dSLinus Walleij 	PINGROUP(61, slimbus1, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110769b78b8dSLinus Walleij 	PINGROUP(62, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110869b78b8dSLinus Walleij 	PINGROUP(63, audio_pcm, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110969b78b8dSLinus Walleij 	PINGROUP(64, audio_pcm, gp_pdm_1b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111069b78b8dSLinus Walleij 	PINGROUP(65, audio_pcm, vfe_camif_timer4_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111169b78b8dSLinus Walleij 	PINGROUP(66, audio_pcm, vfe_camif_timer5_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111269b78b8dSLinus Walleij 	PINGROUP(67, spkr_i2s, vfe_camif_timer7_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111369b78b8dSLinus Walleij 	PINGROUP(68, spkr_i2s, gsbi2_spi_cs2_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111469b78b8dSLinus Walleij 	PINGROUP(69, spkr_i2s, gp_pdm_2a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111569b78b8dSLinus Walleij 	PINGROUP(70, spkr_i2s, gp_clk_1b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111669b78b8dSLinus Walleij 	PINGROUP(71, mic_i2s, gsbi10, vfe_camif_timer6_a, NA, NA, NA, NA, NA, NA, NA, NA),
111769b78b8dSLinus Walleij 	PINGROUP(72, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111869b78b8dSLinus Walleij 	PINGROUP(73, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111969b78b8dSLinus Walleij 	PINGROUP(74, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112069b78b8dSLinus Walleij 	PINGROUP(75, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112169b78b8dSLinus Walleij 	PINGROUP(76, tsif1, gsbi11_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112269b78b8dSLinus Walleij 	PINGROUP(77, tsif1, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112369b78b8dSLinus Walleij 	PINGROUP(78, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112469b78b8dSLinus Walleij 	PINGROUP(79, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112569b78b8dSLinus Walleij 	PINGROUP(80, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112669b78b8dSLinus Walleij 	PINGROUP(81, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112769b78b8dSLinus Walleij 	PINGROUP(82, tsif1, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112869b78b8dSLinus Walleij 	PINGROUP(83, bt, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112969b78b8dSLinus Walleij 	PINGROUP(84, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113069b78b8dSLinus Walleij 	PINGROUP(85, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113169b78b8dSLinus Walleij 	PINGROUP(86, wlan, sdc4, pmb_clk, NA, NA, NA, NA, NA, NA, NA, NA),
113269b78b8dSLinus Walleij 	PINGROUP(87, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113369b78b8dSLinus Walleij 	PINGROUP(88, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113469b78b8dSLinus Walleij 	PINGROUP(89, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113569b78b8dSLinus Walleij 	PINGROUP(90, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113669b78b8dSLinus Walleij 	PINGROUP(91, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113769b78b8dSLinus Walleij 	PINGROUP(92, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113869b78b8dSLinus Walleij 	PINGROUP(93, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113969b78b8dSLinus Walleij 	PINGROUP(94, sdc2, gsbi9, gp_pdm_1a, NA, NA, NA, NA, NA, NA, NA, NA),
114069b78b8dSLinus Walleij 	PINGROUP(95, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114169b78b8dSLinus Walleij 	PINGROUP(96, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114269b78b8dSLinus Walleij 	PINGROUP(97, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114369b78b8dSLinus Walleij 	PINGROUP(98, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114469b78b8dSLinus Walleij 	PINGROUP(99, hdmi_cec, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114569b78b8dSLinus Walleij 	PINGROUP(100, hdmi_ddc_clock, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114669b78b8dSLinus Walleij 	PINGROUP(101, hdmi_ddc_data, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114769b78b8dSLinus Walleij 	PINGROUP(102, hdmi_hot_plug_detect, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114869b78b8dSLinus Walleij 	PINGROUP(103, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114969b78b8dSLinus Walleij 	PINGROUP(104, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115069b78b8dSLinus Walleij 	PINGROUP(105, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115169b78b8dSLinus Walleij 	PINGROUP(106, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115269b78b8dSLinus Walleij 	PINGROUP(107, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115369b78b8dSLinus Walleij 	PINGROUP(108, ps_hold, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115469b78b8dSLinus Walleij 	PINGROUP(109, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115569b78b8dSLinus Walleij 	PINGROUP(110, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115669b78b8dSLinus Walleij 	PINGROUP(111, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115769b78b8dSLinus Walleij 	PINGROUP(112, NA, pmb_clk, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115869b78b8dSLinus Walleij 	PINGROUP(113, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115969b78b8dSLinus Walleij 	PINGROUP(114, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116069b78b8dSLinus Walleij 	PINGROUP(115, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116169b78b8dSLinus Walleij 	PINGROUP(116, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116269b78b8dSLinus Walleij 	PINGROUP(117, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116369b78b8dSLinus Walleij 	PINGROUP(118, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116469b78b8dSLinus Walleij 	PINGROUP(119, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116569b78b8dSLinus Walleij 	PINGROUP(120, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116669b78b8dSLinus Walleij 	PINGROUP(121, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116769b78b8dSLinus Walleij 	PINGROUP(122, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116869b78b8dSLinus Walleij 	PINGROUP(123, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116969b78b8dSLinus Walleij 	PINGROUP(124, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117069b78b8dSLinus Walleij 	PINGROUP(125, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117169b78b8dSLinus Walleij 	PINGROUP(126, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117269b78b8dSLinus Walleij 	PINGROUP(127, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117369b78b8dSLinus Walleij 	PINGROUP(128, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117469b78b8dSLinus Walleij 	PINGROUP(129, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117569b78b8dSLinus Walleij 	PINGROUP(130, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117669b78b8dSLinus Walleij 	PINGROUP(131, NA, ssbi_qpa1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117769b78b8dSLinus Walleij 	PINGROUP(132, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117869b78b8dSLinus Walleij 	PINGROUP(133, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117969b78b8dSLinus Walleij 	PINGROUP(134, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118069b78b8dSLinus Walleij 	PINGROUP(135, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118169b78b8dSLinus Walleij 	PINGROUP(136, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118269b78b8dSLinus Walleij 	PINGROUP(137, gps_blanking, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118369b78b8dSLinus Walleij 	PINGROUP(138, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118469b78b8dSLinus Walleij 	PINGROUP(139, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118569b78b8dSLinus Walleij 	PINGROUP(140, ssbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118669b78b8dSLinus Walleij 	PINGROUP(141, ssbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118769b78b8dSLinus Walleij 	PINGROUP(142, ssbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118869b78b8dSLinus Walleij 	PINGROUP(143, ssbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118969b78b8dSLinus Walleij 	PINGROUP(144, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119069b78b8dSLinus Walleij 	PINGROUP(145, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119169b78b8dSLinus Walleij 	PINGROUP(146, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119269b78b8dSLinus Walleij 	PINGROUP(147, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119369b78b8dSLinus Walleij 	PINGROUP(148, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119469b78b8dSLinus Walleij 	PINGROUP(149, ssbi_pmic2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119569b78b8dSLinus Walleij 	PINGROUP(150, hsic, NA, vfe_camif_timer4_b, NA, NA, NA, NA, NA, NA, NA, NA),
119669b78b8dSLinus Walleij 	PINGROUP(151, hsic, NA, vfe_camif_timer3_b, NA, NA, NA, NA, NA, NA, NA, NA),
119769b78b8dSLinus Walleij 
119869b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_clk, 0x20a0, 13, 6),
119969b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_cmd, 0x20a0, 11, 3),
120069b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_data, 0x20a0, 9, 0),
120169b78b8dSLinus Walleij 
120269b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_clk, 0x20a4, 14, 6),
120369b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_cmd, 0x20a4, 11, 3),
120469b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_data, 0x20a4, 9, 0),
120569b78b8dSLinus Walleij };
120669b78b8dSLinus Walleij 
120769b78b8dSLinus Walleij #define NUM_GPIO_PINGROUPS 152
120869b78b8dSLinus Walleij 
120969b78b8dSLinus Walleij static const struct msm_pinctrl_soc_data msm8960_pinctrl = {
121069b78b8dSLinus Walleij 	.pins = msm8960_pins,
121169b78b8dSLinus Walleij 	.npins = ARRAY_SIZE(msm8960_pins),
121269b78b8dSLinus Walleij 	.functions = msm8960_functions,
121369b78b8dSLinus Walleij 	.nfunctions = ARRAY_SIZE(msm8960_functions),
121469b78b8dSLinus Walleij 	.groups = msm8960_groups,
121569b78b8dSLinus Walleij 	.ngroups = ARRAY_SIZE(msm8960_groups),
121669b78b8dSLinus Walleij 	.ngpios = NUM_GPIO_PINGROUPS,
121769b78b8dSLinus Walleij };
121869b78b8dSLinus Walleij 
121969b78b8dSLinus Walleij static int msm8960_pinctrl_probe(struct platform_device *pdev)
122069b78b8dSLinus Walleij {
122169b78b8dSLinus Walleij 	return msm_pinctrl_probe(pdev, &msm8960_pinctrl);
122269b78b8dSLinus Walleij }
122369b78b8dSLinus Walleij 
122469b78b8dSLinus Walleij static const struct of_device_id msm8960_pinctrl_of_match[] = {
122569b78b8dSLinus Walleij 	{ .compatible = "qcom,msm8960-pinctrl", },
122669b78b8dSLinus Walleij 	{ },
122769b78b8dSLinus Walleij };
122869b78b8dSLinus Walleij 
122969b78b8dSLinus Walleij static struct platform_driver msm8960_pinctrl_driver = {
123069b78b8dSLinus Walleij 	.driver = {
123169b78b8dSLinus Walleij 		.name = "msm8960-pinctrl",
123269b78b8dSLinus Walleij 		.owner = THIS_MODULE,
123369b78b8dSLinus Walleij 		.of_match_table = msm8960_pinctrl_of_match,
123469b78b8dSLinus Walleij 	},
123569b78b8dSLinus Walleij 	.probe = msm8960_pinctrl_probe,
123669b78b8dSLinus Walleij 	.remove = msm_pinctrl_remove,
123769b78b8dSLinus Walleij };
123869b78b8dSLinus Walleij 
123969b78b8dSLinus Walleij static int __init msm8960_pinctrl_init(void)
124069b78b8dSLinus Walleij {
124169b78b8dSLinus Walleij 	return platform_driver_register(&msm8960_pinctrl_driver);
124269b78b8dSLinus Walleij }
124369b78b8dSLinus Walleij arch_initcall(msm8960_pinctrl_init);
124469b78b8dSLinus Walleij 
124569b78b8dSLinus Walleij static void __exit msm8960_pinctrl_exit(void)
124669b78b8dSLinus Walleij {
124769b78b8dSLinus Walleij 	platform_driver_unregister(&msm8960_pinctrl_driver);
124869b78b8dSLinus Walleij }
124969b78b8dSLinus Walleij module_exit(msm8960_pinctrl_exit);
125069b78b8dSLinus Walleij 
125169b78b8dSLinus Walleij MODULE_AUTHOR("Bjorn Andersson <bjorn.andersson@sonymobile.com>");
125269b78b8dSLinus Walleij MODULE_DESCRIPTION("Qualcomm MSM8960 pinctrl driver");
125369b78b8dSLinus Walleij MODULE_LICENSE("GPL v2");
125469b78b8dSLinus Walleij MODULE_DEVICE_TABLE(of, msm8960_pinctrl_of_match);
1255