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[]){			\
358144ef626SBjorn Andersson 			MSM_MUX_gpio,			\
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,			\
387f712c554SGeorgi Djakov 		.intr_target_kpss_val = 4,		\
38869b78b8dSLinus Walleij 		.intr_raw_status_bit = 3,		\
38969b78b8dSLinus Walleij 		.intr_polarity_bit = 1,			\
39069b78b8dSLinus Walleij 		.intr_detection_bit = 2,		\
39169b78b8dSLinus Walleij 		.intr_detection_width = 1,		\
39269b78b8dSLinus Walleij 	}
39369b78b8dSLinus Walleij 
39469b78b8dSLinus Walleij #define SDC_PINGROUP(pg_name, ctl, pull, drv)		\
39569b78b8dSLinus Walleij 	{						\
39669b78b8dSLinus Walleij 		.name = #pg_name,			\
39769b78b8dSLinus Walleij 		.pins = pg_name##_pins,			\
39869b78b8dSLinus Walleij 		.npins = ARRAY_SIZE(pg_name##_pins),	\
39969b78b8dSLinus Walleij 		.ctl_reg = ctl,				\
40069b78b8dSLinus Walleij 		.io_reg = 0,				\
40169b78b8dSLinus Walleij 		.intr_cfg_reg = 0,			\
40269b78b8dSLinus Walleij 		.intr_status_reg = 0,			\
40369b78b8dSLinus Walleij 		.intr_target_reg = 0,			\
40469b78b8dSLinus Walleij 		.mux_bit = -1,				\
40569b78b8dSLinus Walleij 		.pull_bit = pull,			\
40669b78b8dSLinus Walleij 		.drv_bit = drv,				\
40769b78b8dSLinus Walleij 		.oe_bit = -1,				\
40869b78b8dSLinus Walleij 		.in_bit = -1,				\
40969b78b8dSLinus Walleij 		.out_bit = -1,				\
41069b78b8dSLinus Walleij 		.intr_enable_bit = -1,			\
41169b78b8dSLinus Walleij 		.intr_status_bit = -1,			\
41269b78b8dSLinus Walleij 		.intr_target_bit = -1,			\
413f712c554SGeorgi Djakov 		.intr_target_kpss_val = -1,		\
41469b78b8dSLinus Walleij 		.intr_raw_status_bit = -1,		\
41569b78b8dSLinus Walleij 		.intr_polarity_bit = -1,		\
41669b78b8dSLinus Walleij 		.intr_detection_bit = -1,		\
41769b78b8dSLinus Walleij 		.intr_detection_width = -1,		\
41869b78b8dSLinus Walleij 	}
41969b78b8dSLinus Walleij 
42069b78b8dSLinus Walleij enum msm8960_functions {
42169b78b8dSLinus Walleij 	MSM_MUX_audio_pcm,
42269b78b8dSLinus Walleij 	MSM_MUX_bt,
42369b78b8dSLinus Walleij 	MSM_MUX_cam_mclk0,
42469b78b8dSLinus Walleij 	MSM_MUX_cam_mclk1,
42569b78b8dSLinus Walleij 	MSM_MUX_cam_mclk2,
42669b78b8dSLinus Walleij 	MSM_MUX_codec_mic_i2s,
42769b78b8dSLinus Walleij 	MSM_MUX_codec_spkr_i2s,
42869b78b8dSLinus Walleij 	MSM_MUX_ext_gps,
42969b78b8dSLinus Walleij 	MSM_MUX_fm,
43069b78b8dSLinus Walleij 	MSM_MUX_gps_blanking,
43169b78b8dSLinus Walleij 	MSM_MUX_gps_pps_in,
43269b78b8dSLinus Walleij 	MSM_MUX_gps_pps_out,
43369b78b8dSLinus Walleij 	MSM_MUX_gp_clk_0a,
43469b78b8dSLinus Walleij 	MSM_MUX_gp_clk_0b,
43569b78b8dSLinus Walleij 	MSM_MUX_gp_clk_1a,
43669b78b8dSLinus Walleij 	MSM_MUX_gp_clk_1b,
43769b78b8dSLinus Walleij 	MSM_MUX_gp_clk_2a,
43869b78b8dSLinus Walleij 	MSM_MUX_gp_clk_2b,
43969b78b8dSLinus Walleij 	MSM_MUX_gp_mn,
44069b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_0a,
44169b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_0b,
44269b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_1a,
44369b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_1b,
44469b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_2a,
44569b78b8dSLinus Walleij 	MSM_MUX_gp_pdm_2b,
446144ef626SBjorn Andersson 	MSM_MUX_gpio,
44769b78b8dSLinus Walleij 	MSM_MUX_gsbi1,
44869b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs1_n,
44969b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs2a_n,
45069b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs2b_n,
45169b78b8dSLinus Walleij 	MSM_MUX_gsbi1_spi_cs3_n,
45269b78b8dSLinus Walleij 	MSM_MUX_gsbi2,
45369b78b8dSLinus Walleij 	MSM_MUX_gsbi2_spi_cs1_n,
45469b78b8dSLinus Walleij 	MSM_MUX_gsbi2_spi_cs2_n,
45569b78b8dSLinus Walleij 	MSM_MUX_gsbi2_spi_cs3_n,
45669b78b8dSLinus Walleij 	MSM_MUX_gsbi3,
45769b78b8dSLinus Walleij 	MSM_MUX_gsbi4,
45869b78b8dSLinus Walleij 	MSM_MUX_gsbi4_3d_cam_i2c_l,
45969b78b8dSLinus Walleij 	MSM_MUX_gsbi4_3d_cam_i2c_r,
46069b78b8dSLinus Walleij 	MSM_MUX_gsbi5,
46169b78b8dSLinus Walleij 	MSM_MUX_gsbi5_3d_cam_i2c_l,
46269b78b8dSLinus Walleij 	MSM_MUX_gsbi5_3d_cam_i2c_r,
46369b78b8dSLinus Walleij 	MSM_MUX_gsbi6,
46469b78b8dSLinus Walleij 	MSM_MUX_gsbi7,
46569b78b8dSLinus Walleij 	MSM_MUX_gsbi8,
46669b78b8dSLinus Walleij 	MSM_MUX_gsbi9,
46769b78b8dSLinus Walleij 	MSM_MUX_gsbi10,
46869b78b8dSLinus Walleij 	MSM_MUX_gsbi11,
46969b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs1a_n,
47069b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs1b_n,
47169b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs2a_n,
47269b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs2b_n,
47369b78b8dSLinus Walleij 	MSM_MUX_gsbi11_spi_cs3_n,
47469b78b8dSLinus Walleij 	MSM_MUX_gsbi12,
47569b78b8dSLinus Walleij 	MSM_MUX_hdmi_cec,
47669b78b8dSLinus Walleij 	MSM_MUX_hdmi_ddc_clock,
47769b78b8dSLinus Walleij 	MSM_MUX_hdmi_ddc_data,
47869b78b8dSLinus Walleij 	MSM_MUX_hdmi_hot_plug_detect,
47969b78b8dSLinus Walleij 	MSM_MUX_hsic,
48069b78b8dSLinus Walleij 	MSM_MUX_mdp_vsync,
48169b78b8dSLinus Walleij 	MSM_MUX_mi2s,
48269b78b8dSLinus Walleij 	MSM_MUX_mic_i2s,
48369b78b8dSLinus Walleij 	MSM_MUX_pmb_clk,
48469b78b8dSLinus Walleij 	MSM_MUX_pmb_ext_ctrl,
48569b78b8dSLinus Walleij 	MSM_MUX_ps_hold,
48669b78b8dSLinus Walleij 	MSM_MUX_rpm_wdog,
48769b78b8dSLinus Walleij 	MSM_MUX_sdc2,
48869b78b8dSLinus Walleij 	MSM_MUX_sdc4,
48969b78b8dSLinus Walleij 	MSM_MUX_sdc5,
49069b78b8dSLinus Walleij 	MSM_MUX_slimbus1,
49169b78b8dSLinus Walleij 	MSM_MUX_slimbus2,
49269b78b8dSLinus Walleij 	MSM_MUX_spkr_i2s,
49369b78b8dSLinus Walleij 	MSM_MUX_ssbi1,
49469b78b8dSLinus Walleij 	MSM_MUX_ssbi2,
49569b78b8dSLinus Walleij 	MSM_MUX_ssbi_ext_gps,
49669b78b8dSLinus Walleij 	MSM_MUX_ssbi_pmic2,
49769b78b8dSLinus Walleij 	MSM_MUX_ssbi_qpa1,
49869b78b8dSLinus Walleij 	MSM_MUX_ssbi_ts,
49969b78b8dSLinus Walleij 	MSM_MUX_tsif1,
50069b78b8dSLinus Walleij 	MSM_MUX_tsif2,
50169b78b8dSLinus Walleij 	MSM_MUX_ts_eoc,
50269b78b8dSLinus Walleij 	MSM_MUX_usb_fs1,
50369b78b8dSLinus Walleij 	MSM_MUX_usb_fs1_oe,
50469b78b8dSLinus Walleij 	MSM_MUX_usb_fs1_oe_n,
50569b78b8dSLinus Walleij 	MSM_MUX_usb_fs2,
50669b78b8dSLinus Walleij 	MSM_MUX_usb_fs2_oe,
50769b78b8dSLinus Walleij 	MSM_MUX_usb_fs2_oe_n,
50869b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer1_a,
50969b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer1_b,
51069b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer2,
51169b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer3_a,
51269b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer3_b,
51369b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer4_a,
51469b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer4_b,
51569b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer4_c,
51669b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer5_a,
51769b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer5_b,
51869b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer6_a,
51969b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer6_b,
52069b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer6_c,
52169b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer7_a,
52269b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer7_b,
52369b78b8dSLinus Walleij 	MSM_MUX_vfe_camif_timer7_c,
52469b78b8dSLinus Walleij 	MSM_MUX_wlan,
52569b78b8dSLinus Walleij 	MSM_MUX_NA,
52669b78b8dSLinus Walleij };
52769b78b8dSLinus Walleij 
52869b78b8dSLinus Walleij static const char * const audio_pcm_groups[] = {
52969b78b8dSLinus Walleij 	"gpio63", "gpio64", "gpio65", "gpio66"
53069b78b8dSLinus Walleij };
53169b78b8dSLinus Walleij 
53269b78b8dSLinus Walleij static const char * const bt_groups[] = {
53369b78b8dSLinus Walleij 	"gpio28", "gpio29", "gpio83"
53469b78b8dSLinus Walleij };
53569b78b8dSLinus Walleij 
53669b78b8dSLinus Walleij static const char * const cam_mclk0_groups[] = {
53769b78b8dSLinus Walleij 	"gpio5"
53869b78b8dSLinus Walleij };
53969b78b8dSLinus Walleij 
54069b78b8dSLinus Walleij static const char * const cam_mclk1_groups[] = {
54169b78b8dSLinus Walleij 	"gpio4"
54269b78b8dSLinus Walleij };
54369b78b8dSLinus Walleij 
54469b78b8dSLinus Walleij static const char * const cam_mclk2_groups[] = {
54569b78b8dSLinus Walleij 	"gpio2"
54669b78b8dSLinus Walleij };
54769b78b8dSLinus Walleij 
54869b78b8dSLinus Walleij static const char * const codec_mic_i2s_groups[] = {
54969b78b8dSLinus Walleij 	"gpio54", "gpio55", "gpio56", "gpio57", "gpio58"
55069b78b8dSLinus Walleij };
55169b78b8dSLinus Walleij 
55269b78b8dSLinus Walleij static const char * const codec_spkr_i2s_groups[] = {
55369b78b8dSLinus Walleij 	"gpio59", "gpio60", "gpio61", "gpio62"
55469b78b8dSLinus Walleij };
55569b78b8dSLinus Walleij 
55669b78b8dSLinus Walleij static const char * const ext_gps_groups[] = {
55769b78b8dSLinus Walleij 	"gpio22", "gpio23", "gpio24", "gpio25"
55869b78b8dSLinus Walleij };
55969b78b8dSLinus Walleij 
56069b78b8dSLinus Walleij static const char * const fm_groups[] = {
56169b78b8dSLinus Walleij 	"gpio26", "gpio27"
56269b78b8dSLinus Walleij };
56369b78b8dSLinus Walleij 
56469b78b8dSLinus Walleij static const char * const gps_blanking_groups[] = {
56569b78b8dSLinus Walleij 	"gpio137"
56669b78b8dSLinus Walleij };
56769b78b8dSLinus Walleij 
56869b78b8dSLinus Walleij static const char * const gps_pps_in_groups[] = {
56969b78b8dSLinus Walleij 	"gpio37"
57069b78b8dSLinus Walleij };
57169b78b8dSLinus Walleij 
57269b78b8dSLinus Walleij static const char * const gps_pps_out_groups[] = {
57369b78b8dSLinus Walleij 	"gpio37"
57469b78b8dSLinus Walleij };
57569b78b8dSLinus Walleij 
57669b78b8dSLinus Walleij static const char * const gp_clk_0a_groups[] = {
57769b78b8dSLinus Walleij 	"gpio3"
57869b78b8dSLinus Walleij };
57969b78b8dSLinus Walleij 
58069b78b8dSLinus Walleij static const char * const gp_clk_0b_groups[] = {
58169b78b8dSLinus Walleij 	"gpio54"
58269b78b8dSLinus Walleij };
58369b78b8dSLinus Walleij 
58469b78b8dSLinus Walleij static const char * const gp_clk_1a_groups[] = {
58569b78b8dSLinus Walleij 	"gpio4"
58669b78b8dSLinus Walleij };
58769b78b8dSLinus Walleij 
58869b78b8dSLinus Walleij static const char * const gp_clk_1b_groups[] = {
58969b78b8dSLinus Walleij 	"gpio70"
59069b78b8dSLinus Walleij };
59169b78b8dSLinus Walleij 
59269b78b8dSLinus Walleij static const char * const gp_clk_2a_groups[] = {
59369b78b8dSLinus Walleij 	"gpio52"
59469b78b8dSLinus Walleij };
59569b78b8dSLinus Walleij 
59669b78b8dSLinus Walleij static const char * const gp_clk_2b_groups[] = {
59769b78b8dSLinus Walleij 	"gpio37"
59869b78b8dSLinus Walleij };
59969b78b8dSLinus Walleij 
60069b78b8dSLinus Walleij static const char * const gp_mn_groups[] = {
60169b78b8dSLinus Walleij 	"gpio2"
60269b78b8dSLinus Walleij };
60369b78b8dSLinus Walleij 
60469b78b8dSLinus Walleij static const char * const gp_pdm_0a_groups[] = {
60569b78b8dSLinus Walleij 	"gpio58"
60669b78b8dSLinus Walleij };
60769b78b8dSLinus Walleij 
60869b78b8dSLinus Walleij static const char * const gp_pdm_0b_groups[] = {
60969b78b8dSLinus Walleij 	"gpio39"
61069b78b8dSLinus Walleij };
61169b78b8dSLinus Walleij 
61269b78b8dSLinus Walleij static const char * const gp_pdm_1a_groups[] = {
61369b78b8dSLinus Walleij 	"gpio94"
61469b78b8dSLinus Walleij };
61569b78b8dSLinus Walleij 
61669b78b8dSLinus Walleij static const char * const gp_pdm_1b_groups[] = {
61769b78b8dSLinus Walleij 	"gpio64"
61869b78b8dSLinus Walleij };
61969b78b8dSLinus Walleij 
62069b78b8dSLinus Walleij static const char * const gp_pdm_2a_groups[] = {
62169b78b8dSLinus Walleij 	"gpio69"
62269b78b8dSLinus Walleij };
62369b78b8dSLinus Walleij 
62469b78b8dSLinus Walleij static const char * const gp_pdm_2b_groups[] = {
62569b78b8dSLinus Walleij 	"gpio53"
62669b78b8dSLinus Walleij };
62769b78b8dSLinus Walleij 
628144ef626SBjorn Andersson static const char * const gpio_groups[] = {
629144ef626SBjorn Andersson 	"gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
630144ef626SBjorn Andersson 	"gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
631144ef626SBjorn Andersson 	"gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
632144ef626SBjorn Andersson 	"gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
633144ef626SBjorn Andersson 	"gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
634144ef626SBjorn Andersson 	"gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
635144ef626SBjorn Andersson 	"gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
636144ef626SBjorn Andersson 	"gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
637144ef626SBjorn Andersson 	"gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
638144ef626SBjorn Andersson 	"gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
639144ef626SBjorn Andersson 	"gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
640144ef626SBjorn Andersson 	"gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
641144ef626SBjorn Andersson 	"gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91",
642144ef626SBjorn Andersson 	"gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98",
643144ef626SBjorn Andersson 	"gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104",
644144ef626SBjorn Andersson 	"gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110",
645144ef626SBjorn Andersson 	"gpio111", "gpio112", "gpio113", "gpio114", "gpio115", "gpio116",
646144ef626SBjorn Andersson 	"gpio117", "gpio118", "gpio119", "gpio120", "gpio121", "gpio122",
647144ef626SBjorn Andersson 	"gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128",
648144ef626SBjorn Andersson 	"gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134",
649144ef626SBjorn Andersson 	"gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140",
650144ef626SBjorn Andersson 	"gpio141", "gpio142", "gpio143", "gpio144", "gpio145", "gpio146",
651144ef626SBjorn Andersson 	"gpio147", "gpio148", "gpio149", "gpio150", "gpio151"
652144ef626SBjorn Andersson };
653144ef626SBjorn Andersson 
65469b78b8dSLinus Walleij static const char * const gsbi1_groups[] = {
65569b78b8dSLinus Walleij 	"gpio6", "gpio7", "gpio8", "gpio9"
65669b78b8dSLinus Walleij };
65769b78b8dSLinus Walleij 
65869b78b8dSLinus Walleij static const char * const gsbi1_spi_cs1_n_groups[] = {
65969b78b8dSLinus Walleij 	"gpio14"
66069b78b8dSLinus Walleij };
66169b78b8dSLinus Walleij 
66269b78b8dSLinus Walleij static const char * const gsbi1_spi_cs2a_n_groups[] = {
66369b78b8dSLinus Walleij 	"gpio15"
66469b78b8dSLinus Walleij };
66569b78b8dSLinus Walleij 
66669b78b8dSLinus Walleij static const char * const gsbi1_spi_cs2b_n_groups[] = {
66769b78b8dSLinus Walleij 	"gpio17"
66869b78b8dSLinus Walleij };
66969b78b8dSLinus Walleij 
67069b78b8dSLinus Walleij static const char * const gsbi1_spi_cs3_n_groups[] = {
67169b78b8dSLinus Walleij 	"gpio16"
67269b78b8dSLinus Walleij };
67369b78b8dSLinus Walleij 
67469b78b8dSLinus Walleij static const char * const gsbi2_groups[] = {
67569b78b8dSLinus Walleij 	"gpio10", "gpio11", "gpio12", "gpio13"
67669b78b8dSLinus Walleij };
67769b78b8dSLinus Walleij 
67869b78b8dSLinus Walleij static const char * const gsbi2_spi_cs1_n_groups[] = {
67969b78b8dSLinus Walleij 	"gpio52"
68069b78b8dSLinus Walleij };
68169b78b8dSLinus Walleij 
68269b78b8dSLinus Walleij static const char * const gsbi2_spi_cs2_n_groups[] = {
68369b78b8dSLinus Walleij 	"gpio68"
68469b78b8dSLinus Walleij };
68569b78b8dSLinus Walleij 
68669b78b8dSLinus Walleij static const char * const gsbi2_spi_cs3_n_groups[] = {
68769b78b8dSLinus Walleij 	"gpio56"
68869b78b8dSLinus Walleij };
68969b78b8dSLinus Walleij 
69069b78b8dSLinus Walleij static const char * const gsbi3_groups[] = {
69169b78b8dSLinus Walleij 	"gpio14", "gpio15", "gpio16", "gpio17"
69269b78b8dSLinus Walleij };
69369b78b8dSLinus Walleij 
69469b78b8dSLinus Walleij static const char * const gsbi4_groups[] = {
69569b78b8dSLinus Walleij 	"gpio18", "gpio19", "gpio20", "gpio21"
69669b78b8dSLinus Walleij };
69769b78b8dSLinus Walleij 
69869b78b8dSLinus Walleij static const char * const gsbi4_3d_cam_i2c_l_groups[] = {
69969b78b8dSLinus Walleij 	"gpio18", "gpio19"
70069b78b8dSLinus Walleij };
70169b78b8dSLinus Walleij 
70269b78b8dSLinus Walleij static const char * const gsbi4_3d_cam_i2c_r_groups[] = {
70369b78b8dSLinus Walleij 	"gpio20", "gpio21"
70469b78b8dSLinus Walleij };
70569b78b8dSLinus Walleij 
70669b78b8dSLinus Walleij static const char * const gsbi5_groups[] = {
70769b78b8dSLinus Walleij 	"gpio22", "gpio23", "gpio24", "gpio25"
70869b78b8dSLinus Walleij };
70969b78b8dSLinus Walleij 
71069b78b8dSLinus Walleij static const char * const gsbi5_3d_cam_i2c_l_groups[] = {
71169b78b8dSLinus Walleij 	"gpio22", "gpio23"
71269b78b8dSLinus Walleij };
71369b78b8dSLinus Walleij 
71469b78b8dSLinus Walleij static const char * const gsbi5_3d_cam_i2c_r_groups[] = {
71569b78b8dSLinus Walleij 	"gpio24", "gpio25"
71669b78b8dSLinus Walleij };
71769b78b8dSLinus Walleij 
71869b78b8dSLinus Walleij static const char * const gsbi6_groups[] = {
71969b78b8dSLinus Walleij 	"gpio26", "gpio27", "gpio28", "gpio29"
72069b78b8dSLinus Walleij };
72169b78b8dSLinus Walleij 
72269b78b8dSLinus Walleij static const char * const gsbi7_groups[] = {
72369b78b8dSLinus Walleij 	"gpio30", "gpio31", "gpio32", "gpio33"
72469b78b8dSLinus Walleij };
72569b78b8dSLinus Walleij 
72669b78b8dSLinus Walleij static const char * const gsbi8_groups[] = {
72769b78b8dSLinus Walleij 	"gpio34", "gpio35", "gpio36", "gpio37"
72869b78b8dSLinus Walleij };
72969b78b8dSLinus Walleij 
73069b78b8dSLinus Walleij static const char * const gsbi9_groups[] = {
73169b78b8dSLinus Walleij 	"gpio93", "gpio94", "gpio95", "gpio96"
73269b78b8dSLinus Walleij };
73369b78b8dSLinus Walleij 
73469b78b8dSLinus Walleij static const char * const gsbi10_groups[] = {
73569b78b8dSLinus Walleij 	"gpio71", "gpio72", "gpio73", "gpio74"
73669b78b8dSLinus Walleij };
73769b78b8dSLinus Walleij 
73869b78b8dSLinus Walleij static const char * const gsbi11_groups[] = {
73969b78b8dSLinus Walleij 	"gpio38", "gpio39", "gpio40", "gpio41"
74069b78b8dSLinus Walleij };
74169b78b8dSLinus Walleij 
74269b78b8dSLinus Walleij static const char * const gsbi11_spi_cs1a_n_groups[] = {
74369b78b8dSLinus Walleij 	"gpio36"
74469b78b8dSLinus Walleij };
74569b78b8dSLinus Walleij 
74669b78b8dSLinus Walleij static const char * const gsbi11_spi_cs1b_n_groups[] = {
74769b78b8dSLinus Walleij 	"gpio18"
74869b78b8dSLinus Walleij };
74969b78b8dSLinus Walleij 
75069b78b8dSLinus Walleij static const char * const gsbi11_spi_cs2a_n_groups[] = {
75169b78b8dSLinus Walleij 	"gpio37"
75269b78b8dSLinus Walleij };
75369b78b8dSLinus Walleij 
75469b78b8dSLinus Walleij static const char * const gsbi11_spi_cs2b_n_groups[] = {
75569b78b8dSLinus Walleij 	"gpio19"
75669b78b8dSLinus Walleij };
75769b78b8dSLinus Walleij 
75869b78b8dSLinus Walleij static const char * const gsbi11_spi_cs3_n_groups[] = {
75969b78b8dSLinus Walleij 	"gpio76"
76069b78b8dSLinus Walleij };
76169b78b8dSLinus Walleij 
76269b78b8dSLinus Walleij static const char * const gsbi12_groups[] = {
76369b78b8dSLinus Walleij 	"gpio42", "gpio43", "gpio44", "gpio45"
76469b78b8dSLinus Walleij };
76569b78b8dSLinus Walleij 
76669b78b8dSLinus Walleij static const char * const hdmi_cec_groups[] = {
76769b78b8dSLinus Walleij 	"gpio99"
76869b78b8dSLinus Walleij };
76969b78b8dSLinus Walleij 
77069b78b8dSLinus Walleij static const char * const hdmi_ddc_clock_groups[] = {
77169b78b8dSLinus Walleij 	"gpio100"
77269b78b8dSLinus Walleij };
77369b78b8dSLinus Walleij 
77469b78b8dSLinus Walleij static const char * const hdmi_ddc_data_groups[] = {
77569b78b8dSLinus Walleij 	"gpio101"
77669b78b8dSLinus Walleij };
77769b78b8dSLinus Walleij 
77869b78b8dSLinus Walleij static const char * const hdmi_hot_plug_detect_groups[] = {
77969b78b8dSLinus Walleij 	"gpio102"
78069b78b8dSLinus Walleij };
78169b78b8dSLinus Walleij 
78269b78b8dSLinus Walleij static const char * const hsic_groups[] = {
78369b78b8dSLinus Walleij 	"gpio150", "gpio151"
78469b78b8dSLinus Walleij };
78569b78b8dSLinus Walleij 
78669b78b8dSLinus Walleij static const char * const mdp_vsync_groups[] = {
78769b78b8dSLinus Walleij 	"gpio0", "gpio1", "gpio19"
78869b78b8dSLinus Walleij };
78969b78b8dSLinus Walleij 
79069b78b8dSLinus Walleij static const char * const mi2s_groups[] = {
79169b78b8dSLinus Walleij 	"gpio47", "gpio48", "gpio49", "gpio50", "gpio51", "gpio52", "gpio53"
79269b78b8dSLinus Walleij };
79369b78b8dSLinus Walleij 
79469b78b8dSLinus Walleij static const char * const mic_i2s_groups[] = {
79569b78b8dSLinus Walleij 	"gpio71", "gpio72", "gpio73", "gpio74"
79669b78b8dSLinus Walleij };
79769b78b8dSLinus Walleij 
79869b78b8dSLinus Walleij static const char * const pmb_clk_groups[] = {
79969b78b8dSLinus Walleij 	"gpio21", "gpio86", "gpio112"
80069b78b8dSLinus Walleij };
80169b78b8dSLinus Walleij 
80269b78b8dSLinus Walleij static const char * const pmb_ext_ctrl_groups[] = {
80369b78b8dSLinus Walleij 	"gpio4", "gpio5"
80469b78b8dSLinus Walleij };
80569b78b8dSLinus Walleij 
80669b78b8dSLinus Walleij static const char * const ps_hold_groups[] = {
80769b78b8dSLinus Walleij 	"gpio108"
80869b78b8dSLinus Walleij };
80969b78b8dSLinus Walleij 
81069b78b8dSLinus Walleij static const char * const rpm_wdog_groups[] = {
81169b78b8dSLinus Walleij 	"gpio12"
81269b78b8dSLinus Walleij };
81369b78b8dSLinus Walleij 
81469b78b8dSLinus Walleij static const char * const sdc2_groups[] = {
81569b78b8dSLinus Walleij 	"gpio89", "gpio90", "gpio91", "gpio92", "gpio93", "gpio94", "gpio95",
81669b78b8dSLinus Walleij 	"gpio96", "gpio97", "gpio98"
81769b78b8dSLinus Walleij };
81869b78b8dSLinus Walleij 
81969b78b8dSLinus Walleij static const char * const sdc4_groups[] = {
82069b78b8dSLinus Walleij 	"gpio83", "gpio84", "gpio85", "gpio86", "gpio87", "gpio88"
82169b78b8dSLinus Walleij };
82269b78b8dSLinus Walleij 
82369b78b8dSLinus Walleij static const char * const sdc5_groups[] = {
82469b78b8dSLinus Walleij 	"gpio77", "gpio78", "gpio79", "gpio80", "gpio81", "gpio82"
82569b78b8dSLinus Walleij };
82669b78b8dSLinus Walleij 
82769b78b8dSLinus Walleij static const char * const slimbus1_groups[] = {
82869b78b8dSLinus Walleij 	"gpio50", "gpio51", "gpio60", "gpio61"
82969b78b8dSLinus Walleij };
83069b78b8dSLinus Walleij 
83169b78b8dSLinus Walleij static const char * const slimbus2_groups[] = {
83269b78b8dSLinus Walleij 	"gpio42", "gpio43"
83369b78b8dSLinus Walleij };
83469b78b8dSLinus Walleij 
83569b78b8dSLinus Walleij static const char * const spkr_i2s_groups[] = {
83669b78b8dSLinus Walleij 	"gpio67", "gpio68", "gpio69", "gpio70"
83769b78b8dSLinus Walleij };
83869b78b8dSLinus Walleij 
83969b78b8dSLinus Walleij static const char * const ssbi1_groups[] = {
84069b78b8dSLinus Walleij 	"gpio141", "gpio143"
84169b78b8dSLinus Walleij };
84269b78b8dSLinus Walleij 
84369b78b8dSLinus Walleij static const char * const ssbi2_groups[] = {
84469b78b8dSLinus Walleij 	"gpio140", "gpio142"
84569b78b8dSLinus Walleij };
84669b78b8dSLinus Walleij 
84769b78b8dSLinus Walleij static const char * const ssbi_ext_gps_groups[] = {
84869b78b8dSLinus Walleij 	"gpio23"
84969b78b8dSLinus Walleij };
85069b78b8dSLinus Walleij 
85169b78b8dSLinus Walleij static const char * const ssbi_pmic2_groups[] = {
85269b78b8dSLinus Walleij 	"gpio149"
85369b78b8dSLinus Walleij };
85469b78b8dSLinus Walleij 
85569b78b8dSLinus Walleij static const char * const ssbi_qpa1_groups[] = {
85669b78b8dSLinus Walleij 	"gpio131"
85769b78b8dSLinus Walleij };
85869b78b8dSLinus Walleij 
85969b78b8dSLinus Walleij static const char * const ssbi_ts_groups[] = {
86069b78b8dSLinus Walleij 	"gpio10"
86169b78b8dSLinus Walleij };
86269b78b8dSLinus Walleij 
86369b78b8dSLinus Walleij static const char * const tsif1_groups[] = {
86469b78b8dSLinus Walleij 	"gpio75", "gpio76", "gpio77", "gpio82"
86569b78b8dSLinus Walleij };
86669b78b8dSLinus Walleij 
86769b78b8dSLinus Walleij static const char * const tsif2_groups[] = {
86869b78b8dSLinus Walleij 	"gpio78", "gpio79", "gpio80", "gpio81"
86969b78b8dSLinus Walleij };
87069b78b8dSLinus Walleij 
87169b78b8dSLinus Walleij static const char * const ts_eoc_groups[] = {
87269b78b8dSLinus Walleij 	"gpio11"
87369b78b8dSLinus Walleij };
87469b78b8dSLinus Walleij 
87569b78b8dSLinus Walleij static const char * const usb_fs1_groups[] = {
87669b78b8dSLinus Walleij 	"gpio32", "gpio33"
87769b78b8dSLinus Walleij };
87869b78b8dSLinus Walleij 
87969b78b8dSLinus Walleij static const char * const usb_fs1_oe_groups[] = {
88069b78b8dSLinus Walleij 	"gpio31"
88169b78b8dSLinus Walleij };
88269b78b8dSLinus Walleij 
88369b78b8dSLinus Walleij static const char * const usb_fs1_oe_n_groups[] = {
88469b78b8dSLinus Walleij 	"gpio31"
88569b78b8dSLinus Walleij };
88669b78b8dSLinus Walleij 
88769b78b8dSLinus Walleij static const char * const usb_fs2_groups[] = {
88869b78b8dSLinus Walleij 	"gpio34", "gpio35"
88969b78b8dSLinus Walleij };
89069b78b8dSLinus Walleij 
89169b78b8dSLinus Walleij static const char * const usb_fs2_oe_groups[] = {
89269b78b8dSLinus Walleij 	"gpio36"
89369b78b8dSLinus Walleij };
89469b78b8dSLinus Walleij 
89569b78b8dSLinus Walleij static const char * const usb_fs2_oe_n_groups[] = {
89669b78b8dSLinus Walleij 	"gpio36"
89769b78b8dSLinus Walleij };
89869b78b8dSLinus Walleij 
89969b78b8dSLinus Walleij static const char * const vfe_camif_timer1_a_groups[] = {
90069b78b8dSLinus Walleij 	"gpio2"
90169b78b8dSLinus Walleij };
90269b78b8dSLinus Walleij 
90369b78b8dSLinus Walleij static const char * const vfe_camif_timer1_b_groups[] = {
90469b78b8dSLinus Walleij 	"gpio38"
90569b78b8dSLinus Walleij };
90669b78b8dSLinus Walleij 
90769b78b8dSLinus Walleij static const char * const vfe_camif_timer2_groups[] = {
90869b78b8dSLinus Walleij 	"gpio3"
90969b78b8dSLinus Walleij };
91069b78b8dSLinus Walleij 
91169b78b8dSLinus Walleij static const char * const vfe_camif_timer3_a_groups[] = {
91269b78b8dSLinus Walleij 	"gpio4"
91369b78b8dSLinus Walleij };
91469b78b8dSLinus Walleij 
91569b78b8dSLinus Walleij static const char * const vfe_camif_timer3_b_groups[] = {
91669b78b8dSLinus Walleij 	"gpio151"
91769b78b8dSLinus Walleij };
91869b78b8dSLinus Walleij 
91969b78b8dSLinus Walleij static const char * const vfe_camif_timer4_a_groups[] = {
92069b78b8dSLinus Walleij 	"gpio65"
92169b78b8dSLinus Walleij };
92269b78b8dSLinus Walleij 
92369b78b8dSLinus Walleij static const char * const vfe_camif_timer4_b_groups[] = {
92469b78b8dSLinus Walleij 	"gpio150"
92569b78b8dSLinus Walleij };
92669b78b8dSLinus Walleij 
92769b78b8dSLinus Walleij static const char * const vfe_camif_timer4_c_groups[] = {
92869b78b8dSLinus Walleij 	"gpio10"
92969b78b8dSLinus Walleij };
93069b78b8dSLinus Walleij 
93169b78b8dSLinus Walleij static const char * const vfe_camif_timer5_a_groups[] = {
93269b78b8dSLinus Walleij 	"gpio66"
93369b78b8dSLinus Walleij };
93469b78b8dSLinus Walleij 
93569b78b8dSLinus Walleij static const char * const vfe_camif_timer5_b_groups[] = {
93669b78b8dSLinus Walleij 	"gpio39"
93769b78b8dSLinus Walleij };
93869b78b8dSLinus Walleij 
93969b78b8dSLinus Walleij static const char * const vfe_camif_timer6_a_groups[] = {
94069b78b8dSLinus Walleij 	"gpio71"
94169b78b8dSLinus Walleij };
94269b78b8dSLinus Walleij 
94369b78b8dSLinus Walleij static const char * const vfe_camif_timer6_b_groups[] = {
94469b78b8dSLinus Walleij 	"gpio0"
94569b78b8dSLinus Walleij };
94669b78b8dSLinus Walleij 
94769b78b8dSLinus Walleij static const char * const vfe_camif_timer6_c_groups[] = {
94869b78b8dSLinus Walleij 	"gpio18"
94969b78b8dSLinus Walleij };
95069b78b8dSLinus Walleij 
95169b78b8dSLinus Walleij static const char * const vfe_camif_timer7_a_groups[] = {
95269b78b8dSLinus Walleij 	"gpio67"
95369b78b8dSLinus Walleij };
95469b78b8dSLinus Walleij 
95569b78b8dSLinus Walleij static const char * const vfe_camif_timer7_b_groups[] = {
95669b78b8dSLinus Walleij 	"gpio1"
95769b78b8dSLinus Walleij };
95869b78b8dSLinus Walleij 
95969b78b8dSLinus Walleij static const char * const vfe_camif_timer7_c_groups[] = {
96069b78b8dSLinus Walleij 	"gpio19"
96169b78b8dSLinus Walleij };
96269b78b8dSLinus Walleij 
96369b78b8dSLinus Walleij static const char * const wlan_groups[] = {
96469b78b8dSLinus Walleij 	"gpio84", "gpio85", "gpio86", "gpio87", "gpio88"
96569b78b8dSLinus Walleij };
96669b78b8dSLinus Walleij 
96769b78b8dSLinus Walleij static const struct msm_function msm8960_functions[] = {
96869b78b8dSLinus Walleij 	FUNCTION(audio_pcm),
96969b78b8dSLinus Walleij 	FUNCTION(bt),
97069b78b8dSLinus Walleij 	FUNCTION(cam_mclk0),
97169b78b8dSLinus Walleij 	FUNCTION(cam_mclk1),
97269b78b8dSLinus Walleij 	FUNCTION(cam_mclk2),
97369b78b8dSLinus Walleij 	FUNCTION(codec_mic_i2s),
97469b78b8dSLinus Walleij 	FUNCTION(codec_spkr_i2s),
97569b78b8dSLinus Walleij 	FUNCTION(ext_gps),
97669b78b8dSLinus Walleij 	FUNCTION(fm),
97769b78b8dSLinus Walleij 	FUNCTION(gps_blanking),
97869b78b8dSLinus Walleij 	FUNCTION(gps_pps_in),
97969b78b8dSLinus Walleij 	FUNCTION(gps_pps_out),
98069b78b8dSLinus Walleij 	FUNCTION(gp_clk_0a),
98169b78b8dSLinus Walleij 	FUNCTION(gp_clk_0b),
98269b78b8dSLinus Walleij 	FUNCTION(gp_clk_1a),
98369b78b8dSLinus Walleij 	FUNCTION(gp_clk_1b),
98469b78b8dSLinus Walleij 	FUNCTION(gp_clk_2a),
98569b78b8dSLinus Walleij 	FUNCTION(gp_clk_2b),
98669b78b8dSLinus Walleij 	FUNCTION(gp_mn),
98769b78b8dSLinus Walleij 	FUNCTION(gp_pdm_0a),
98869b78b8dSLinus Walleij 	FUNCTION(gp_pdm_0b),
98969b78b8dSLinus Walleij 	FUNCTION(gp_pdm_1a),
99069b78b8dSLinus Walleij 	FUNCTION(gp_pdm_1b),
99169b78b8dSLinus Walleij 	FUNCTION(gp_pdm_2a),
99269b78b8dSLinus Walleij 	FUNCTION(gp_pdm_2b),
993144ef626SBjorn Andersson 	FUNCTION(gpio),
99469b78b8dSLinus Walleij 	FUNCTION(gsbi1),
99569b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs1_n),
99669b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs2a_n),
99769b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs2b_n),
99869b78b8dSLinus Walleij 	FUNCTION(gsbi1_spi_cs3_n),
99969b78b8dSLinus Walleij 	FUNCTION(gsbi2),
100069b78b8dSLinus Walleij 	FUNCTION(gsbi2_spi_cs1_n),
100169b78b8dSLinus Walleij 	FUNCTION(gsbi2_spi_cs2_n),
100269b78b8dSLinus Walleij 	FUNCTION(gsbi2_spi_cs3_n),
100369b78b8dSLinus Walleij 	FUNCTION(gsbi3),
100469b78b8dSLinus Walleij 	FUNCTION(gsbi4),
100569b78b8dSLinus Walleij 	FUNCTION(gsbi4_3d_cam_i2c_l),
100669b78b8dSLinus Walleij 	FUNCTION(gsbi4_3d_cam_i2c_r),
100769b78b8dSLinus Walleij 	FUNCTION(gsbi5),
100869b78b8dSLinus Walleij 	FUNCTION(gsbi5_3d_cam_i2c_l),
100969b78b8dSLinus Walleij 	FUNCTION(gsbi5_3d_cam_i2c_r),
101069b78b8dSLinus Walleij 	FUNCTION(gsbi6),
101169b78b8dSLinus Walleij 	FUNCTION(gsbi7),
101269b78b8dSLinus Walleij 	FUNCTION(gsbi8),
101369b78b8dSLinus Walleij 	FUNCTION(gsbi9),
101469b78b8dSLinus Walleij 	FUNCTION(gsbi10),
101569b78b8dSLinus Walleij 	FUNCTION(gsbi11),
101669b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs1a_n),
101769b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs1b_n),
101869b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs2a_n),
101969b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs2b_n),
102069b78b8dSLinus Walleij 	FUNCTION(gsbi11_spi_cs3_n),
102169b78b8dSLinus Walleij 	FUNCTION(gsbi12),
102269b78b8dSLinus Walleij 	FUNCTION(hdmi_cec),
102369b78b8dSLinus Walleij 	FUNCTION(hdmi_ddc_clock),
102469b78b8dSLinus Walleij 	FUNCTION(hdmi_ddc_data),
102569b78b8dSLinus Walleij 	FUNCTION(hdmi_hot_plug_detect),
102669b78b8dSLinus Walleij 	FUNCTION(hsic),
102769b78b8dSLinus Walleij 	FUNCTION(mdp_vsync),
102869b78b8dSLinus Walleij 	FUNCTION(mi2s),
102969b78b8dSLinus Walleij 	FUNCTION(mic_i2s),
103069b78b8dSLinus Walleij 	FUNCTION(pmb_clk),
103169b78b8dSLinus Walleij 	FUNCTION(pmb_ext_ctrl),
103269b78b8dSLinus Walleij 	FUNCTION(ps_hold),
103369b78b8dSLinus Walleij 	FUNCTION(rpm_wdog),
103469b78b8dSLinus Walleij 	FUNCTION(sdc2),
103569b78b8dSLinus Walleij 	FUNCTION(sdc4),
103669b78b8dSLinus Walleij 	FUNCTION(sdc5),
103769b78b8dSLinus Walleij 	FUNCTION(slimbus1),
103869b78b8dSLinus Walleij 	FUNCTION(slimbus2),
103969b78b8dSLinus Walleij 	FUNCTION(spkr_i2s),
104069b78b8dSLinus Walleij 	FUNCTION(ssbi1),
104169b78b8dSLinus Walleij 	FUNCTION(ssbi2),
104269b78b8dSLinus Walleij 	FUNCTION(ssbi_ext_gps),
104369b78b8dSLinus Walleij 	FUNCTION(ssbi_pmic2),
104469b78b8dSLinus Walleij 	FUNCTION(ssbi_qpa1),
104569b78b8dSLinus Walleij 	FUNCTION(ssbi_ts),
104669b78b8dSLinus Walleij 	FUNCTION(tsif1),
104769b78b8dSLinus Walleij 	FUNCTION(tsif2),
104869b78b8dSLinus Walleij 	FUNCTION(ts_eoc),
104969b78b8dSLinus Walleij 	FUNCTION(usb_fs1),
105069b78b8dSLinus Walleij 	FUNCTION(usb_fs1_oe),
105169b78b8dSLinus Walleij 	FUNCTION(usb_fs1_oe_n),
105269b78b8dSLinus Walleij 	FUNCTION(usb_fs2),
105369b78b8dSLinus Walleij 	FUNCTION(usb_fs2_oe),
105469b78b8dSLinus Walleij 	FUNCTION(usb_fs2_oe_n),
105569b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer1_a),
105669b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer1_b),
105769b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer2),
105869b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer3_a),
105969b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer3_b),
106069b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer4_a),
106169b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer4_b),
106269b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer4_c),
106369b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer5_a),
106469b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer5_b),
106569b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer6_a),
106669b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer6_b),
106769b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer6_c),
106869b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer7_a),
106969b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer7_b),
107069b78b8dSLinus Walleij 	FUNCTION(vfe_camif_timer7_c),
107169b78b8dSLinus Walleij 	FUNCTION(wlan),
107269b78b8dSLinus Walleij };
107369b78b8dSLinus Walleij 
107469b78b8dSLinus Walleij static const struct msm_pingroup msm8960_groups[] = {
107569b78b8dSLinus Walleij 	PINGROUP(0, mdp_vsync, vfe_camif_timer6_b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107669b78b8dSLinus Walleij 	PINGROUP(1, mdp_vsync, vfe_camif_timer7_b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107769b78b8dSLinus Walleij 	PINGROUP(2, vfe_camif_timer1_a, gp_mn, NA, cam_mclk2, NA, NA, NA, NA, NA, NA, NA),
107869b78b8dSLinus Walleij 	PINGROUP(3, vfe_camif_timer2, gp_clk_0a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
107969b78b8dSLinus Walleij 	PINGROUP(4, vfe_camif_timer3_a, cam_mclk1, gp_clk_1a, pmb_ext_ctrl, NA, NA, NA, NA, NA, NA, NA),
108069b78b8dSLinus Walleij 	PINGROUP(5, cam_mclk0, pmb_ext_ctrl, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108169b78b8dSLinus Walleij 	PINGROUP(6, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108269b78b8dSLinus Walleij 	PINGROUP(7, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108369b78b8dSLinus Walleij 	PINGROUP(8, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108469b78b8dSLinus Walleij 	PINGROUP(9, gsbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108569b78b8dSLinus Walleij 	PINGROUP(10, gsbi2, ssbi_ts, NA, vfe_camif_timer4_c, NA, NA, NA, NA, NA, NA, NA),
108669b78b8dSLinus Walleij 	PINGROUP(11, gsbi2, ts_eoc, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108769b78b8dSLinus Walleij 	PINGROUP(12, gsbi2, rpm_wdog, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108869b78b8dSLinus Walleij 	PINGROUP(13, gsbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
108969b78b8dSLinus Walleij 	PINGROUP(14, gsbi3, gsbi1_spi_cs1_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109069b78b8dSLinus Walleij 	PINGROUP(15, gsbi3, gsbi1_spi_cs2a_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109169b78b8dSLinus Walleij 	PINGROUP(16, gsbi3, gsbi1_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109269b78b8dSLinus Walleij 	PINGROUP(17, gsbi3, gsbi1_spi_cs2b_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109369b78b8dSLinus Walleij 	PINGROUP(18, gsbi4, gsbi11_spi_cs1b_n, NA, NA, gsbi4_3d_cam_i2c_l, vfe_camif_timer6_c, NA, NA, NA, NA, NA),
109469b78b8dSLinus 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),
109569b78b8dSLinus Walleij 	PINGROUP(20, gsbi4, gsbi4_3d_cam_i2c_r, NA, NA, NA, NA, NA, NA, NA, NA, NA),
109669b78b8dSLinus Walleij 	PINGROUP(21, gsbi4, pmb_clk, gsbi4_3d_cam_i2c_r, NA, NA, NA, NA, NA, NA, NA, NA),
109769b78b8dSLinus Walleij 	PINGROUP(22, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_l, NA),
109869b78b8dSLinus Walleij 	PINGROUP(23, gsbi5, ssbi_ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_l, NA),
109969b78b8dSLinus Walleij 	PINGROUP(24, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_r, NA),
110069b78b8dSLinus Walleij 	PINGROUP(25, gsbi5, ext_gps, NA, NA, NA, NA, NA, NA, NA, gsbi5_3d_cam_i2c_r, NA),
110169b78b8dSLinus Walleij 	PINGROUP(26, fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110269b78b8dSLinus Walleij 	PINGROUP(27, fm, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110369b78b8dSLinus Walleij 	PINGROUP(28, bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110469b78b8dSLinus Walleij 	PINGROUP(29, bt, gsbi6, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110569b78b8dSLinus Walleij 	PINGROUP(30, gsbi7, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110669b78b8dSLinus Walleij 	PINGROUP(31, gsbi7, usb_fs1_oe, usb_fs1_oe_n, NA, NA, NA, NA, NA, NA, NA, NA),
110769b78b8dSLinus Walleij 	PINGROUP(32, gsbi7, usb_fs1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110869b78b8dSLinus Walleij 	PINGROUP(33, gsbi7, usb_fs1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
110969b78b8dSLinus Walleij 	PINGROUP(34, gsbi8, usb_fs2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111069b78b8dSLinus Walleij 	PINGROUP(35, gsbi8, usb_fs2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111169b78b8dSLinus Walleij 	PINGROUP(36, gsbi8, usb_fs2_oe, usb_fs2_oe_n, gsbi11_spi_cs1a_n, NA, NA, NA, NA, NA, NA, NA),
111269b78b8dSLinus Walleij 	PINGROUP(37, gsbi8, gps_pps_out, gps_pps_in, gsbi11_spi_cs2a_n, gp_clk_2b, NA, NA, NA, NA, NA, NA),
111369b78b8dSLinus Walleij 	PINGROUP(38, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, vfe_camif_timer1_b, NA),
111469b78b8dSLinus Walleij 	PINGROUP(39, gsbi11, gp_pdm_0b, NA, NA, NA, NA, NA, NA, NA, NA, vfe_camif_timer5_b),
111569b78b8dSLinus Walleij 	PINGROUP(40, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111669b78b8dSLinus Walleij 	PINGROUP(41, gsbi11, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111769b78b8dSLinus Walleij 	PINGROUP(42, gsbi12, slimbus2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111869b78b8dSLinus Walleij 	PINGROUP(43, gsbi12, slimbus2, NA, NA, NA, NA, NA, NA, NA, NA, NA),
111969b78b8dSLinus Walleij 	PINGROUP(44, gsbi12, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112069b78b8dSLinus Walleij 	PINGROUP(45, gsbi12, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112169b78b8dSLinus Walleij 	PINGROUP(46, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112269b78b8dSLinus Walleij 	PINGROUP(47, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112369b78b8dSLinus Walleij 	PINGROUP(48, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112469b78b8dSLinus Walleij 	PINGROUP(49, mi2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112569b78b8dSLinus Walleij 	PINGROUP(50, mi2s, slimbus1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112669b78b8dSLinus Walleij 	PINGROUP(51, mi2s, slimbus1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112769b78b8dSLinus Walleij 	PINGROUP(52, mi2s, gp_clk_2a, gsbi2_spi_cs1_n, NA, NA, NA, NA, NA, NA, NA, NA),
112869b78b8dSLinus Walleij 	PINGROUP(53, mi2s, gp_pdm_2b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
112969b78b8dSLinus Walleij 	PINGROUP(54, codec_mic_i2s, gp_clk_0b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113069b78b8dSLinus Walleij 	PINGROUP(55, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113169b78b8dSLinus Walleij 	PINGROUP(56, codec_mic_i2s, gsbi2_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113269b78b8dSLinus Walleij 	PINGROUP(57, codec_mic_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113369b78b8dSLinus Walleij 	PINGROUP(58, codec_mic_i2s, gp_pdm_0a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113469b78b8dSLinus Walleij 	PINGROUP(59, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113569b78b8dSLinus Walleij 	PINGROUP(60, slimbus1, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113669b78b8dSLinus Walleij 	PINGROUP(61, slimbus1, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113769b78b8dSLinus Walleij 	PINGROUP(62, codec_spkr_i2s, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113869b78b8dSLinus Walleij 	PINGROUP(63, audio_pcm, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
113969b78b8dSLinus Walleij 	PINGROUP(64, audio_pcm, gp_pdm_1b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114069b78b8dSLinus Walleij 	PINGROUP(65, audio_pcm, vfe_camif_timer4_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114169b78b8dSLinus Walleij 	PINGROUP(66, audio_pcm, vfe_camif_timer5_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114269b78b8dSLinus Walleij 	PINGROUP(67, spkr_i2s, vfe_camif_timer7_a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114369b78b8dSLinus Walleij 	PINGROUP(68, spkr_i2s, gsbi2_spi_cs2_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114469b78b8dSLinus Walleij 	PINGROUP(69, spkr_i2s, gp_pdm_2a, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114569b78b8dSLinus Walleij 	PINGROUP(70, spkr_i2s, gp_clk_1b, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114669b78b8dSLinus Walleij 	PINGROUP(71, mic_i2s, gsbi10, vfe_camif_timer6_a, NA, NA, NA, NA, NA, NA, NA, NA),
114769b78b8dSLinus Walleij 	PINGROUP(72, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114869b78b8dSLinus Walleij 	PINGROUP(73, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
114969b78b8dSLinus Walleij 	PINGROUP(74, mic_i2s, gsbi10, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115069b78b8dSLinus Walleij 	PINGROUP(75, tsif1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115169b78b8dSLinus Walleij 	PINGROUP(76, tsif1, gsbi11_spi_cs3_n, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115269b78b8dSLinus Walleij 	PINGROUP(77, tsif1, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115369b78b8dSLinus Walleij 	PINGROUP(78, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115469b78b8dSLinus Walleij 	PINGROUP(79, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115569b78b8dSLinus Walleij 	PINGROUP(80, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115669b78b8dSLinus Walleij 	PINGROUP(81, tsif2, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115769b78b8dSLinus Walleij 	PINGROUP(82, tsif1, sdc5, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115869b78b8dSLinus Walleij 	PINGROUP(83, bt, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
115969b78b8dSLinus Walleij 	PINGROUP(84, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116069b78b8dSLinus Walleij 	PINGROUP(85, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116169b78b8dSLinus Walleij 	PINGROUP(86, wlan, sdc4, pmb_clk, NA, NA, NA, NA, NA, NA, NA, NA),
116269b78b8dSLinus Walleij 	PINGROUP(87, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116369b78b8dSLinus Walleij 	PINGROUP(88, wlan, sdc4, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116469b78b8dSLinus Walleij 	PINGROUP(89, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116569b78b8dSLinus Walleij 	PINGROUP(90, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116669b78b8dSLinus Walleij 	PINGROUP(91, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116769b78b8dSLinus Walleij 	PINGROUP(92, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116869b78b8dSLinus Walleij 	PINGROUP(93, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
116969b78b8dSLinus Walleij 	PINGROUP(94, sdc2, gsbi9, gp_pdm_1a, NA, NA, NA, NA, NA, NA, NA, NA),
117069b78b8dSLinus Walleij 	PINGROUP(95, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117169b78b8dSLinus Walleij 	PINGROUP(96, sdc2, gsbi9, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117269b78b8dSLinus Walleij 	PINGROUP(97, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117369b78b8dSLinus Walleij 	PINGROUP(98, sdc2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117469b78b8dSLinus Walleij 	PINGROUP(99, hdmi_cec, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117569b78b8dSLinus Walleij 	PINGROUP(100, hdmi_ddc_clock, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117669b78b8dSLinus Walleij 	PINGROUP(101, hdmi_ddc_data, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117769b78b8dSLinus Walleij 	PINGROUP(102, hdmi_hot_plug_detect, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117869b78b8dSLinus Walleij 	PINGROUP(103, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
117969b78b8dSLinus Walleij 	PINGROUP(104, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118069b78b8dSLinus Walleij 	PINGROUP(105, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118169b78b8dSLinus Walleij 	PINGROUP(106, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118269b78b8dSLinus Walleij 	PINGROUP(107, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118369b78b8dSLinus Walleij 	PINGROUP(108, ps_hold, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118469b78b8dSLinus Walleij 	PINGROUP(109, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118569b78b8dSLinus Walleij 	PINGROUP(110, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118669b78b8dSLinus Walleij 	PINGROUP(111, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118769b78b8dSLinus Walleij 	PINGROUP(112, NA, pmb_clk, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118869b78b8dSLinus Walleij 	PINGROUP(113, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
118969b78b8dSLinus Walleij 	PINGROUP(114, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119069b78b8dSLinus Walleij 	PINGROUP(115, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119169b78b8dSLinus Walleij 	PINGROUP(116, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119269b78b8dSLinus Walleij 	PINGROUP(117, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119369b78b8dSLinus Walleij 	PINGROUP(118, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119469b78b8dSLinus Walleij 	PINGROUP(119, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119569b78b8dSLinus Walleij 	PINGROUP(120, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119669b78b8dSLinus Walleij 	PINGROUP(121, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119769b78b8dSLinus Walleij 	PINGROUP(122, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119869b78b8dSLinus Walleij 	PINGROUP(123, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
119969b78b8dSLinus Walleij 	PINGROUP(124, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120069b78b8dSLinus Walleij 	PINGROUP(125, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120169b78b8dSLinus Walleij 	PINGROUP(126, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120269b78b8dSLinus Walleij 	PINGROUP(127, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120369b78b8dSLinus Walleij 	PINGROUP(128, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120469b78b8dSLinus Walleij 	PINGROUP(129, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120569b78b8dSLinus Walleij 	PINGROUP(130, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120669b78b8dSLinus Walleij 	PINGROUP(131, NA, ssbi_qpa1, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120769b78b8dSLinus Walleij 	PINGROUP(132, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120869b78b8dSLinus Walleij 	PINGROUP(133, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
120969b78b8dSLinus Walleij 	PINGROUP(134, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121069b78b8dSLinus Walleij 	PINGROUP(135, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121169b78b8dSLinus Walleij 	PINGROUP(136, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121269b78b8dSLinus Walleij 	PINGROUP(137, gps_blanking, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121369b78b8dSLinus Walleij 	PINGROUP(138, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121469b78b8dSLinus Walleij 	PINGROUP(139, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121569b78b8dSLinus Walleij 	PINGROUP(140, ssbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121669b78b8dSLinus Walleij 	PINGROUP(141, ssbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121769b78b8dSLinus Walleij 	PINGROUP(142, ssbi2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121869b78b8dSLinus Walleij 	PINGROUP(143, ssbi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
121969b78b8dSLinus Walleij 	PINGROUP(144, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
122069b78b8dSLinus Walleij 	PINGROUP(145, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
122169b78b8dSLinus Walleij 	PINGROUP(146, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
122269b78b8dSLinus Walleij 	PINGROUP(147, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
122369b78b8dSLinus Walleij 	PINGROUP(148, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
122469b78b8dSLinus Walleij 	PINGROUP(149, ssbi_pmic2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
122569b78b8dSLinus Walleij 	PINGROUP(150, hsic, NA, vfe_camif_timer4_b, NA, NA, NA, NA, NA, NA, NA, NA),
122669b78b8dSLinus Walleij 	PINGROUP(151, hsic, NA, vfe_camif_timer3_b, NA, NA, NA, NA, NA, NA, NA, NA),
122769b78b8dSLinus Walleij 
122869b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_clk, 0x20a0, 13, 6),
122969b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_cmd, 0x20a0, 11, 3),
123069b78b8dSLinus Walleij 	SDC_PINGROUP(sdc1_data, 0x20a0, 9, 0),
123169b78b8dSLinus Walleij 
123269b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_clk, 0x20a4, 14, 6),
123369b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_cmd, 0x20a4, 11, 3),
123469b78b8dSLinus Walleij 	SDC_PINGROUP(sdc3_data, 0x20a4, 9, 0),
123569b78b8dSLinus Walleij };
123669b78b8dSLinus Walleij 
123769b78b8dSLinus Walleij #define NUM_GPIO_PINGROUPS 152
123869b78b8dSLinus Walleij 
123969b78b8dSLinus Walleij static const struct msm_pinctrl_soc_data msm8960_pinctrl = {
124069b78b8dSLinus Walleij 	.pins = msm8960_pins,
124169b78b8dSLinus Walleij 	.npins = ARRAY_SIZE(msm8960_pins),
124269b78b8dSLinus Walleij 	.functions = msm8960_functions,
124369b78b8dSLinus Walleij 	.nfunctions = ARRAY_SIZE(msm8960_functions),
124469b78b8dSLinus Walleij 	.groups = msm8960_groups,
124569b78b8dSLinus Walleij 	.ngroups = ARRAY_SIZE(msm8960_groups),
124669b78b8dSLinus Walleij 	.ngpios = NUM_GPIO_PINGROUPS,
124769b78b8dSLinus Walleij };
124869b78b8dSLinus Walleij 
124969b78b8dSLinus Walleij static int msm8960_pinctrl_probe(struct platform_device *pdev)
125069b78b8dSLinus Walleij {
125169b78b8dSLinus Walleij 	return msm_pinctrl_probe(pdev, &msm8960_pinctrl);
125269b78b8dSLinus Walleij }
125369b78b8dSLinus Walleij 
125469b78b8dSLinus Walleij static const struct of_device_id msm8960_pinctrl_of_match[] = {
125569b78b8dSLinus Walleij 	{ .compatible = "qcom,msm8960-pinctrl", },
125669b78b8dSLinus Walleij 	{ },
125769b78b8dSLinus Walleij };
125869b78b8dSLinus Walleij 
125969b78b8dSLinus Walleij static struct platform_driver msm8960_pinctrl_driver = {
126069b78b8dSLinus Walleij 	.driver = {
126169b78b8dSLinus Walleij 		.name = "msm8960-pinctrl",
126269b78b8dSLinus Walleij 		.owner = THIS_MODULE,
126369b78b8dSLinus Walleij 		.of_match_table = msm8960_pinctrl_of_match,
126469b78b8dSLinus Walleij 	},
126569b78b8dSLinus Walleij 	.probe = msm8960_pinctrl_probe,
126669b78b8dSLinus Walleij 	.remove = msm_pinctrl_remove,
126769b78b8dSLinus Walleij };
126869b78b8dSLinus Walleij 
126969b78b8dSLinus Walleij static int __init msm8960_pinctrl_init(void)
127069b78b8dSLinus Walleij {
127169b78b8dSLinus Walleij 	return platform_driver_register(&msm8960_pinctrl_driver);
127269b78b8dSLinus Walleij }
127369b78b8dSLinus Walleij arch_initcall(msm8960_pinctrl_init);
127469b78b8dSLinus Walleij 
127569b78b8dSLinus Walleij static void __exit msm8960_pinctrl_exit(void)
127669b78b8dSLinus Walleij {
127769b78b8dSLinus Walleij 	platform_driver_unregister(&msm8960_pinctrl_driver);
127869b78b8dSLinus Walleij }
127969b78b8dSLinus Walleij module_exit(msm8960_pinctrl_exit);
128069b78b8dSLinus Walleij 
128169b78b8dSLinus Walleij MODULE_AUTHOR("Bjorn Andersson <bjorn.andersson@sonymobile.com>");
128269b78b8dSLinus Walleij MODULE_DESCRIPTION("Qualcomm MSM8960 pinctrl driver");
128369b78b8dSLinus Walleij MODULE_LICENSE("GPL v2");
128469b78b8dSLinus Walleij MODULE_DEVICE_TABLE(of, msm8960_pinctrl_of_match);
1285