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