1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * Copyright (c) 2015, Sony Mobile Communications AB.
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun #include <linux/module.h>
7*4882a593Smuzhiyun #include <linux/of.h>
8*4882a593Smuzhiyun #include <linux/platform_device.h>
9*4882a593Smuzhiyun #include <linux/pinctrl/pinctrl.h>
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun #include "pinctrl-msm.h"
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun static const struct pinctrl_pin_desc msm8660_pins[] = {
14*4882a593Smuzhiyun PINCTRL_PIN(0, "GPIO_0"),
15*4882a593Smuzhiyun PINCTRL_PIN(1, "GPIO_1"),
16*4882a593Smuzhiyun PINCTRL_PIN(2, "GPIO_2"),
17*4882a593Smuzhiyun PINCTRL_PIN(3, "GPIO_3"),
18*4882a593Smuzhiyun PINCTRL_PIN(4, "GPIO_4"),
19*4882a593Smuzhiyun PINCTRL_PIN(5, "GPIO_5"),
20*4882a593Smuzhiyun PINCTRL_PIN(6, "GPIO_6"),
21*4882a593Smuzhiyun PINCTRL_PIN(7, "GPIO_7"),
22*4882a593Smuzhiyun PINCTRL_PIN(8, "GPIO_8"),
23*4882a593Smuzhiyun PINCTRL_PIN(9, "GPIO_9"),
24*4882a593Smuzhiyun PINCTRL_PIN(10, "GPIO_10"),
25*4882a593Smuzhiyun PINCTRL_PIN(11, "GPIO_11"),
26*4882a593Smuzhiyun PINCTRL_PIN(12, "GPIO_12"),
27*4882a593Smuzhiyun PINCTRL_PIN(13, "GPIO_13"),
28*4882a593Smuzhiyun PINCTRL_PIN(14, "GPIO_14"),
29*4882a593Smuzhiyun PINCTRL_PIN(15, "GPIO_15"),
30*4882a593Smuzhiyun PINCTRL_PIN(16, "GPIO_16"),
31*4882a593Smuzhiyun PINCTRL_PIN(17, "GPIO_17"),
32*4882a593Smuzhiyun PINCTRL_PIN(18, "GPIO_18"),
33*4882a593Smuzhiyun PINCTRL_PIN(19, "GPIO_19"),
34*4882a593Smuzhiyun PINCTRL_PIN(20, "GPIO_20"),
35*4882a593Smuzhiyun PINCTRL_PIN(21, "GPIO_21"),
36*4882a593Smuzhiyun PINCTRL_PIN(22, "GPIO_22"),
37*4882a593Smuzhiyun PINCTRL_PIN(23, "GPIO_23"),
38*4882a593Smuzhiyun PINCTRL_PIN(24, "GPIO_24"),
39*4882a593Smuzhiyun PINCTRL_PIN(25, "GPIO_25"),
40*4882a593Smuzhiyun PINCTRL_PIN(26, "GPIO_26"),
41*4882a593Smuzhiyun PINCTRL_PIN(27, "GPIO_27"),
42*4882a593Smuzhiyun PINCTRL_PIN(28, "GPIO_28"),
43*4882a593Smuzhiyun PINCTRL_PIN(29, "GPIO_29"),
44*4882a593Smuzhiyun PINCTRL_PIN(30, "GPIO_30"),
45*4882a593Smuzhiyun PINCTRL_PIN(31, "GPIO_31"),
46*4882a593Smuzhiyun PINCTRL_PIN(32, "GPIO_32"),
47*4882a593Smuzhiyun PINCTRL_PIN(33, "GPIO_33"),
48*4882a593Smuzhiyun PINCTRL_PIN(34, "GPIO_34"),
49*4882a593Smuzhiyun PINCTRL_PIN(35, "GPIO_35"),
50*4882a593Smuzhiyun PINCTRL_PIN(36, "GPIO_36"),
51*4882a593Smuzhiyun PINCTRL_PIN(37, "GPIO_37"),
52*4882a593Smuzhiyun PINCTRL_PIN(38, "GPIO_38"),
53*4882a593Smuzhiyun PINCTRL_PIN(39, "GPIO_39"),
54*4882a593Smuzhiyun PINCTRL_PIN(40, "GPIO_40"),
55*4882a593Smuzhiyun PINCTRL_PIN(41, "GPIO_41"),
56*4882a593Smuzhiyun PINCTRL_PIN(42, "GPIO_42"),
57*4882a593Smuzhiyun PINCTRL_PIN(43, "GPIO_43"),
58*4882a593Smuzhiyun PINCTRL_PIN(44, "GPIO_44"),
59*4882a593Smuzhiyun PINCTRL_PIN(45, "GPIO_45"),
60*4882a593Smuzhiyun PINCTRL_PIN(46, "GPIO_46"),
61*4882a593Smuzhiyun PINCTRL_PIN(47, "GPIO_47"),
62*4882a593Smuzhiyun PINCTRL_PIN(48, "GPIO_48"),
63*4882a593Smuzhiyun PINCTRL_PIN(49, "GPIO_49"),
64*4882a593Smuzhiyun PINCTRL_PIN(50, "GPIO_50"),
65*4882a593Smuzhiyun PINCTRL_PIN(51, "GPIO_51"),
66*4882a593Smuzhiyun PINCTRL_PIN(52, "GPIO_52"),
67*4882a593Smuzhiyun PINCTRL_PIN(53, "GPIO_53"),
68*4882a593Smuzhiyun PINCTRL_PIN(54, "GPIO_54"),
69*4882a593Smuzhiyun PINCTRL_PIN(55, "GPIO_55"),
70*4882a593Smuzhiyun PINCTRL_PIN(56, "GPIO_56"),
71*4882a593Smuzhiyun PINCTRL_PIN(57, "GPIO_57"),
72*4882a593Smuzhiyun PINCTRL_PIN(58, "GPIO_58"),
73*4882a593Smuzhiyun PINCTRL_PIN(59, "GPIO_59"),
74*4882a593Smuzhiyun PINCTRL_PIN(60, "GPIO_60"),
75*4882a593Smuzhiyun PINCTRL_PIN(61, "GPIO_61"),
76*4882a593Smuzhiyun PINCTRL_PIN(62, "GPIO_62"),
77*4882a593Smuzhiyun PINCTRL_PIN(63, "GPIO_63"),
78*4882a593Smuzhiyun PINCTRL_PIN(64, "GPIO_64"),
79*4882a593Smuzhiyun PINCTRL_PIN(65, "GPIO_65"),
80*4882a593Smuzhiyun PINCTRL_PIN(66, "GPIO_66"),
81*4882a593Smuzhiyun PINCTRL_PIN(67, "GPIO_67"),
82*4882a593Smuzhiyun PINCTRL_PIN(68, "GPIO_68"),
83*4882a593Smuzhiyun PINCTRL_PIN(69, "GPIO_69"),
84*4882a593Smuzhiyun PINCTRL_PIN(70, "GPIO_70"),
85*4882a593Smuzhiyun PINCTRL_PIN(71, "GPIO_71"),
86*4882a593Smuzhiyun PINCTRL_PIN(72, "GPIO_72"),
87*4882a593Smuzhiyun PINCTRL_PIN(73, "GPIO_73"),
88*4882a593Smuzhiyun PINCTRL_PIN(74, "GPIO_74"),
89*4882a593Smuzhiyun PINCTRL_PIN(75, "GPIO_75"),
90*4882a593Smuzhiyun PINCTRL_PIN(76, "GPIO_76"),
91*4882a593Smuzhiyun PINCTRL_PIN(77, "GPIO_77"),
92*4882a593Smuzhiyun PINCTRL_PIN(78, "GPIO_78"),
93*4882a593Smuzhiyun PINCTRL_PIN(79, "GPIO_79"),
94*4882a593Smuzhiyun PINCTRL_PIN(80, "GPIO_80"),
95*4882a593Smuzhiyun PINCTRL_PIN(81, "GPIO_81"),
96*4882a593Smuzhiyun PINCTRL_PIN(82, "GPIO_82"),
97*4882a593Smuzhiyun PINCTRL_PIN(83, "GPIO_83"),
98*4882a593Smuzhiyun PINCTRL_PIN(84, "GPIO_84"),
99*4882a593Smuzhiyun PINCTRL_PIN(85, "GPIO_85"),
100*4882a593Smuzhiyun PINCTRL_PIN(86, "GPIO_86"),
101*4882a593Smuzhiyun PINCTRL_PIN(87, "GPIO_87"),
102*4882a593Smuzhiyun PINCTRL_PIN(88, "GPIO_88"),
103*4882a593Smuzhiyun PINCTRL_PIN(89, "GPIO_89"),
104*4882a593Smuzhiyun PINCTRL_PIN(90, "GPIO_90"),
105*4882a593Smuzhiyun PINCTRL_PIN(91, "GPIO_91"),
106*4882a593Smuzhiyun PINCTRL_PIN(92, "GPIO_92"),
107*4882a593Smuzhiyun PINCTRL_PIN(93, "GPIO_93"),
108*4882a593Smuzhiyun PINCTRL_PIN(94, "GPIO_94"),
109*4882a593Smuzhiyun PINCTRL_PIN(95, "GPIO_95"),
110*4882a593Smuzhiyun PINCTRL_PIN(96, "GPIO_96"),
111*4882a593Smuzhiyun PINCTRL_PIN(97, "GPIO_97"),
112*4882a593Smuzhiyun PINCTRL_PIN(98, "GPIO_98"),
113*4882a593Smuzhiyun PINCTRL_PIN(99, "GPIO_99"),
114*4882a593Smuzhiyun PINCTRL_PIN(100, "GPIO_100"),
115*4882a593Smuzhiyun PINCTRL_PIN(101, "GPIO_101"),
116*4882a593Smuzhiyun PINCTRL_PIN(102, "GPIO_102"),
117*4882a593Smuzhiyun PINCTRL_PIN(103, "GPIO_103"),
118*4882a593Smuzhiyun PINCTRL_PIN(104, "GPIO_104"),
119*4882a593Smuzhiyun PINCTRL_PIN(105, "GPIO_105"),
120*4882a593Smuzhiyun PINCTRL_PIN(106, "GPIO_106"),
121*4882a593Smuzhiyun PINCTRL_PIN(107, "GPIO_107"),
122*4882a593Smuzhiyun PINCTRL_PIN(108, "GPIO_108"),
123*4882a593Smuzhiyun PINCTRL_PIN(109, "GPIO_109"),
124*4882a593Smuzhiyun PINCTRL_PIN(110, "GPIO_110"),
125*4882a593Smuzhiyun PINCTRL_PIN(111, "GPIO_111"),
126*4882a593Smuzhiyun PINCTRL_PIN(112, "GPIO_112"),
127*4882a593Smuzhiyun PINCTRL_PIN(113, "GPIO_113"),
128*4882a593Smuzhiyun PINCTRL_PIN(114, "GPIO_114"),
129*4882a593Smuzhiyun PINCTRL_PIN(115, "GPIO_115"),
130*4882a593Smuzhiyun PINCTRL_PIN(116, "GPIO_116"),
131*4882a593Smuzhiyun PINCTRL_PIN(117, "GPIO_117"),
132*4882a593Smuzhiyun PINCTRL_PIN(118, "GPIO_118"),
133*4882a593Smuzhiyun PINCTRL_PIN(119, "GPIO_119"),
134*4882a593Smuzhiyun PINCTRL_PIN(120, "GPIO_120"),
135*4882a593Smuzhiyun PINCTRL_PIN(121, "GPIO_121"),
136*4882a593Smuzhiyun PINCTRL_PIN(122, "GPIO_122"),
137*4882a593Smuzhiyun PINCTRL_PIN(123, "GPIO_123"),
138*4882a593Smuzhiyun PINCTRL_PIN(124, "GPIO_124"),
139*4882a593Smuzhiyun PINCTRL_PIN(125, "GPIO_125"),
140*4882a593Smuzhiyun PINCTRL_PIN(126, "GPIO_126"),
141*4882a593Smuzhiyun PINCTRL_PIN(127, "GPIO_127"),
142*4882a593Smuzhiyun PINCTRL_PIN(128, "GPIO_128"),
143*4882a593Smuzhiyun PINCTRL_PIN(129, "GPIO_129"),
144*4882a593Smuzhiyun PINCTRL_PIN(130, "GPIO_130"),
145*4882a593Smuzhiyun PINCTRL_PIN(131, "GPIO_131"),
146*4882a593Smuzhiyun PINCTRL_PIN(132, "GPIO_132"),
147*4882a593Smuzhiyun PINCTRL_PIN(133, "GPIO_133"),
148*4882a593Smuzhiyun PINCTRL_PIN(134, "GPIO_134"),
149*4882a593Smuzhiyun PINCTRL_PIN(135, "GPIO_135"),
150*4882a593Smuzhiyun PINCTRL_PIN(136, "GPIO_136"),
151*4882a593Smuzhiyun PINCTRL_PIN(137, "GPIO_137"),
152*4882a593Smuzhiyun PINCTRL_PIN(138, "GPIO_138"),
153*4882a593Smuzhiyun PINCTRL_PIN(139, "GPIO_139"),
154*4882a593Smuzhiyun PINCTRL_PIN(140, "GPIO_140"),
155*4882a593Smuzhiyun PINCTRL_PIN(141, "GPIO_141"),
156*4882a593Smuzhiyun PINCTRL_PIN(142, "GPIO_142"),
157*4882a593Smuzhiyun PINCTRL_PIN(143, "GPIO_143"),
158*4882a593Smuzhiyun PINCTRL_PIN(144, "GPIO_144"),
159*4882a593Smuzhiyun PINCTRL_PIN(145, "GPIO_145"),
160*4882a593Smuzhiyun PINCTRL_PIN(146, "GPIO_146"),
161*4882a593Smuzhiyun PINCTRL_PIN(147, "GPIO_147"),
162*4882a593Smuzhiyun PINCTRL_PIN(148, "GPIO_148"),
163*4882a593Smuzhiyun PINCTRL_PIN(149, "GPIO_149"),
164*4882a593Smuzhiyun PINCTRL_PIN(150, "GPIO_150"),
165*4882a593Smuzhiyun PINCTRL_PIN(151, "GPIO_151"),
166*4882a593Smuzhiyun PINCTRL_PIN(152, "GPIO_152"),
167*4882a593Smuzhiyun PINCTRL_PIN(153, "GPIO_153"),
168*4882a593Smuzhiyun PINCTRL_PIN(154, "GPIO_154"),
169*4882a593Smuzhiyun PINCTRL_PIN(155, "GPIO_155"),
170*4882a593Smuzhiyun PINCTRL_PIN(156, "GPIO_156"),
171*4882a593Smuzhiyun PINCTRL_PIN(157, "GPIO_157"),
172*4882a593Smuzhiyun PINCTRL_PIN(158, "GPIO_158"),
173*4882a593Smuzhiyun PINCTRL_PIN(159, "GPIO_159"),
174*4882a593Smuzhiyun PINCTRL_PIN(160, "GPIO_160"),
175*4882a593Smuzhiyun PINCTRL_PIN(161, "GPIO_161"),
176*4882a593Smuzhiyun PINCTRL_PIN(162, "GPIO_162"),
177*4882a593Smuzhiyun PINCTRL_PIN(163, "GPIO_163"),
178*4882a593Smuzhiyun PINCTRL_PIN(164, "GPIO_164"),
179*4882a593Smuzhiyun PINCTRL_PIN(165, "GPIO_165"),
180*4882a593Smuzhiyun PINCTRL_PIN(166, "GPIO_166"),
181*4882a593Smuzhiyun PINCTRL_PIN(167, "GPIO_167"),
182*4882a593Smuzhiyun PINCTRL_PIN(168, "GPIO_168"),
183*4882a593Smuzhiyun PINCTRL_PIN(169, "GPIO_169"),
184*4882a593Smuzhiyun PINCTRL_PIN(170, "GPIO_170"),
185*4882a593Smuzhiyun PINCTRL_PIN(171, "GPIO_171"),
186*4882a593Smuzhiyun PINCTRL_PIN(172, "GPIO_172"),
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun PINCTRL_PIN(173, "SDC4_CLK"),
189*4882a593Smuzhiyun PINCTRL_PIN(174, "SDC4_CMD"),
190*4882a593Smuzhiyun PINCTRL_PIN(175, "SDC4_DATA"),
191*4882a593Smuzhiyun PINCTRL_PIN(176, "SDC3_CLK"),
192*4882a593Smuzhiyun PINCTRL_PIN(177, "SDC3_CMD"),
193*4882a593Smuzhiyun PINCTRL_PIN(178, "SDC3_DATA"),
194*4882a593Smuzhiyun };
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun #define DECLARE_MSM_GPIO_PIN(pin) static const unsigned int gpio##pin##_pins[] = { pin }
197*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(0);
198*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(1);
199*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(2);
200*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(3);
201*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(4);
202*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(5);
203*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(6);
204*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(7);
205*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(8);
206*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(9);
207*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(10);
208*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(11);
209*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(12);
210*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(13);
211*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(14);
212*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(15);
213*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(16);
214*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(17);
215*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(18);
216*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(19);
217*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(20);
218*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(21);
219*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(22);
220*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(23);
221*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(24);
222*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(25);
223*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(26);
224*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(27);
225*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(28);
226*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(29);
227*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(30);
228*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(31);
229*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(32);
230*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(33);
231*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(34);
232*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(35);
233*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(36);
234*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(37);
235*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(38);
236*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(39);
237*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(40);
238*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(41);
239*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(42);
240*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(43);
241*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(44);
242*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(45);
243*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(46);
244*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(47);
245*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(48);
246*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(49);
247*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(50);
248*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(51);
249*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(52);
250*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(53);
251*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(54);
252*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(55);
253*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(56);
254*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(57);
255*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(58);
256*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(59);
257*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(60);
258*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(61);
259*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(62);
260*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(63);
261*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(64);
262*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(65);
263*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(66);
264*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(67);
265*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(68);
266*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(69);
267*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(70);
268*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(71);
269*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(72);
270*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(73);
271*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(74);
272*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(75);
273*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(76);
274*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(77);
275*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(78);
276*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(79);
277*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(80);
278*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(81);
279*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(82);
280*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(83);
281*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(84);
282*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(85);
283*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(86);
284*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(87);
285*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(88);
286*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(89);
287*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(90);
288*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(91);
289*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(92);
290*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(93);
291*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(94);
292*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(95);
293*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(96);
294*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(97);
295*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(98);
296*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(99);
297*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(100);
298*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(101);
299*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(102);
300*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(103);
301*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(104);
302*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(105);
303*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(106);
304*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(107);
305*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(108);
306*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(109);
307*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(110);
308*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(111);
309*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(112);
310*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(113);
311*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(114);
312*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(115);
313*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(116);
314*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(117);
315*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(118);
316*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(119);
317*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(120);
318*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(121);
319*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(122);
320*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(123);
321*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(124);
322*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(125);
323*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(126);
324*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(127);
325*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(128);
326*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(129);
327*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(130);
328*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(131);
329*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(132);
330*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(133);
331*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(134);
332*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(135);
333*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(136);
334*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(137);
335*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(138);
336*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(139);
337*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(140);
338*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(141);
339*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(142);
340*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(143);
341*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(144);
342*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(145);
343*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(146);
344*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(147);
345*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(148);
346*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(149);
347*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(150);
348*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(151);
349*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(152);
350*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(153);
351*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(154);
352*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(155);
353*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(156);
354*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(157);
355*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(158);
356*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(159);
357*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(160);
358*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(161);
359*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(162);
360*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(163);
361*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(164);
362*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(165);
363*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(166);
364*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(167);
365*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(168);
366*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(169);
367*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(170);
368*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(171);
369*4882a593Smuzhiyun DECLARE_MSM_GPIO_PIN(172);
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun static const unsigned int sdc4_clk_pins[] = { 173 };
372*4882a593Smuzhiyun static const unsigned int sdc4_cmd_pins[] = { 174 };
373*4882a593Smuzhiyun static const unsigned int sdc4_data_pins[] = { 175 };
374*4882a593Smuzhiyun static const unsigned int sdc3_clk_pins[] = { 176 };
375*4882a593Smuzhiyun static const unsigned int sdc3_cmd_pins[] = { 177 };
376*4882a593Smuzhiyun static const unsigned int sdc3_data_pins[] = { 178 };
377*4882a593Smuzhiyun
378*4882a593Smuzhiyun #define FUNCTION(fname) \
379*4882a593Smuzhiyun [MSM_MUX_##fname] = { \
380*4882a593Smuzhiyun .name = #fname, \
381*4882a593Smuzhiyun .groups = fname##_groups, \
382*4882a593Smuzhiyun .ngroups = ARRAY_SIZE(fname##_groups), \
383*4882a593Smuzhiyun }
384*4882a593Smuzhiyun
385*4882a593Smuzhiyun #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7) \
386*4882a593Smuzhiyun { \
387*4882a593Smuzhiyun .name = "gpio" #id, \
388*4882a593Smuzhiyun .pins = gpio##id##_pins, \
389*4882a593Smuzhiyun .npins = ARRAY_SIZE(gpio##id##_pins), \
390*4882a593Smuzhiyun .funcs = (int[]){ \
391*4882a593Smuzhiyun MSM_MUX_gpio, \
392*4882a593Smuzhiyun MSM_MUX_##f1, \
393*4882a593Smuzhiyun MSM_MUX_##f2, \
394*4882a593Smuzhiyun MSM_MUX_##f3, \
395*4882a593Smuzhiyun MSM_MUX_##f4, \
396*4882a593Smuzhiyun MSM_MUX_##f5, \
397*4882a593Smuzhiyun MSM_MUX_##f6, \
398*4882a593Smuzhiyun MSM_MUX_##f7, \
399*4882a593Smuzhiyun }, \
400*4882a593Smuzhiyun .nfuncs = 8, \
401*4882a593Smuzhiyun .ctl_reg = 0x1000 + 0x10 * id, \
402*4882a593Smuzhiyun .io_reg = 0x1004 + 0x10 * id, \
403*4882a593Smuzhiyun .intr_cfg_reg = 0x1008 + 0x10 * id, \
404*4882a593Smuzhiyun .intr_status_reg = 0x100c + 0x10 * id, \
405*4882a593Smuzhiyun .intr_target_reg = 0x400 + 0x4 * id, \
406*4882a593Smuzhiyun .mux_bit = 2, \
407*4882a593Smuzhiyun .pull_bit = 0, \
408*4882a593Smuzhiyun .drv_bit = 6, \
409*4882a593Smuzhiyun .oe_bit = 9, \
410*4882a593Smuzhiyun .in_bit = 0, \
411*4882a593Smuzhiyun .out_bit = 1, \
412*4882a593Smuzhiyun .intr_enable_bit = 0, \
413*4882a593Smuzhiyun .intr_status_bit = 0, \
414*4882a593Smuzhiyun .intr_ack_high = 1, \
415*4882a593Smuzhiyun .intr_target_bit = 0, \
416*4882a593Smuzhiyun .intr_target_kpss_val = 4, \
417*4882a593Smuzhiyun .intr_raw_status_bit = 3, \
418*4882a593Smuzhiyun .intr_polarity_bit = 1, \
419*4882a593Smuzhiyun .intr_detection_bit = 2, \
420*4882a593Smuzhiyun .intr_detection_width = 1, \
421*4882a593Smuzhiyun }
422*4882a593Smuzhiyun
423*4882a593Smuzhiyun #define SDC_PINGROUP(pg_name, ctl, pull, drv) \
424*4882a593Smuzhiyun { \
425*4882a593Smuzhiyun .name = #pg_name, \
426*4882a593Smuzhiyun .pins = pg_name##_pins, \
427*4882a593Smuzhiyun .npins = ARRAY_SIZE(pg_name##_pins), \
428*4882a593Smuzhiyun .ctl_reg = ctl, \
429*4882a593Smuzhiyun .io_reg = 0, \
430*4882a593Smuzhiyun .intr_cfg_reg = 0, \
431*4882a593Smuzhiyun .intr_status_reg = 0, \
432*4882a593Smuzhiyun .intr_target_reg = 0, \
433*4882a593Smuzhiyun .mux_bit = -1, \
434*4882a593Smuzhiyun .pull_bit = pull, \
435*4882a593Smuzhiyun .drv_bit = drv, \
436*4882a593Smuzhiyun .oe_bit = -1, \
437*4882a593Smuzhiyun .in_bit = -1, \
438*4882a593Smuzhiyun .out_bit = -1, \
439*4882a593Smuzhiyun .intr_enable_bit = -1, \
440*4882a593Smuzhiyun .intr_status_bit = -1, \
441*4882a593Smuzhiyun .intr_target_bit = -1, \
442*4882a593Smuzhiyun .intr_target_kpss_val = -1, \
443*4882a593Smuzhiyun .intr_raw_status_bit = -1, \
444*4882a593Smuzhiyun .intr_polarity_bit = -1, \
445*4882a593Smuzhiyun .intr_detection_bit = -1, \
446*4882a593Smuzhiyun .intr_detection_width = -1, \
447*4882a593Smuzhiyun }
448*4882a593Smuzhiyun
449*4882a593Smuzhiyun enum msm8660_functions {
450*4882a593Smuzhiyun MSM_MUX_gpio,
451*4882a593Smuzhiyun MSM_MUX_cam_mclk,
452*4882a593Smuzhiyun MSM_MUX_dsub,
453*4882a593Smuzhiyun MSM_MUX_ext_gps,
454*4882a593Smuzhiyun MSM_MUX_gp_clk_0a,
455*4882a593Smuzhiyun MSM_MUX_gp_clk_0b,
456*4882a593Smuzhiyun MSM_MUX_gp_clk_1a,
457*4882a593Smuzhiyun MSM_MUX_gp_clk_1b,
458*4882a593Smuzhiyun MSM_MUX_gp_clk_2a,
459*4882a593Smuzhiyun MSM_MUX_gp_clk_2b,
460*4882a593Smuzhiyun MSM_MUX_gp_mn,
461*4882a593Smuzhiyun MSM_MUX_gsbi1,
462*4882a593Smuzhiyun MSM_MUX_gsbi1_spi_cs1_n,
463*4882a593Smuzhiyun MSM_MUX_gsbi1_spi_cs2a_n,
464*4882a593Smuzhiyun MSM_MUX_gsbi1_spi_cs2b_n,
465*4882a593Smuzhiyun MSM_MUX_gsbi1_spi_cs3_n,
466*4882a593Smuzhiyun MSM_MUX_gsbi2,
467*4882a593Smuzhiyun MSM_MUX_gsbi2_spi_cs1_n,
468*4882a593Smuzhiyun MSM_MUX_gsbi2_spi_cs2_n,
469*4882a593Smuzhiyun MSM_MUX_gsbi2_spi_cs3_n,
470*4882a593Smuzhiyun MSM_MUX_gsbi3,
471*4882a593Smuzhiyun MSM_MUX_gsbi3_spi_cs1_n,
472*4882a593Smuzhiyun MSM_MUX_gsbi3_spi_cs2_n,
473*4882a593Smuzhiyun MSM_MUX_gsbi3_spi_cs3_n,
474*4882a593Smuzhiyun MSM_MUX_gsbi4,
475*4882a593Smuzhiyun MSM_MUX_gsbi5,
476*4882a593Smuzhiyun MSM_MUX_gsbi6,
477*4882a593Smuzhiyun MSM_MUX_gsbi7,
478*4882a593Smuzhiyun MSM_MUX_gsbi8,
479*4882a593Smuzhiyun MSM_MUX_gsbi9,
480*4882a593Smuzhiyun MSM_MUX_gsbi10,
481*4882a593Smuzhiyun MSM_MUX_gsbi11,
482*4882a593Smuzhiyun MSM_MUX_gsbi12,
483*4882a593Smuzhiyun MSM_MUX_hdmi,
484*4882a593Smuzhiyun MSM_MUX_i2s,
485*4882a593Smuzhiyun MSM_MUX_lcdc,
486*4882a593Smuzhiyun MSM_MUX_mdp_vsync,
487*4882a593Smuzhiyun MSM_MUX_mi2s,
488*4882a593Smuzhiyun MSM_MUX_pcm,
489*4882a593Smuzhiyun MSM_MUX_ps_hold,
490*4882a593Smuzhiyun MSM_MUX_sdc1,
491*4882a593Smuzhiyun MSM_MUX_sdc2,
492*4882a593Smuzhiyun MSM_MUX_sdc5,
493*4882a593Smuzhiyun MSM_MUX_tsif1,
494*4882a593Smuzhiyun MSM_MUX_tsif2,
495*4882a593Smuzhiyun MSM_MUX_usb_fs1,
496*4882a593Smuzhiyun MSM_MUX_usb_fs1_oe_n,
497*4882a593Smuzhiyun MSM_MUX_usb_fs2,
498*4882a593Smuzhiyun MSM_MUX_usb_fs2_oe_n,
499*4882a593Smuzhiyun MSM_MUX_vfe,
500*4882a593Smuzhiyun MSM_MUX_vsens_alarm,
501*4882a593Smuzhiyun MSM_MUX_ebi2cs,
502*4882a593Smuzhiyun MSM_MUX_ebi2,
503*4882a593Smuzhiyun MSM_MUX__,
504*4882a593Smuzhiyun };
505*4882a593Smuzhiyun
506*4882a593Smuzhiyun static const char * const gpio_groups[] = {
507*4882a593Smuzhiyun "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
508*4882a593Smuzhiyun "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
509*4882a593Smuzhiyun "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
510*4882a593Smuzhiyun "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
511*4882a593Smuzhiyun "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
512*4882a593Smuzhiyun "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
513*4882a593Smuzhiyun "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
514*4882a593Smuzhiyun "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
515*4882a593Smuzhiyun "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
516*4882a593Smuzhiyun "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
517*4882a593Smuzhiyun "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
518*4882a593Smuzhiyun "gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
519*4882a593Smuzhiyun "gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91",
520*4882a593Smuzhiyun "gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98",
521*4882a593Smuzhiyun "gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104",
522*4882a593Smuzhiyun "gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110",
523*4882a593Smuzhiyun "gpio111", "gpio112", "gpio113", "gpio114", "gpio115", "gpio116",
524*4882a593Smuzhiyun "gpio117", "gpio118", "gpio119", "gpio120", "gpio121", "gpio122",
525*4882a593Smuzhiyun "gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128",
526*4882a593Smuzhiyun "gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134",
527*4882a593Smuzhiyun "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140",
528*4882a593Smuzhiyun "gpio141", "gpio142", "gpio143", "gpio144", "gpio145", "gpio146",
529*4882a593Smuzhiyun "gpio147", "gpio148", "gpio149", "gpio150", "gpio151", "gpio152",
530*4882a593Smuzhiyun "gpio153", "gpio154", "gpio155", "gpio156", "gpio157", "gpio158",
531*4882a593Smuzhiyun "gpio159", "gpio160", "gpio161", "gpio162", "gpio163", "gpio164",
532*4882a593Smuzhiyun "gpio165", "gpio166", "gpio167", "gpio168", "gpio169", "gpio170",
533*4882a593Smuzhiyun "gpio171", "gpio172"
534*4882a593Smuzhiyun };
535*4882a593Smuzhiyun
536*4882a593Smuzhiyun static const char * const cam_mclk_groups[] = {
537*4882a593Smuzhiyun "gpio32"
538*4882a593Smuzhiyun };
539*4882a593Smuzhiyun static const char * const dsub_groups[] = {
540*4882a593Smuzhiyun "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
541*4882a593Smuzhiyun "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
542*4882a593Smuzhiyun "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
543*4882a593Smuzhiyun "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27"
544*4882a593Smuzhiyun };
545*4882a593Smuzhiyun static const char * const ext_gps_groups[] = {
546*4882a593Smuzhiyun "gpio66", "gpio67", "gpio68", "gpio69"
547*4882a593Smuzhiyun };
548*4882a593Smuzhiyun static const char * const gp_clk_0a_groups[] = {
549*4882a593Smuzhiyun "gpio30"
550*4882a593Smuzhiyun };
551*4882a593Smuzhiyun static const char * const gp_clk_0b_groups[] = {
552*4882a593Smuzhiyun "gpio115"
553*4882a593Smuzhiyun };
554*4882a593Smuzhiyun static const char * const gp_clk_1a_groups[] = {
555*4882a593Smuzhiyun "gpio31"
556*4882a593Smuzhiyun };
557*4882a593Smuzhiyun static const char * const gp_clk_1b_groups[] = {
558*4882a593Smuzhiyun "gpio122"
559*4882a593Smuzhiyun };
560*4882a593Smuzhiyun static const char * const gp_clk_2a_groups[] = {
561*4882a593Smuzhiyun "gpio103"
562*4882a593Smuzhiyun };
563*4882a593Smuzhiyun static const char * const gp_clk_2b_groups[] = {
564*4882a593Smuzhiyun "gpio70"
565*4882a593Smuzhiyun };
566*4882a593Smuzhiyun static const char * const gp_mn_groups[] = {
567*4882a593Smuzhiyun "gpio29"
568*4882a593Smuzhiyun };
569*4882a593Smuzhiyun static const char * const gsbi1_groups[] = {
570*4882a593Smuzhiyun "gpio33", "gpio34", "gpio35", "gpio36"
571*4882a593Smuzhiyun };
572*4882a593Smuzhiyun static const char * const gsbi1_spi_cs1_n_groups[] = {
573*4882a593Smuzhiyun };
574*4882a593Smuzhiyun static const char * const gsbi1_spi_cs2a_n_groups[] = {
575*4882a593Smuzhiyun };
576*4882a593Smuzhiyun static const char * const gsbi1_spi_cs2b_n_groups[] = {
577*4882a593Smuzhiyun };
578*4882a593Smuzhiyun static const char * const gsbi1_spi_cs3_n_groups[] = {
579*4882a593Smuzhiyun };
580*4882a593Smuzhiyun static const char * const gsbi2_groups[] = {
581*4882a593Smuzhiyun "gpio37", "gpio38", "gpio39", "gpio40"
582*4882a593Smuzhiyun };
583*4882a593Smuzhiyun static const char * const gsbi2_spi_cs1_n_groups[] = {
584*4882a593Smuzhiyun "gpio123"
585*4882a593Smuzhiyun };
586*4882a593Smuzhiyun static const char * const gsbi2_spi_cs2_n_groups[] = {
587*4882a593Smuzhiyun "gpio124"
588*4882a593Smuzhiyun };
589*4882a593Smuzhiyun static const char * const gsbi2_spi_cs3_n_groups[] = {
590*4882a593Smuzhiyun "gpio125"
591*4882a593Smuzhiyun };
592*4882a593Smuzhiyun static const char * const gsbi3_groups[] = {
593*4882a593Smuzhiyun "gpio41", "gpio42", "gpio43", "gpio44"
594*4882a593Smuzhiyun };
595*4882a593Smuzhiyun static const char * const gsbi3_spi_cs1_n_groups[] = {
596*4882a593Smuzhiyun "gpio62"
597*4882a593Smuzhiyun };
598*4882a593Smuzhiyun static const char * const gsbi3_spi_cs2_n_groups[] = {
599*4882a593Smuzhiyun "gpio45"
600*4882a593Smuzhiyun };
601*4882a593Smuzhiyun static const char * const gsbi3_spi_cs3_n_groups[] = {
602*4882a593Smuzhiyun "gpio46"
603*4882a593Smuzhiyun };
604*4882a593Smuzhiyun static const char * const gsbi4_groups[] = {
605*4882a593Smuzhiyun "gpio45", "gpio56", "gpio47", "gpio48"
606*4882a593Smuzhiyun };
607*4882a593Smuzhiyun static const char * const gsbi5_groups[] = {
608*4882a593Smuzhiyun "gpio49", "gpio50", "gpio51", "gpio52"
609*4882a593Smuzhiyun };
610*4882a593Smuzhiyun static const char * const gsbi6_groups[] = {
611*4882a593Smuzhiyun "gpio53", "gpio54", "gpio55", "gpio56"
612*4882a593Smuzhiyun };
613*4882a593Smuzhiyun static const char * const gsbi7_groups[] = {
614*4882a593Smuzhiyun "gpio57", "gpio58", "gpio59", "gpio60"
615*4882a593Smuzhiyun };
616*4882a593Smuzhiyun static const char * const gsbi8_groups[] = {
617*4882a593Smuzhiyun "gpio62", "gpio63", "gpio64", "gpio65"
618*4882a593Smuzhiyun };
619*4882a593Smuzhiyun static const char * const gsbi9_groups[] = {
620*4882a593Smuzhiyun "gpio66", "gpio67", "gpio68", "gpio69"
621*4882a593Smuzhiyun };
622*4882a593Smuzhiyun static const char * const gsbi10_groups[] = {
623*4882a593Smuzhiyun "gpio70", "gpio71", "gpio72", "gpio73"
624*4882a593Smuzhiyun };
625*4882a593Smuzhiyun static const char * const gsbi11_groups[] = {
626*4882a593Smuzhiyun "gpio103", "gpio104", "gpio105", "gpio106"
627*4882a593Smuzhiyun };
628*4882a593Smuzhiyun static const char * const gsbi12_groups[] = {
629*4882a593Smuzhiyun "gpio115", "gpio116", "gpio117", "gpio118"
630*4882a593Smuzhiyun };
631*4882a593Smuzhiyun static const char * const hdmi_groups[] = {
632*4882a593Smuzhiyun "gpio169", "gpio170", "gpio171", "gpio172"
633*4882a593Smuzhiyun };
634*4882a593Smuzhiyun static const char * const i2s_groups[] = {
635*4882a593Smuzhiyun "gpio108", "gpio109", "gpio110", "gpio115", "gpio116", "gpio117",
636*4882a593Smuzhiyun "gpio118", "gpio119", "gpio120", "gpio121", "gpio122"
637*4882a593Smuzhiyun };
638*4882a593Smuzhiyun static const char * const lcdc_groups[] = {
639*4882a593Smuzhiyun "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
640*4882a593Smuzhiyun "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
641*4882a593Smuzhiyun "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
642*4882a593Smuzhiyun "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27"
643*4882a593Smuzhiyun };
644*4882a593Smuzhiyun static const char * const mdp_vsync_groups[] = {
645*4882a593Smuzhiyun "gpio28", "gpio39", "gpio41"
646*4882a593Smuzhiyun };
647*4882a593Smuzhiyun static const char * const mi2s_groups[] = {
648*4882a593Smuzhiyun "gpio101", "gpio102", "gpio103", "gpio104", "gpio105", "gpio106",
649*4882a593Smuzhiyun "gpio107"
650*4882a593Smuzhiyun };
651*4882a593Smuzhiyun static const char * const pcm_groups[] = {
652*4882a593Smuzhiyun "gpio111", "gpio112", "gpio113", "gpio114"
653*4882a593Smuzhiyun };
654*4882a593Smuzhiyun static const char * const ps_hold_groups[] = {
655*4882a593Smuzhiyun "gpio92"
656*4882a593Smuzhiyun };
657*4882a593Smuzhiyun static const char * const sdc1_groups[] = {
658*4882a593Smuzhiyun "gpio159", "gpio160", "gpio161", "gpio162", "gpio163", "gpio164",
659*4882a593Smuzhiyun "gpio165", "gpio166", "gpio167", "gpio168"
660*4882a593Smuzhiyun };
661*4882a593Smuzhiyun static const char * const sdc2_groups[] = {
662*4882a593Smuzhiyun "gpio143", "gpio144", "gpio145", "gpio146", "gpio147", "gpio148",
663*4882a593Smuzhiyun "gpio149", "gpio150", "gpio151", "gpio152"
664*4882a593Smuzhiyun };
665*4882a593Smuzhiyun static const char * const sdc5_groups[] = {
666*4882a593Smuzhiyun "gpio95", "gpio96", "gpio97", "gpio98", "gpio99", "gpio100"
667*4882a593Smuzhiyun };
668*4882a593Smuzhiyun static const char * const tsif1_groups[] = {
669*4882a593Smuzhiyun "gpio93", "gpio94", "gpio95", "gpio96"
670*4882a593Smuzhiyun };
671*4882a593Smuzhiyun static const char * const tsif2_groups[] = {
672*4882a593Smuzhiyun "gpio97", "gpio98", "gpio99", "gpio100"
673*4882a593Smuzhiyun };
674*4882a593Smuzhiyun static const char * const usb_fs1_groups[] = {
675*4882a593Smuzhiyun "gpio49", "gpio50", "gpio51"
676*4882a593Smuzhiyun };
677*4882a593Smuzhiyun static const char * const usb_fs1_oe_n_groups[] = {
678*4882a593Smuzhiyun "gpio51"
679*4882a593Smuzhiyun };
680*4882a593Smuzhiyun static const char * const usb_fs2_groups[] = {
681*4882a593Smuzhiyun "gpio71", "gpio72", "gpio73"
682*4882a593Smuzhiyun };
683*4882a593Smuzhiyun static const char * const usb_fs2_oe_n_groups[] = {
684*4882a593Smuzhiyun "gpio73"
685*4882a593Smuzhiyun };
686*4882a593Smuzhiyun static const char * const vfe_groups[] = {
687*4882a593Smuzhiyun "gpio29", "gpio30", "gpio31", "gpio42", "gpio46", "gpio105", "gpio106",
688*4882a593Smuzhiyun "gpio117"
689*4882a593Smuzhiyun };
690*4882a593Smuzhiyun static const char * const vsens_alarm_groups[] = {
691*4882a593Smuzhiyun "gpio127"
692*4882a593Smuzhiyun };
693*4882a593Smuzhiyun static const char * const ebi2cs_groups[] = {
694*4882a593Smuzhiyun "gpio39", /* CS1A */
695*4882a593Smuzhiyun "gpio40", /* CS2A */
696*4882a593Smuzhiyun "gpio123", /* CS1B */
697*4882a593Smuzhiyun "gpio124", /* CS2B */
698*4882a593Smuzhiyun "gpio131", /* CS5 */
699*4882a593Smuzhiyun "gpio132", /* CS4 */
700*4882a593Smuzhiyun "gpio133", /* CS3 */
701*4882a593Smuzhiyun "gpio134", /* CS0 */
702*4882a593Smuzhiyun };
703*4882a593Smuzhiyun static const char * const ebi2_groups[] = {
704*4882a593Smuzhiyun /* ADDR9 & ADDR8 */
705*4882a593Smuzhiyun "gpio37", "gpio38",
706*4882a593Smuzhiyun /* ADDR7 - ADDR 0 */
707*4882a593Smuzhiyun "gpio123", "gpio124", "gpio125", "gpio126",
708*4882a593Smuzhiyun "gpio127", "gpio128", "gpio129", "gpio130",
709*4882a593Smuzhiyun /* (muxed address+data) AD15 - AD0 */
710*4882a593Smuzhiyun "gpio135", "gpio136", "gpio137", "gpio138", "gpio139",
711*4882a593Smuzhiyun "gpio140", "gpio141", "gpio142", "gpio143", "gpio144",
712*4882a593Smuzhiyun "gpio145", "gpio146", "gpio147", "gpio148", "gpio149",
713*4882a593Smuzhiyun "gpio150",
714*4882a593Smuzhiyun "gpio151", /* OE output enable */
715*4882a593Smuzhiyun "gpio152", /* clock */
716*4882a593Smuzhiyun "gpio153", /* ADV */
717*4882a593Smuzhiyun "gpio154", /* WAIT (input) */
718*4882a593Smuzhiyun "gpio155", /* UB Upper Byte Enable */
719*4882a593Smuzhiyun "gpio156", /* LB Lower Byte Enable */
720*4882a593Smuzhiyun "gpio157", /* WE Write Enable */
721*4882a593Smuzhiyun "gpio158", /* busy */
722*4882a593Smuzhiyun };
723*4882a593Smuzhiyun
724*4882a593Smuzhiyun static const struct msm_function msm8660_functions[] = {
725*4882a593Smuzhiyun FUNCTION(gpio),
726*4882a593Smuzhiyun FUNCTION(cam_mclk),
727*4882a593Smuzhiyun FUNCTION(dsub),
728*4882a593Smuzhiyun FUNCTION(ext_gps),
729*4882a593Smuzhiyun FUNCTION(gp_clk_0a),
730*4882a593Smuzhiyun FUNCTION(gp_clk_0b),
731*4882a593Smuzhiyun FUNCTION(gp_clk_1a),
732*4882a593Smuzhiyun FUNCTION(gp_clk_1b),
733*4882a593Smuzhiyun FUNCTION(gp_clk_2a),
734*4882a593Smuzhiyun FUNCTION(gp_clk_2b),
735*4882a593Smuzhiyun FUNCTION(gp_mn),
736*4882a593Smuzhiyun FUNCTION(gsbi1),
737*4882a593Smuzhiyun FUNCTION(gsbi1_spi_cs1_n),
738*4882a593Smuzhiyun FUNCTION(gsbi1_spi_cs2a_n),
739*4882a593Smuzhiyun FUNCTION(gsbi1_spi_cs2b_n),
740*4882a593Smuzhiyun FUNCTION(gsbi1_spi_cs3_n),
741*4882a593Smuzhiyun FUNCTION(gsbi2),
742*4882a593Smuzhiyun FUNCTION(gsbi2_spi_cs1_n),
743*4882a593Smuzhiyun FUNCTION(gsbi2_spi_cs2_n),
744*4882a593Smuzhiyun FUNCTION(gsbi2_spi_cs3_n),
745*4882a593Smuzhiyun FUNCTION(gsbi3),
746*4882a593Smuzhiyun FUNCTION(gsbi3_spi_cs1_n),
747*4882a593Smuzhiyun FUNCTION(gsbi3_spi_cs2_n),
748*4882a593Smuzhiyun FUNCTION(gsbi3_spi_cs3_n),
749*4882a593Smuzhiyun FUNCTION(gsbi4),
750*4882a593Smuzhiyun FUNCTION(gsbi5),
751*4882a593Smuzhiyun FUNCTION(gsbi6),
752*4882a593Smuzhiyun FUNCTION(gsbi7),
753*4882a593Smuzhiyun FUNCTION(gsbi8),
754*4882a593Smuzhiyun FUNCTION(gsbi9),
755*4882a593Smuzhiyun FUNCTION(gsbi10),
756*4882a593Smuzhiyun FUNCTION(gsbi11),
757*4882a593Smuzhiyun FUNCTION(gsbi12),
758*4882a593Smuzhiyun FUNCTION(hdmi),
759*4882a593Smuzhiyun FUNCTION(i2s),
760*4882a593Smuzhiyun FUNCTION(lcdc),
761*4882a593Smuzhiyun FUNCTION(mdp_vsync),
762*4882a593Smuzhiyun FUNCTION(mi2s),
763*4882a593Smuzhiyun FUNCTION(pcm),
764*4882a593Smuzhiyun FUNCTION(ps_hold),
765*4882a593Smuzhiyun FUNCTION(sdc1),
766*4882a593Smuzhiyun FUNCTION(sdc2),
767*4882a593Smuzhiyun FUNCTION(sdc5),
768*4882a593Smuzhiyun FUNCTION(tsif1),
769*4882a593Smuzhiyun FUNCTION(tsif2),
770*4882a593Smuzhiyun FUNCTION(usb_fs1),
771*4882a593Smuzhiyun FUNCTION(usb_fs1_oe_n),
772*4882a593Smuzhiyun FUNCTION(usb_fs2),
773*4882a593Smuzhiyun FUNCTION(usb_fs2_oe_n),
774*4882a593Smuzhiyun FUNCTION(vfe),
775*4882a593Smuzhiyun FUNCTION(vsens_alarm),
776*4882a593Smuzhiyun FUNCTION(ebi2cs), /* for EBI2 chip selects */
777*4882a593Smuzhiyun FUNCTION(ebi2), /* for general EBI2 pins */
778*4882a593Smuzhiyun };
779*4882a593Smuzhiyun
780*4882a593Smuzhiyun static const struct msm_pingroup msm8660_groups[] = {
781*4882a593Smuzhiyun PINGROUP(0, lcdc, dsub, _, _, _, _, _),
782*4882a593Smuzhiyun PINGROUP(1, lcdc, dsub, _, _, _, _, _),
783*4882a593Smuzhiyun PINGROUP(2, lcdc, dsub, _, _, _, _, _),
784*4882a593Smuzhiyun PINGROUP(3, lcdc, dsub, _, _, _, _, _),
785*4882a593Smuzhiyun PINGROUP(4, lcdc, dsub, _, _, _, _, _),
786*4882a593Smuzhiyun PINGROUP(5, lcdc, dsub, _, _, _, _, _),
787*4882a593Smuzhiyun PINGROUP(6, lcdc, dsub, _, _, _, _, _),
788*4882a593Smuzhiyun PINGROUP(7, lcdc, dsub, _, _, _, _, _),
789*4882a593Smuzhiyun PINGROUP(8, lcdc, dsub, _, _, _, _, _),
790*4882a593Smuzhiyun PINGROUP(9, lcdc, dsub, _, _, _, _, _),
791*4882a593Smuzhiyun PINGROUP(10, lcdc, dsub, _, _, _, _, _),
792*4882a593Smuzhiyun PINGROUP(11, lcdc, dsub, _, _, _, _, _),
793*4882a593Smuzhiyun PINGROUP(12, lcdc, dsub, _, _, _, _, _),
794*4882a593Smuzhiyun PINGROUP(13, lcdc, dsub, _, _, _, _, _),
795*4882a593Smuzhiyun PINGROUP(14, lcdc, dsub, _, _, _, _, _),
796*4882a593Smuzhiyun PINGROUP(15, lcdc, dsub, _, _, _, _, _),
797*4882a593Smuzhiyun PINGROUP(16, lcdc, dsub, _, _, _, _, _),
798*4882a593Smuzhiyun PINGROUP(17, lcdc, dsub, _, _, _, _, _),
799*4882a593Smuzhiyun PINGROUP(18, lcdc, dsub, _, _, _, _, _),
800*4882a593Smuzhiyun PINGROUP(19, lcdc, dsub, _, _, _, _, _),
801*4882a593Smuzhiyun PINGROUP(20, lcdc, dsub, _, _, _, _, _),
802*4882a593Smuzhiyun PINGROUP(21, lcdc, dsub, _, _, _, _, _),
803*4882a593Smuzhiyun PINGROUP(22, lcdc, dsub, _, _, _, _, _),
804*4882a593Smuzhiyun PINGROUP(23, lcdc, dsub, _, _, _, _, _),
805*4882a593Smuzhiyun PINGROUP(24, lcdc, dsub, _, _, _, _, _),
806*4882a593Smuzhiyun PINGROUP(25, lcdc, dsub, _, _, _, _, _),
807*4882a593Smuzhiyun PINGROUP(26, lcdc, dsub, _, _, _, _, _),
808*4882a593Smuzhiyun PINGROUP(27, lcdc, dsub, _, _, _, _, _),
809*4882a593Smuzhiyun PINGROUP(28, mdp_vsync, _, _, _, _, _, _),
810*4882a593Smuzhiyun PINGROUP(29, vfe, gp_mn, _, _, _, _, _),
811*4882a593Smuzhiyun PINGROUP(30, vfe, gp_clk_0a, _, _, _, _, _),
812*4882a593Smuzhiyun PINGROUP(31, vfe, gp_clk_1a, _, _, _, _, _),
813*4882a593Smuzhiyun PINGROUP(32, cam_mclk, _, _, _, _, _, _),
814*4882a593Smuzhiyun PINGROUP(33, gsbi1, _, _, _, _, _, _),
815*4882a593Smuzhiyun PINGROUP(34, gsbi1, _, _, _, _, _, _),
816*4882a593Smuzhiyun PINGROUP(35, gsbi1, _, _, _, _, _, _),
817*4882a593Smuzhiyun PINGROUP(36, gsbi1, _, _, _, _, _, _),
818*4882a593Smuzhiyun PINGROUP(37, gsbi2, ebi2, _, _, _, _, _),
819*4882a593Smuzhiyun PINGROUP(38, gsbi2, ebi2, _, _, _, _, _),
820*4882a593Smuzhiyun PINGROUP(39, gsbi2, ebi2cs, mdp_vsync, _, _, _, _),
821*4882a593Smuzhiyun PINGROUP(40, gsbi2, ebi2cs, _, _, _, _, _),
822*4882a593Smuzhiyun PINGROUP(41, gsbi3, mdp_vsync, _, _, _, _, _),
823*4882a593Smuzhiyun PINGROUP(42, gsbi3, vfe, _, _, _, _, _),
824*4882a593Smuzhiyun PINGROUP(43, gsbi3, _, _, _, _, _, _),
825*4882a593Smuzhiyun PINGROUP(44, gsbi3, _, _, _, _, _, _),
826*4882a593Smuzhiyun PINGROUP(45, gsbi4, gsbi3_spi_cs2_n, _, _, _, _, _),
827*4882a593Smuzhiyun PINGROUP(46, gsbi4, gsbi3_spi_cs3_n, vfe, _, _, _, _),
828*4882a593Smuzhiyun PINGROUP(47, gsbi4, _, _, _, _, _, _),
829*4882a593Smuzhiyun PINGROUP(48, gsbi4, _, _, _, _, _, _),
830*4882a593Smuzhiyun PINGROUP(49, gsbi5, usb_fs1, _, _, _, _, _),
831*4882a593Smuzhiyun PINGROUP(50, gsbi5, usb_fs1, _, _, _, _, _),
832*4882a593Smuzhiyun PINGROUP(51, gsbi5, usb_fs1, usb_fs1_oe_n, _, _, _, _),
833*4882a593Smuzhiyun PINGROUP(52, gsbi5, _, _, _, _, _, _),
834*4882a593Smuzhiyun PINGROUP(53, gsbi6, _, _, _, _, _, _),
835*4882a593Smuzhiyun PINGROUP(54, gsbi6, _, _, _, _, _, _),
836*4882a593Smuzhiyun PINGROUP(55, gsbi6, _, _, _, _, _, _),
837*4882a593Smuzhiyun PINGROUP(56, gsbi6, _, _, _, _, _, _),
838*4882a593Smuzhiyun PINGROUP(57, gsbi7, _, _, _, _, _, _),
839*4882a593Smuzhiyun PINGROUP(58, gsbi7, _, _, _, _, _, _),
840*4882a593Smuzhiyun PINGROUP(59, gsbi7, _, _, _, _, _, _),
841*4882a593Smuzhiyun PINGROUP(60, gsbi7, _, _, _, _, _, _),
842*4882a593Smuzhiyun PINGROUP(61, _, _, _, _, _, _, _),
843*4882a593Smuzhiyun PINGROUP(62, gsbi8, gsbi3_spi_cs1_n, gsbi1_spi_cs2a_n, _, _, _, _),
844*4882a593Smuzhiyun PINGROUP(63, gsbi8, gsbi1_spi_cs1_n, _, _, _, _, _),
845*4882a593Smuzhiyun PINGROUP(64, gsbi8, gsbi1_spi_cs2b_n, _, _, _, _, _),
846*4882a593Smuzhiyun PINGROUP(65, gsbi8, gsbi1_spi_cs3_n, _, _, _, _, _),
847*4882a593Smuzhiyun PINGROUP(66, gsbi9, ext_gps, _, _, _, _, _),
848*4882a593Smuzhiyun PINGROUP(67, gsbi9, ext_gps, _, _, _, _, _),
849*4882a593Smuzhiyun PINGROUP(68, gsbi9, ext_gps, _, _, _, _, _),
850*4882a593Smuzhiyun PINGROUP(69, gsbi9, ext_gps, _, _, _, _, _),
851*4882a593Smuzhiyun PINGROUP(70, gsbi10, gp_clk_2b, _, _, _, _, _),
852*4882a593Smuzhiyun PINGROUP(71, gsbi10, usb_fs2, _, _, _, _, _),
853*4882a593Smuzhiyun PINGROUP(72, gsbi10, usb_fs2, _, _, _, _, _),
854*4882a593Smuzhiyun PINGROUP(73, gsbi10, usb_fs2, usb_fs2_oe_n, _, _, _, _),
855*4882a593Smuzhiyun PINGROUP(74, _, _, _, _, _, _, _),
856*4882a593Smuzhiyun PINGROUP(75, _, _, _, _, _, _, _),
857*4882a593Smuzhiyun PINGROUP(76, _, _, _, _, _, _, _),
858*4882a593Smuzhiyun PINGROUP(77, _, _, _, _, _, _, _),
859*4882a593Smuzhiyun PINGROUP(78, _, _, _, _, _, _, _),
860*4882a593Smuzhiyun PINGROUP(79, _, _, _, _, _, _, _),
861*4882a593Smuzhiyun PINGROUP(80, _, _, _, _, _, _, _),
862*4882a593Smuzhiyun PINGROUP(81, _, _, _, _, _, _, _),
863*4882a593Smuzhiyun PINGROUP(82, _, _, _, _, _, _, _),
864*4882a593Smuzhiyun PINGROUP(83, _, _, _, _, _, _, _),
865*4882a593Smuzhiyun PINGROUP(84, _, _, _, _, _, _, _),
866*4882a593Smuzhiyun PINGROUP(85, _, _, _, _, _, _, _),
867*4882a593Smuzhiyun PINGROUP(86, _, _, _, _, _, _, _),
868*4882a593Smuzhiyun PINGROUP(87, _, _, _, _, _, _, _),
869*4882a593Smuzhiyun PINGROUP(88, _, _, _, _, _, _, _),
870*4882a593Smuzhiyun PINGROUP(89, _, _, _, _, _, _, _),
871*4882a593Smuzhiyun PINGROUP(90, _, _, _, _, _, _, _),
872*4882a593Smuzhiyun PINGROUP(91, _, _, _, _, _, _, _),
873*4882a593Smuzhiyun PINGROUP(92, ps_hold, _, _, _, _, _, _),
874*4882a593Smuzhiyun PINGROUP(93, tsif1, _, _, _, _, _, _),
875*4882a593Smuzhiyun PINGROUP(94, tsif1, _, _, _, _, _, _),
876*4882a593Smuzhiyun PINGROUP(95, tsif1, sdc5, _, _, _, _, _),
877*4882a593Smuzhiyun PINGROUP(96, tsif1, sdc5, _, _, _, _, _),
878*4882a593Smuzhiyun PINGROUP(97, tsif2, sdc5, _, _, _, _, _),
879*4882a593Smuzhiyun PINGROUP(98, tsif2, sdc5, _, _, _, _, _),
880*4882a593Smuzhiyun PINGROUP(99, tsif2, sdc5, _, _, _, _, _),
881*4882a593Smuzhiyun PINGROUP(100, tsif2, sdc5, _, _, _, _, _),
882*4882a593Smuzhiyun PINGROUP(101, mi2s, _, _, _, _, _, _),
883*4882a593Smuzhiyun PINGROUP(102, mi2s, _, _, _, _, _, _),
884*4882a593Smuzhiyun PINGROUP(103, mi2s, gsbi11, gp_clk_2a, _, _, _, _),
885*4882a593Smuzhiyun PINGROUP(104, mi2s, gsbi11, _, _, _, _, _),
886*4882a593Smuzhiyun PINGROUP(105, mi2s, gsbi11, vfe, _, _, _, _),
887*4882a593Smuzhiyun PINGROUP(106, mi2s, gsbi11, vfe, _, _, _, _),
888*4882a593Smuzhiyun PINGROUP(107, mi2s, _, _, _, _, _, _),
889*4882a593Smuzhiyun PINGROUP(108, i2s, _, _, _, _, _, _),
890*4882a593Smuzhiyun PINGROUP(109, i2s, _, _, _, _, _, _),
891*4882a593Smuzhiyun PINGROUP(110, i2s, _, _, _, _, _, _),
892*4882a593Smuzhiyun PINGROUP(111, pcm, _, _, _, _, _, _),
893*4882a593Smuzhiyun PINGROUP(112, pcm, _, _, _, _, _, _),
894*4882a593Smuzhiyun PINGROUP(113, pcm, _, _, _, _, _, _),
895*4882a593Smuzhiyun PINGROUP(114, pcm, _, _, _, _, _, _),
896*4882a593Smuzhiyun PINGROUP(115, i2s, gsbi12, gp_clk_0b, _, _, _, _),
897*4882a593Smuzhiyun PINGROUP(116, i2s, gsbi12, _, _, _, _, _),
898*4882a593Smuzhiyun PINGROUP(117, i2s, gsbi12, vfe, _, _, _, _),
899*4882a593Smuzhiyun PINGROUP(118, i2s, gsbi12, _, _, _, _, _),
900*4882a593Smuzhiyun PINGROUP(119, i2s, _, _, _, _, _, _),
901*4882a593Smuzhiyun PINGROUP(120, i2s, _, _, _, _, _, _),
902*4882a593Smuzhiyun PINGROUP(121, i2s, _, _, _, _, _, _),
903*4882a593Smuzhiyun PINGROUP(122, i2s, gp_clk_1b, _, _, _, _, _),
904*4882a593Smuzhiyun PINGROUP(123, ebi2, gsbi2_spi_cs1_n, ebi2cs, _, _, _, _),
905*4882a593Smuzhiyun PINGROUP(124, ebi2, gsbi2_spi_cs2_n, ebi2cs, _, _, _, _),
906*4882a593Smuzhiyun PINGROUP(125, ebi2, gsbi2_spi_cs3_n, _, _, _, _, _),
907*4882a593Smuzhiyun PINGROUP(126, ebi2, _, _, _, _, _, _),
908*4882a593Smuzhiyun PINGROUP(127, ebi2, vsens_alarm, _, _, _, _, _),
909*4882a593Smuzhiyun PINGROUP(128, ebi2, _, _, _, _, _, _),
910*4882a593Smuzhiyun PINGROUP(129, ebi2, _, _, _, _, _, _),
911*4882a593Smuzhiyun PINGROUP(130, ebi2, _, _, _, _, _, _),
912*4882a593Smuzhiyun PINGROUP(131, ebi2cs, _, _, _, _, _, _),
913*4882a593Smuzhiyun PINGROUP(132, ebi2cs, _, _, _, _, _, _),
914*4882a593Smuzhiyun PINGROUP(133, ebi2cs, _, _, _, _, _, _),
915*4882a593Smuzhiyun PINGROUP(134, ebi2cs, _, _, _, _, _, _),
916*4882a593Smuzhiyun PINGROUP(135, ebi2, _, _, _, _, _, _),
917*4882a593Smuzhiyun PINGROUP(136, ebi2, _, _, _, _, _, _),
918*4882a593Smuzhiyun PINGROUP(137, ebi2, _, _, _, _, _, _),
919*4882a593Smuzhiyun PINGROUP(138, ebi2, _, _, _, _, _, _),
920*4882a593Smuzhiyun PINGROUP(139, ebi2, _, _, _, _, _, _),
921*4882a593Smuzhiyun PINGROUP(140, ebi2, _, _, _, _, _, _),
922*4882a593Smuzhiyun PINGROUP(141, ebi2, _, _, _, _, _, _),
923*4882a593Smuzhiyun PINGROUP(142, ebi2, _, _, _, _, _, _),
924*4882a593Smuzhiyun PINGROUP(143, ebi2, sdc2, _, _, _, _, _),
925*4882a593Smuzhiyun PINGROUP(144, ebi2, sdc2, _, _, _, _, _),
926*4882a593Smuzhiyun PINGROUP(145, ebi2, sdc2, _, _, _, _, _),
927*4882a593Smuzhiyun PINGROUP(146, ebi2, sdc2, _, _, _, _, _),
928*4882a593Smuzhiyun PINGROUP(147, ebi2, sdc2, _, _, _, _, _),
929*4882a593Smuzhiyun PINGROUP(148, ebi2, sdc2, _, _, _, _, _),
930*4882a593Smuzhiyun PINGROUP(149, ebi2, sdc2, _, _, _, _, _),
931*4882a593Smuzhiyun PINGROUP(150, ebi2, sdc2, _, _, _, _, _),
932*4882a593Smuzhiyun PINGROUP(151, ebi2, sdc2, _, _, _, _, _),
933*4882a593Smuzhiyun PINGROUP(152, ebi2, sdc2, _, _, _, _, _),
934*4882a593Smuzhiyun PINGROUP(153, ebi2, _, _, _, _, _, _),
935*4882a593Smuzhiyun PINGROUP(154, ebi2, _, _, _, _, _, _),
936*4882a593Smuzhiyun PINGROUP(155, ebi2, _, _, _, _, _, _),
937*4882a593Smuzhiyun PINGROUP(156, ebi2, _, _, _, _, _, _),
938*4882a593Smuzhiyun PINGROUP(157, ebi2, _, _, _, _, _, _),
939*4882a593Smuzhiyun PINGROUP(158, ebi2, _, _, _, _, _, _),
940*4882a593Smuzhiyun PINGROUP(159, sdc1, _, _, _, _, _, _),
941*4882a593Smuzhiyun PINGROUP(160, sdc1, _, _, _, _, _, _),
942*4882a593Smuzhiyun PINGROUP(161, sdc1, _, _, _, _, _, _),
943*4882a593Smuzhiyun PINGROUP(162, sdc1, _, _, _, _, _, _),
944*4882a593Smuzhiyun PINGROUP(163, sdc1, _, _, _, _, _, _),
945*4882a593Smuzhiyun PINGROUP(164, sdc1, _, _, _, _, _, _),
946*4882a593Smuzhiyun PINGROUP(165, sdc1, _, _, _, _, _, _),
947*4882a593Smuzhiyun PINGROUP(166, sdc1, _, _, _, _, _, _),
948*4882a593Smuzhiyun PINGROUP(167, sdc1, _, _, _, _, _, _),
949*4882a593Smuzhiyun PINGROUP(168, sdc1, _, _, _, _, _, _),
950*4882a593Smuzhiyun PINGROUP(169, hdmi, _, _, _, _, _, _),
951*4882a593Smuzhiyun PINGROUP(170, hdmi, _, _, _, _, _, _),
952*4882a593Smuzhiyun PINGROUP(171, hdmi, _, _, _, _, _, _),
953*4882a593Smuzhiyun PINGROUP(172, hdmi, _, _, _, _, _, _),
954*4882a593Smuzhiyun
955*4882a593Smuzhiyun SDC_PINGROUP(sdc4_clk, 0x20a0, -1, 6),
956*4882a593Smuzhiyun SDC_PINGROUP(sdc4_cmd, 0x20a0, 11, 3),
957*4882a593Smuzhiyun SDC_PINGROUP(sdc4_data, 0x20a0, 9, 0),
958*4882a593Smuzhiyun
959*4882a593Smuzhiyun SDC_PINGROUP(sdc3_clk, 0x20a4, -1, 6),
960*4882a593Smuzhiyun SDC_PINGROUP(sdc3_cmd, 0x20a4, 11, 3),
961*4882a593Smuzhiyun SDC_PINGROUP(sdc3_data, 0x20a4, 9, 0),
962*4882a593Smuzhiyun };
963*4882a593Smuzhiyun
964*4882a593Smuzhiyun #define NUM_GPIO_PINGROUPS 173
965*4882a593Smuzhiyun
966*4882a593Smuzhiyun static const struct msm_pinctrl_soc_data msm8660_pinctrl = {
967*4882a593Smuzhiyun .pins = msm8660_pins,
968*4882a593Smuzhiyun .npins = ARRAY_SIZE(msm8660_pins),
969*4882a593Smuzhiyun .functions = msm8660_functions,
970*4882a593Smuzhiyun .nfunctions = ARRAY_SIZE(msm8660_functions),
971*4882a593Smuzhiyun .groups = msm8660_groups,
972*4882a593Smuzhiyun .ngroups = ARRAY_SIZE(msm8660_groups),
973*4882a593Smuzhiyun .ngpios = NUM_GPIO_PINGROUPS,
974*4882a593Smuzhiyun };
975*4882a593Smuzhiyun
msm8660_pinctrl_probe(struct platform_device * pdev)976*4882a593Smuzhiyun static int msm8660_pinctrl_probe(struct platform_device *pdev)
977*4882a593Smuzhiyun {
978*4882a593Smuzhiyun return msm_pinctrl_probe(pdev, &msm8660_pinctrl);
979*4882a593Smuzhiyun }
980*4882a593Smuzhiyun
981*4882a593Smuzhiyun static const struct of_device_id msm8660_pinctrl_of_match[] = {
982*4882a593Smuzhiyun { .compatible = "qcom,msm8660-pinctrl", },
983*4882a593Smuzhiyun { },
984*4882a593Smuzhiyun };
985*4882a593Smuzhiyun
986*4882a593Smuzhiyun static struct platform_driver msm8660_pinctrl_driver = {
987*4882a593Smuzhiyun .driver = {
988*4882a593Smuzhiyun .name = "msm8660-pinctrl",
989*4882a593Smuzhiyun .of_match_table = msm8660_pinctrl_of_match,
990*4882a593Smuzhiyun },
991*4882a593Smuzhiyun .probe = msm8660_pinctrl_probe,
992*4882a593Smuzhiyun .remove = msm_pinctrl_remove,
993*4882a593Smuzhiyun };
994*4882a593Smuzhiyun
msm8660_pinctrl_init(void)995*4882a593Smuzhiyun static int __init msm8660_pinctrl_init(void)
996*4882a593Smuzhiyun {
997*4882a593Smuzhiyun return platform_driver_register(&msm8660_pinctrl_driver);
998*4882a593Smuzhiyun }
999*4882a593Smuzhiyun arch_initcall(msm8660_pinctrl_init);
1000*4882a593Smuzhiyun
msm8660_pinctrl_exit(void)1001*4882a593Smuzhiyun static void __exit msm8660_pinctrl_exit(void)
1002*4882a593Smuzhiyun {
1003*4882a593Smuzhiyun platform_driver_unregister(&msm8660_pinctrl_driver);
1004*4882a593Smuzhiyun }
1005*4882a593Smuzhiyun module_exit(msm8660_pinctrl_exit);
1006*4882a593Smuzhiyun
1007*4882a593Smuzhiyun MODULE_AUTHOR("Bjorn Andersson <bjorn.andersson@sonymobile.com>");
1008*4882a593Smuzhiyun MODULE_DESCRIPTION("Qualcomm MSM8660 pinctrl driver");
1009*4882a593Smuzhiyun MODULE_LICENSE("GPL v2");
1010*4882a593Smuzhiyun MODULE_DEVICE_TABLE(of, msm8660_pinctrl_of_match);
1011