1db436a71SBartosz Dudziak // SPDX-License-Identifier: GPL-2.0-only
2db436a71SBartosz Dudziak /*
3db436a71SBartosz Dudziak  * Copyright (c) 2020, The Linux Foundation. All rights reserved.
4db436a71SBartosz Dudziak  */
5db436a71SBartosz Dudziak 
6db436a71SBartosz Dudziak #include <linux/module.h>
7db436a71SBartosz Dudziak #include <linux/of.h>
8db436a71SBartosz Dudziak #include <linux/platform_device.h>
9db436a71SBartosz Dudziak #include <linux/pinctrl/pinctrl.h>
10db436a71SBartosz Dudziak 
11db436a71SBartosz Dudziak #include "pinctrl-msm.h"
12db436a71SBartosz Dudziak 
13db436a71SBartosz Dudziak static const struct pinctrl_pin_desc msm8226_pins[] = {
14db436a71SBartosz Dudziak 	PINCTRL_PIN(0, "GPIO_0"),
15db436a71SBartosz Dudziak 	PINCTRL_PIN(1, "GPIO_1"),
16db436a71SBartosz Dudziak 	PINCTRL_PIN(2, "GPIO_2"),
17db436a71SBartosz Dudziak 	PINCTRL_PIN(3, "GPIO_3"),
18db436a71SBartosz Dudziak 	PINCTRL_PIN(4, "GPIO_4"),
19db436a71SBartosz Dudziak 	PINCTRL_PIN(5, "GPIO_5"),
20db436a71SBartosz Dudziak 	PINCTRL_PIN(6, "GPIO_6"),
21db436a71SBartosz Dudziak 	PINCTRL_PIN(7, "GPIO_7"),
22db436a71SBartosz Dudziak 	PINCTRL_PIN(8, "GPIO_8"),
23db436a71SBartosz Dudziak 	PINCTRL_PIN(9, "GPIO_9"),
24db436a71SBartosz Dudziak 	PINCTRL_PIN(10, "GPIO_10"),
25db436a71SBartosz Dudziak 	PINCTRL_PIN(11, "GPIO_11"),
26db436a71SBartosz Dudziak 	PINCTRL_PIN(12, "GPIO_12"),
27db436a71SBartosz Dudziak 	PINCTRL_PIN(13, "GPIO_13"),
28db436a71SBartosz Dudziak 	PINCTRL_PIN(14, "GPIO_14"),
29db436a71SBartosz Dudziak 	PINCTRL_PIN(15, "GPIO_15"),
30db436a71SBartosz Dudziak 	PINCTRL_PIN(16, "GPIO_16"),
31db436a71SBartosz Dudziak 	PINCTRL_PIN(17, "GPIO_17"),
32db436a71SBartosz Dudziak 	PINCTRL_PIN(18, "GPIO_18"),
33db436a71SBartosz Dudziak 	PINCTRL_PIN(19, "GPIO_19"),
34db436a71SBartosz Dudziak 	PINCTRL_PIN(20, "GPIO_20"),
35db436a71SBartosz Dudziak 	PINCTRL_PIN(21, "GPIO_21"),
36db436a71SBartosz Dudziak 	PINCTRL_PIN(22, "GPIO_22"),
37db436a71SBartosz Dudziak 	PINCTRL_PIN(23, "GPIO_23"),
38db436a71SBartosz Dudziak 	PINCTRL_PIN(24, "GPIO_24"),
39db436a71SBartosz Dudziak 	PINCTRL_PIN(25, "GPIO_25"),
40db436a71SBartosz Dudziak 	PINCTRL_PIN(26, "GPIO_26"),
41db436a71SBartosz Dudziak 	PINCTRL_PIN(27, "GPIO_27"),
42db436a71SBartosz Dudziak 	PINCTRL_PIN(28, "GPIO_28"),
43db436a71SBartosz Dudziak 	PINCTRL_PIN(29, "GPIO_29"),
44db436a71SBartosz Dudziak 	PINCTRL_PIN(30, "GPIO_30"),
45db436a71SBartosz Dudziak 	PINCTRL_PIN(31, "GPIO_31"),
46db436a71SBartosz Dudziak 	PINCTRL_PIN(32, "GPIO_32"),
47db436a71SBartosz Dudziak 	PINCTRL_PIN(33, "GPIO_33"),
48db436a71SBartosz Dudziak 	PINCTRL_PIN(34, "GPIO_34"),
49db436a71SBartosz Dudziak 	PINCTRL_PIN(35, "GPIO_35"),
50db436a71SBartosz Dudziak 	PINCTRL_PIN(36, "GPIO_36"),
51db436a71SBartosz Dudziak 	PINCTRL_PIN(37, "GPIO_37"),
52db436a71SBartosz Dudziak 	PINCTRL_PIN(38, "GPIO_38"),
53db436a71SBartosz Dudziak 	PINCTRL_PIN(39, "GPIO_39"),
54db436a71SBartosz Dudziak 	PINCTRL_PIN(40, "GPIO_40"),
55db436a71SBartosz Dudziak 	PINCTRL_PIN(41, "GPIO_41"),
56db436a71SBartosz Dudziak 	PINCTRL_PIN(42, "GPIO_42"),
57db436a71SBartosz Dudziak 	PINCTRL_PIN(43, "GPIO_43"),
58db436a71SBartosz Dudziak 	PINCTRL_PIN(44, "GPIO_44"),
59db436a71SBartosz Dudziak 	PINCTRL_PIN(45, "GPIO_45"),
60db436a71SBartosz Dudziak 	PINCTRL_PIN(46, "GPIO_46"),
61db436a71SBartosz Dudziak 	PINCTRL_PIN(47, "GPIO_47"),
62db436a71SBartosz Dudziak 	PINCTRL_PIN(48, "GPIO_48"),
63db436a71SBartosz Dudziak 	PINCTRL_PIN(49, "GPIO_49"),
64db436a71SBartosz Dudziak 	PINCTRL_PIN(50, "GPIO_50"),
65db436a71SBartosz Dudziak 	PINCTRL_PIN(51, "GPIO_51"),
66db436a71SBartosz Dudziak 	PINCTRL_PIN(52, "GPIO_52"),
67db436a71SBartosz Dudziak 	PINCTRL_PIN(53, "GPIO_53"),
68db436a71SBartosz Dudziak 	PINCTRL_PIN(54, "GPIO_54"),
69db436a71SBartosz Dudziak 	PINCTRL_PIN(55, "GPIO_55"),
70db436a71SBartosz Dudziak 	PINCTRL_PIN(56, "GPIO_56"),
71db436a71SBartosz Dudziak 	PINCTRL_PIN(57, "GPIO_57"),
72db436a71SBartosz Dudziak 	PINCTRL_PIN(58, "GPIO_58"),
73db436a71SBartosz Dudziak 	PINCTRL_PIN(59, "GPIO_59"),
74db436a71SBartosz Dudziak 	PINCTRL_PIN(60, "GPIO_60"),
75db436a71SBartosz Dudziak 	PINCTRL_PIN(61, "GPIO_61"),
76db436a71SBartosz Dudziak 	PINCTRL_PIN(62, "GPIO_62"),
77db436a71SBartosz Dudziak 	PINCTRL_PIN(63, "GPIO_63"),
78db436a71SBartosz Dudziak 	PINCTRL_PIN(64, "GPIO_64"),
79db436a71SBartosz Dudziak 	PINCTRL_PIN(65, "GPIO_65"),
80db436a71SBartosz Dudziak 	PINCTRL_PIN(66, "GPIO_66"),
81db436a71SBartosz Dudziak 	PINCTRL_PIN(67, "GPIO_67"),
82db436a71SBartosz Dudziak 	PINCTRL_PIN(68, "GPIO_68"),
83db436a71SBartosz Dudziak 	PINCTRL_PIN(69, "GPIO_69"),
84db436a71SBartosz Dudziak 	PINCTRL_PIN(70, "GPIO_70"),
85db436a71SBartosz Dudziak 	PINCTRL_PIN(71, "GPIO_71"),
86db436a71SBartosz Dudziak 	PINCTRL_PIN(72, "GPIO_72"),
87db436a71SBartosz Dudziak 	PINCTRL_PIN(73, "GPIO_73"),
88db436a71SBartosz Dudziak 	PINCTRL_PIN(74, "GPIO_74"),
89db436a71SBartosz Dudziak 	PINCTRL_PIN(75, "GPIO_75"),
90db436a71SBartosz Dudziak 	PINCTRL_PIN(76, "GPIO_76"),
91db436a71SBartosz Dudziak 	PINCTRL_PIN(77, "GPIO_77"),
92db436a71SBartosz Dudziak 	PINCTRL_PIN(78, "GPIO_78"),
93db436a71SBartosz Dudziak 	PINCTRL_PIN(79, "GPIO_79"),
94db436a71SBartosz Dudziak 	PINCTRL_PIN(80, "GPIO_80"),
95db436a71SBartosz Dudziak 	PINCTRL_PIN(81, "GPIO_81"),
96db436a71SBartosz Dudziak 	PINCTRL_PIN(82, "GPIO_82"),
97db436a71SBartosz Dudziak 	PINCTRL_PIN(83, "GPIO_83"),
98db436a71SBartosz Dudziak 	PINCTRL_PIN(84, "GPIO_84"),
99db436a71SBartosz Dudziak 	PINCTRL_PIN(85, "GPIO_85"),
100db436a71SBartosz Dudziak 	PINCTRL_PIN(86, "GPIO_86"),
101db436a71SBartosz Dudziak 	PINCTRL_PIN(87, "GPIO_87"),
102db436a71SBartosz Dudziak 	PINCTRL_PIN(88, "GPIO_88"),
103db436a71SBartosz Dudziak 	PINCTRL_PIN(89, "GPIO_89"),
104db436a71SBartosz Dudziak 	PINCTRL_PIN(90, "GPIO_90"),
105db436a71SBartosz Dudziak 	PINCTRL_PIN(91, "GPIO_91"),
106db436a71SBartosz Dudziak 	PINCTRL_PIN(92, "GPIO_92"),
107db436a71SBartosz Dudziak 	PINCTRL_PIN(93, "GPIO_93"),
108db436a71SBartosz Dudziak 	PINCTRL_PIN(94, "GPIO_94"),
109db436a71SBartosz Dudziak 	PINCTRL_PIN(95, "GPIO_95"),
110db436a71SBartosz Dudziak 	PINCTRL_PIN(96, "GPIO_96"),
111db436a71SBartosz Dudziak 	PINCTRL_PIN(97, "GPIO_97"),
112db436a71SBartosz Dudziak 	PINCTRL_PIN(98, "GPIO_98"),
113db436a71SBartosz Dudziak 	PINCTRL_PIN(99, "GPIO_99"),
114db436a71SBartosz Dudziak 	PINCTRL_PIN(100, "GPIO_100"),
115db436a71SBartosz Dudziak 	PINCTRL_PIN(101, "GPIO_101"),
116db436a71SBartosz Dudziak 	PINCTRL_PIN(102, "GPIO_102"),
117db436a71SBartosz Dudziak 	PINCTRL_PIN(103, "GPIO_103"),
118db436a71SBartosz Dudziak 	PINCTRL_PIN(104, "GPIO_104"),
119db436a71SBartosz Dudziak 	PINCTRL_PIN(105, "GPIO_105"),
120db436a71SBartosz Dudziak 	PINCTRL_PIN(106, "GPIO_106"),
121db436a71SBartosz Dudziak 	PINCTRL_PIN(107, "GPIO_107"),
122db436a71SBartosz Dudziak 	PINCTRL_PIN(108, "GPIO_108"),
123db436a71SBartosz Dudziak 	PINCTRL_PIN(109, "GPIO_109"),
124db436a71SBartosz Dudziak 	PINCTRL_PIN(110, "GPIO_110"),
125db436a71SBartosz Dudziak 	PINCTRL_PIN(111, "GPIO_111"),
126db436a71SBartosz Dudziak 	PINCTRL_PIN(112, "GPIO_112"),
127db436a71SBartosz Dudziak 	PINCTRL_PIN(113, "GPIO_113"),
128db436a71SBartosz Dudziak 	PINCTRL_PIN(114, "GPIO_114"),
129db436a71SBartosz Dudziak 	PINCTRL_PIN(115, "GPIO_115"),
130db436a71SBartosz Dudziak 	PINCTRL_PIN(116, "GPIO_116"),
131db436a71SBartosz Dudziak 
132db436a71SBartosz Dudziak 	PINCTRL_PIN(117, "SDC1_CLK"),
133db436a71SBartosz Dudziak 	PINCTRL_PIN(118, "SDC1_CMD"),
134db436a71SBartosz Dudziak 	PINCTRL_PIN(119, "SDC1_DATA"),
135db436a71SBartosz Dudziak 	PINCTRL_PIN(120, "SDC2_CLK"),
136db436a71SBartosz Dudziak 	PINCTRL_PIN(121, "SDC2_CMD"),
137db436a71SBartosz Dudziak 	PINCTRL_PIN(122, "SDC2_DATA"),
138db436a71SBartosz Dudziak };
139db436a71SBartosz Dudziak 
140db436a71SBartosz Dudziak #define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
141db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(0);
142db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(1);
143db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(2);
144db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(3);
145db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(4);
146db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(5);
147db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(6);
148db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(7);
149db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(8);
150db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(9);
151db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(10);
152db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(11);
153db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(12);
154db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(13);
155db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(14);
156db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(15);
157db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(16);
158db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(17);
159db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(18);
160db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(19);
161db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(20);
162db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(21);
163db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(22);
164db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(23);
165db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(24);
166db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(25);
167db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(26);
168db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(27);
169db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(28);
170db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(29);
171db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(30);
172db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(31);
173db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(32);
174db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(33);
175db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(34);
176db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(35);
177db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(36);
178db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(37);
179db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(38);
180db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(39);
181db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(40);
182db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(41);
183db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(42);
184db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(43);
185db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(44);
186db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(45);
187db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(46);
188db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(47);
189db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(48);
190db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(49);
191db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(50);
192db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(51);
193db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(52);
194db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(53);
195db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(54);
196db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(55);
197db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(56);
198db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(57);
199db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(58);
200db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(59);
201db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(60);
202db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(61);
203db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(62);
204db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(63);
205db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(64);
206db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(65);
207db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(66);
208db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(67);
209db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(68);
210db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(69);
211db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(70);
212db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(71);
213db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(72);
214db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(73);
215db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(74);
216db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(75);
217db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(76);
218db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(77);
219db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(78);
220db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(79);
221db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(80);
222db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(81);
223db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(82);
224db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(83);
225db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(84);
226db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(85);
227db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(86);
228db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(87);
229db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(88);
230db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(89);
231db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(90);
232db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(91);
233db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(92);
234db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(93);
235db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(94);
236db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(95);
237db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(96);
238db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(97);
239db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(98);
240db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(99);
241db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(100);
242db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(101);
243db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(102);
244db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(103);
245db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(104);
246db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(105);
247db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(106);
248db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(107);
249db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(108);
250db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(109);
251db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(110);
252db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(111);
253db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(112);
254db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(113);
255db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(114);
256db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(115);
257db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(116);
258db436a71SBartosz Dudziak 
259db436a71SBartosz Dudziak static const unsigned int sdc1_clk_pins[] = { 117 };
260db436a71SBartosz Dudziak static const unsigned int sdc1_cmd_pins[] = { 118 };
261db436a71SBartosz Dudziak static const unsigned int sdc1_data_pins[] = { 119 };
262db436a71SBartosz Dudziak static const unsigned int sdc2_clk_pins[] = { 120 };
263db436a71SBartosz Dudziak static const unsigned int sdc2_cmd_pins[] = { 121 };
264db436a71SBartosz Dudziak static const unsigned int sdc2_data_pins[] = { 122 };
265db436a71SBartosz Dudziak 
266db436a71SBartosz Dudziak #define FUNCTION(fname)					\
267db436a71SBartosz Dudziak 	[MSM_MUX_##fname] = {				\
268db436a71SBartosz Dudziak 		.name = #fname,				\
269db436a71SBartosz Dudziak 		.groups = fname##_groups,		\
270db436a71SBartosz Dudziak 		.ngroups = ARRAY_SIZE(fname##_groups),	\
271db436a71SBartosz Dudziak 	}
272db436a71SBartosz Dudziak 
273db436a71SBartosz Dudziak #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7)	\
274db436a71SBartosz Dudziak 	{						\
275db436a71SBartosz Dudziak 		.name = "gpio" #id,			\
276db436a71SBartosz Dudziak 		.pins = gpio##id##_pins,		\
277db436a71SBartosz Dudziak 		.npins = ARRAY_SIZE(gpio##id##_pins),	\
278db436a71SBartosz Dudziak 		.funcs = (int[]){			\
279db436a71SBartosz Dudziak 			MSM_MUX_gpio,			\
280db436a71SBartosz Dudziak 			MSM_MUX_##f1,			\
281db436a71SBartosz Dudziak 			MSM_MUX_##f2,			\
282db436a71SBartosz Dudziak 			MSM_MUX_##f3,			\
283db436a71SBartosz Dudziak 			MSM_MUX_##f4,			\
284db436a71SBartosz Dudziak 			MSM_MUX_##f5,			\
285db436a71SBartosz Dudziak 			MSM_MUX_##f6,			\
286db436a71SBartosz Dudziak 			MSM_MUX_##f7			\
287db436a71SBartosz Dudziak 		},					\
288db436a71SBartosz Dudziak 		.nfuncs = 8,				\
289db436a71SBartosz Dudziak 		.ctl_reg = 0x1000 + 0x10 * id,		\
290db436a71SBartosz Dudziak 		.io_reg = 0x1004 + 0x10 * id,		\
291db436a71SBartosz Dudziak 		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
292db436a71SBartosz Dudziak 		.intr_status_reg = 0x100c + 0x10 * id,	\
293db436a71SBartosz Dudziak 		.intr_target_reg = 0x1008 + 0x10 * id,	\
294db436a71SBartosz Dudziak 		.mux_bit = 2,				\
295db436a71SBartosz Dudziak 		.pull_bit = 0,				\
296db436a71SBartosz Dudziak 		.drv_bit = 6,				\
297db436a71SBartosz Dudziak 		.oe_bit = 9,				\
298db436a71SBartosz Dudziak 		.in_bit = 0,				\
299db436a71SBartosz Dudziak 		.out_bit = 1,				\
300db436a71SBartosz Dudziak 		.intr_enable_bit = 0,			\
301db436a71SBartosz Dudziak 		.intr_status_bit = 0,			\
302db436a71SBartosz Dudziak 		.intr_target_bit = 5,			\
303db436a71SBartosz Dudziak 		.intr_target_kpss_val = 4,		\
304db436a71SBartosz Dudziak 		.intr_raw_status_bit = 4,		\
305db436a71SBartosz Dudziak 		.intr_polarity_bit = 1,			\
306db436a71SBartosz Dudziak 		.intr_detection_bit = 2,		\
307db436a71SBartosz Dudziak 		.intr_detection_width = 2,		\
308db436a71SBartosz Dudziak 	}
309db436a71SBartosz Dudziak 
310db436a71SBartosz Dudziak #define SDC_PINGROUP(pg_name, ctl, pull, drv)		\
311db436a71SBartosz Dudziak 	{						\
312db436a71SBartosz Dudziak 		.name = #pg_name,			\
313db436a71SBartosz Dudziak 		.pins = pg_name##_pins,			\
314db436a71SBartosz Dudziak 		.npins = ARRAY_SIZE(pg_name##_pins),	\
315db436a71SBartosz Dudziak 		.ctl_reg = ctl,				\
316db436a71SBartosz Dudziak 		.io_reg = 0,				\
317db436a71SBartosz Dudziak 		.intr_cfg_reg = 0,			\
318db436a71SBartosz Dudziak 		.intr_status_reg = 0,			\
319db436a71SBartosz Dudziak 		.intr_target_reg = 0,			\
320db436a71SBartosz Dudziak 		.mux_bit = -1,				\
321db436a71SBartosz Dudziak 		.pull_bit = pull,			\
322db436a71SBartosz Dudziak 		.drv_bit = drv,				\
323db436a71SBartosz Dudziak 		.oe_bit = -1,				\
324db436a71SBartosz Dudziak 		.in_bit = -1,				\
325db436a71SBartosz Dudziak 		.out_bit = -1,				\
326db436a71SBartosz Dudziak 		.intr_enable_bit = -1,			\
327db436a71SBartosz Dudziak 		.intr_status_bit = -1,			\
328db436a71SBartosz Dudziak 		.intr_target_bit = -1,			\
329db436a71SBartosz Dudziak 		.intr_target_kpss_val = -1,		\
330db436a71SBartosz Dudziak 		.intr_raw_status_bit = -1,		\
331db436a71SBartosz Dudziak 		.intr_polarity_bit = -1,		\
332db436a71SBartosz Dudziak 		.intr_detection_bit = -1,		\
333db436a71SBartosz Dudziak 		.intr_detection_width = -1,		\
334db436a71SBartosz Dudziak 	}
335db436a71SBartosz Dudziak 
336db436a71SBartosz Dudziak /*
337db436a71SBartosz Dudziak  * TODO: Add the rest of the possible functions and fill out
338db436a71SBartosz Dudziak  * the pingroup table below.
339db436a71SBartosz Dudziak  */
340db436a71SBartosz Dudziak enum msm8226_functions {
341db436a71SBartosz Dudziak 	MSM_MUX_gpio,
342db436a71SBartosz Dudziak 	MSM_MUX_cci_i2c0,
343db436a71SBartosz Dudziak 	MSM_MUX_blsp_i2c1,
344db436a71SBartosz Dudziak 	MSM_MUX_blsp_i2c2,
345db436a71SBartosz Dudziak 	MSM_MUX_blsp_i2c3,
346db436a71SBartosz Dudziak 	MSM_MUX_blsp_i2c5,
347db436a71SBartosz Dudziak 	MSM_MUX_blsp_spi1,
348db436a71SBartosz Dudziak 	MSM_MUX_blsp_spi2,
349db436a71SBartosz Dudziak 	MSM_MUX_blsp_spi3,
350db436a71SBartosz Dudziak 	MSM_MUX_blsp_spi5,
351db436a71SBartosz Dudziak 	MSM_MUX_blsp_uart1,
352db436a71SBartosz Dudziak 	MSM_MUX_blsp_uart2,
353db436a71SBartosz Dudziak 	MSM_MUX_blsp_uart3,
354db436a71SBartosz Dudziak 	MSM_MUX_blsp_uart5,
355db436a71SBartosz Dudziak 	MSM_MUX_blsp_uim1,
356db436a71SBartosz Dudziak 	MSM_MUX_blsp_uim2,
357db436a71SBartosz Dudziak 	MSM_MUX_blsp_uim3,
358db436a71SBartosz Dudziak 	MSM_MUX_blsp_uim5,
359db436a71SBartosz Dudziak 	MSM_MUX_cam_mclk0,
360db436a71SBartosz Dudziak 	MSM_MUX_cam_mclk1,
361db436a71SBartosz Dudziak 	MSM_MUX_wlan,
362db436a71SBartosz Dudziak 	MSM_MUX_NA,
363db436a71SBartosz Dudziak };
364db436a71SBartosz Dudziak 
365db436a71SBartosz Dudziak static const char * const gpio_groups[] = {
366db436a71SBartosz Dudziak 	"gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
367db436a71SBartosz Dudziak 	"gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
368db436a71SBartosz Dudziak 	"gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
369db436a71SBartosz Dudziak 	"gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
370db436a71SBartosz Dudziak 	"gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
371db436a71SBartosz Dudziak 	"gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
372db436a71SBartosz Dudziak 	"gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
373db436a71SBartosz Dudziak 	"gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
374db436a71SBartosz Dudziak 	"gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
375db436a71SBartosz Dudziak 	"gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
376db436a71SBartosz Dudziak 	"gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
377db436a71SBartosz Dudziak 	"gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
378db436a71SBartosz Dudziak 	"gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91",
379db436a71SBartosz Dudziak 	"gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98",
380db436a71SBartosz Dudziak 	"gpio99", "gpio100", "gpio101", "gpio102", "gpio103", "gpio104",
381db436a71SBartosz Dudziak 	"gpio105", "gpio106", "gpio107", "gpio108", "gpio109", "gpio110",
382db436a71SBartosz Dudziak 	"gpio111", "gpio112", "gpio113", "gpio114", "gpio115", "gpio116",
383db436a71SBartosz Dudziak };
384db436a71SBartosz Dudziak 
385db436a71SBartosz Dudziak static const char * const blsp_uart1_groups[] = {
386db436a71SBartosz Dudziak 	"gpio0", "gpio1", "gpio2", "gpio3"
387db436a71SBartosz Dudziak };
388db436a71SBartosz Dudziak 
389db436a71SBartosz Dudziak static const char * const blsp_uim1_groups[] = { "gpio0", "gpio1" };
390db436a71SBartosz Dudziak static const char * const blsp_i2c1_groups[] = { "gpio2", "gpio3" };
391db436a71SBartosz Dudziak static const char * const blsp_spi1_groups[] = {
392db436a71SBartosz Dudziak 	"gpio0", "gpio1", "gpio2", "gpio3"
393db436a71SBartosz Dudziak };
394db436a71SBartosz Dudziak 
395db436a71SBartosz Dudziak static const char * const blsp_uart2_groups[] = {
396db436a71SBartosz Dudziak 	"gpio4", "gpio5", "gpio6", "gpio7"
397db436a71SBartosz Dudziak };
398db436a71SBartosz Dudziak 
399db436a71SBartosz Dudziak static const char * const blsp_uim2_groups[] = { "gpio4", "gpio5" };
400db436a71SBartosz Dudziak static const char * const blsp_i2c2_groups[] = { "gpio6", "gpio7" };
401db436a71SBartosz Dudziak static const char * const blsp_spi2_groups[] = {
402db436a71SBartosz Dudziak 	"gpio4", "gpio5", "gpio6", "gpio7"
403db436a71SBartosz Dudziak };
404db436a71SBartosz Dudziak 
405db436a71SBartosz Dudziak static const char * const blsp_uart3_groups[] = {
406db436a71SBartosz Dudziak 	"gpio8", "gpio9", "gpio10", "gpio11"
407db436a71SBartosz Dudziak };
408db436a71SBartosz Dudziak 
409db436a71SBartosz Dudziak static const char * const blsp_uim3_groups[] = { "gpio8", "gpio9" };
410db436a71SBartosz Dudziak static const char * const blsp_i2c3_groups[] = { "gpio10", "gpio11" };
411db436a71SBartosz Dudziak static const char * const blsp_spi3_groups[] = {
412db436a71SBartosz Dudziak 	"gpio8", "gpio9", "gpio10", "gpio11"
413db436a71SBartosz Dudziak };
414db436a71SBartosz Dudziak 
415db436a71SBartosz Dudziak static const char * const blsp_uart5_groups[] = {
416db436a71SBartosz Dudziak 	"gpio16", "gpio17", "gpio18", "gpio19"
417db436a71SBartosz Dudziak };
418db436a71SBartosz Dudziak 
419db436a71SBartosz Dudziak static const char * const blsp_uim5_groups[] = { "gpio16", "gpio17" };
420db436a71SBartosz Dudziak static const char * const blsp_i2c5_groups[] = { "gpio18", "gpio19" };
421db436a71SBartosz Dudziak static const char * const blsp_spi5_groups[] = {
422db436a71SBartosz Dudziak 	"gpio16", "gpio17", "gpio18", "gpio19"
423db436a71SBartosz Dudziak };
424db436a71SBartosz Dudziak 
425db436a71SBartosz Dudziak static const char * const cci_i2c0_groups[] = { "gpio29", "gpio30" };
426db436a71SBartosz Dudziak 
427db436a71SBartosz Dudziak static const char * const cam_mclk0_groups[] = { "gpio26" };
428db436a71SBartosz Dudziak static const char * const cam_mclk1_groups[] = { "gpio27" };
429db436a71SBartosz Dudziak 
430db436a71SBartosz Dudziak static const char * const wlan_groups[] = {
431db436a71SBartosz Dudziak 	"gpio40", "gpio41", "gpio42", "gpio43", "gpio44"
432db436a71SBartosz Dudziak };
433db436a71SBartosz Dudziak 
434db436a71SBartosz Dudziak static const struct msm_function msm8226_functions[] = {
435db436a71SBartosz Dudziak 	FUNCTION(gpio),
436db436a71SBartosz Dudziak 	FUNCTION(cci_i2c0),
437db436a71SBartosz Dudziak 	FUNCTION(blsp_uim1),
438db436a71SBartosz Dudziak 	FUNCTION(blsp_uim2),
439db436a71SBartosz Dudziak 	FUNCTION(blsp_uim3),
440db436a71SBartosz Dudziak 	FUNCTION(blsp_uim5),
441db436a71SBartosz Dudziak 	FUNCTION(blsp_i2c1),
442db436a71SBartosz Dudziak 	FUNCTION(blsp_i2c2),
443db436a71SBartosz Dudziak 	FUNCTION(blsp_i2c3),
444db436a71SBartosz Dudziak 	FUNCTION(blsp_i2c5),
445db436a71SBartosz Dudziak 	FUNCTION(blsp_spi1),
446db436a71SBartosz Dudziak 	FUNCTION(blsp_spi2),
447db436a71SBartosz Dudziak 	FUNCTION(blsp_spi3),
448db436a71SBartosz Dudziak 	FUNCTION(blsp_spi5),
449db436a71SBartosz Dudziak 	FUNCTION(blsp_uart1),
450db436a71SBartosz Dudziak 	FUNCTION(blsp_uart2),
451db436a71SBartosz Dudziak 	FUNCTION(blsp_uart3),
452db436a71SBartosz Dudziak 	FUNCTION(blsp_uart5),
453db436a71SBartosz Dudziak 	FUNCTION(cam_mclk0),
454db436a71SBartosz Dudziak 	FUNCTION(cam_mclk1),
455db436a71SBartosz Dudziak 	FUNCTION(wlan),
456db436a71SBartosz Dudziak };
457db436a71SBartosz Dudziak 
458db436a71SBartosz Dudziak static const struct msm_pingroup msm8226_groups[] = {
459db436a71SBartosz Dudziak 	PINGROUP(0,   blsp_spi1, blsp_uart1, blsp_uim1, NA, NA, NA, NA),
460db436a71SBartosz Dudziak 	PINGROUP(1,   blsp_spi1, blsp_uart1, blsp_uim1, NA, NA, NA, NA),
461db436a71SBartosz Dudziak 	PINGROUP(2,   blsp_spi1, blsp_uart1, blsp_i2c1, NA, NA, NA, NA),
462db436a71SBartosz Dudziak 	PINGROUP(3,   blsp_spi1, blsp_uart1, blsp_i2c1, NA, NA, NA, NA),
463db436a71SBartosz Dudziak 	PINGROUP(4,   blsp_spi2, blsp_uart2, blsp_uim2, NA, NA, NA, NA),
464db436a71SBartosz Dudziak 	PINGROUP(5,   blsp_spi2, blsp_uart2, blsp_uim2, NA, NA, NA, NA),
465db436a71SBartosz Dudziak 	PINGROUP(6,   blsp_spi2, blsp_uart2, blsp_i2c2, NA, NA, NA, NA),
466db436a71SBartosz Dudziak 	PINGROUP(7,   blsp_spi2, blsp_uart2, blsp_i2c2, NA, NA, NA, NA),
467db436a71SBartosz Dudziak 	PINGROUP(8,   blsp_spi3, blsp_uart3, blsp_uim3, NA, NA, NA, NA),
468db436a71SBartosz Dudziak 	PINGROUP(9,   blsp_spi3, blsp_uart3, blsp_uim3, NA, NA, NA, NA),
469db436a71SBartosz Dudziak 	PINGROUP(10,  blsp_spi3, blsp_uart3, blsp_i2c3, NA, NA, NA, NA),
470db436a71SBartosz Dudziak 	PINGROUP(11,  blsp_spi3, blsp_uart3, blsp_i2c3, NA, NA, NA, NA),
471db436a71SBartosz Dudziak 	PINGROUP(12,  NA, NA, NA, NA, NA, NA, NA),
472db436a71SBartosz Dudziak 	PINGROUP(13,  NA, NA, NA, NA, NA, NA, NA),
473db436a71SBartosz Dudziak 	PINGROUP(14,  NA, NA, NA, NA, NA, NA, NA),
474db436a71SBartosz Dudziak 	PINGROUP(15,  NA, NA, NA, NA, NA, NA, NA),
475db436a71SBartosz Dudziak 	PINGROUP(16,  blsp_spi5, blsp_uart5, blsp_uim5, NA, NA, NA, NA),
476db436a71SBartosz Dudziak 	PINGROUP(17,  blsp_spi5, blsp_uart5, blsp_uim5, NA, NA, NA, NA),
477db436a71SBartosz Dudziak 	PINGROUP(18,  blsp_spi5, blsp_uart5, blsp_i2c5, NA, NA, NA, NA),
478db436a71SBartosz Dudziak 	PINGROUP(19,  blsp_spi5, blsp_uart5, blsp_i2c5, NA, NA, NA, NA),
479db436a71SBartosz Dudziak 	PINGROUP(20,  NA, NA, NA, NA, NA, NA, NA),
480db436a71SBartosz Dudziak 	PINGROUP(21,  NA, NA, NA, NA, NA, NA, NA),
481db436a71SBartosz Dudziak 	PINGROUP(22,  NA, NA, NA, NA, NA, NA, NA),
482db436a71SBartosz Dudziak 	PINGROUP(23,  NA, NA, NA, NA, NA, NA, NA),
483db436a71SBartosz Dudziak 	PINGROUP(24,  NA, NA, NA, NA, NA, NA, NA),
484db436a71SBartosz Dudziak 	PINGROUP(25,  NA, NA, NA, NA, NA, NA, NA),
485db436a71SBartosz Dudziak 	PINGROUP(26,  cam_mclk0, NA, NA, NA, NA, NA, NA),
486db436a71SBartosz Dudziak 	PINGROUP(27,  cam_mclk1, NA, NA, NA, NA, NA, NA),
487db436a71SBartosz Dudziak 	PINGROUP(28,  NA, NA, NA, NA, NA, NA, NA),
488db436a71SBartosz Dudziak 	PINGROUP(29,  cci_i2c0, NA, NA, NA, NA, NA, NA),
489db436a71SBartosz Dudziak 	PINGROUP(30,  cci_i2c0, NA, NA, NA, NA, NA, NA),
490db436a71SBartosz Dudziak 	PINGROUP(31,  NA, NA, NA, NA, NA, NA, NA),
491db436a71SBartosz Dudziak 	PINGROUP(32,  NA, NA, NA, NA, NA, NA, NA),
492db436a71SBartosz Dudziak 	PINGROUP(33,  NA, NA, NA, NA, NA, NA, NA),
493db436a71SBartosz Dudziak 	PINGROUP(34,  NA, NA, NA, NA, NA, NA, NA),
494db436a71SBartosz Dudziak 	PINGROUP(35,  NA, NA, NA, NA, NA, NA, NA),
495db436a71SBartosz Dudziak 	PINGROUP(36,  NA, NA, NA, NA, NA, NA, NA),
496db436a71SBartosz Dudziak 	PINGROUP(37,  NA, NA, NA, NA, NA, NA, NA),
497db436a71SBartosz Dudziak 	PINGROUP(38,  NA, NA, NA, NA, NA, NA, NA),
498db436a71SBartosz Dudziak 	PINGROUP(39,  NA, NA, NA, NA, NA, NA, NA),
499db436a71SBartosz Dudziak 	PINGROUP(40,  wlan, NA, NA, NA, NA, NA, NA),
500db436a71SBartosz Dudziak 	PINGROUP(41,  wlan, NA, NA, NA, NA, NA, NA),
501db436a71SBartosz Dudziak 	PINGROUP(42,  wlan, NA, NA, NA, NA, NA, NA),
502db436a71SBartosz Dudziak 	PINGROUP(43,  wlan, NA, NA, NA, NA, NA, NA),
503db436a71SBartosz Dudziak 	PINGROUP(44,  wlan, NA, NA, NA, NA, NA, NA),
504db436a71SBartosz Dudziak 	PINGROUP(45,  NA, NA, NA, NA, NA, NA, NA),
505db436a71SBartosz Dudziak 	PINGROUP(46,  NA, NA, NA, NA, NA, NA, NA),
506db436a71SBartosz Dudziak 	PINGROUP(47,  NA, NA, NA, NA, NA, NA, NA),
507db436a71SBartosz Dudziak 	PINGROUP(48,  NA, NA, NA, NA, NA, NA, NA),
508db436a71SBartosz Dudziak 	PINGROUP(49,  NA, NA, NA, NA, NA, NA, NA),
509db436a71SBartosz Dudziak 	PINGROUP(50,  NA, NA, NA, NA, NA, NA, NA),
510db436a71SBartosz Dudziak 	PINGROUP(51,  NA, NA, NA, NA, NA, NA, NA),
511db436a71SBartosz Dudziak 	PINGROUP(52,  NA, NA, NA, NA, NA, NA, NA),
512db436a71SBartosz Dudziak 	PINGROUP(53,  NA, NA, NA, NA, NA, NA, NA),
513db436a71SBartosz Dudziak 	PINGROUP(54,  NA, NA, NA, NA, NA, NA, NA),
514db436a71SBartosz Dudziak 	PINGROUP(55,  NA, NA, NA, NA, NA, NA, NA),
515db436a71SBartosz Dudziak 	PINGROUP(56,  NA, NA, NA, NA, NA, NA, NA),
516db436a71SBartosz Dudziak 	PINGROUP(57,  NA, NA, NA, NA, NA, NA, NA),
517db436a71SBartosz Dudziak 	PINGROUP(58,  NA, NA, NA, NA, NA, NA, NA),
518db436a71SBartosz Dudziak 	PINGROUP(59,  NA, NA, NA, NA, NA, NA, NA),
519db436a71SBartosz Dudziak 	PINGROUP(60,  NA, NA, NA, NA, NA, NA, NA),
520db436a71SBartosz Dudziak 	PINGROUP(61,  NA, NA, NA, NA, NA, NA, NA),
521db436a71SBartosz Dudziak 	PINGROUP(62,  NA, NA, NA, NA, NA, NA, NA),
522db436a71SBartosz Dudziak 	PINGROUP(63,  NA, NA, NA, NA, NA, NA, NA),
523db436a71SBartosz Dudziak 	PINGROUP(64,  NA, NA, NA, NA, NA, NA, NA),
524db436a71SBartosz Dudziak 	PINGROUP(65,  NA, NA, NA, NA, NA, NA, NA),
525db436a71SBartosz Dudziak 	PINGROUP(66,  NA, NA, NA, NA, NA, NA, NA),
526db436a71SBartosz Dudziak 	PINGROUP(67,  NA, NA, NA, NA, NA, NA, NA),
527db436a71SBartosz Dudziak 	PINGROUP(68,  NA, NA, NA, NA, NA, NA, NA),
528db436a71SBartosz Dudziak 	PINGROUP(69,  NA, NA, NA, NA, NA, NA, NA),
529db436a71SBartosz Dudziak 	PINGROUP(70,  NA, NA, NA, NA, NA, NA, NA),
530db436a71SBartosz Dudziak 	PINGROUP(71,  NA, NA, NA, NA, NA, NA, NA),
531db436a71SBartosz Dudziak 	PINGROUP(72,  NA, NA, NA, NA, NA, NA, NA),
532db436a71SBartosz Dudziak 	PINGROUP(73,  NA, NA, NA, NA, NA, NA, NA),
533db436a71SBartosz Dudziak 	PINGROUP(74,  NA, NA, NA, NA, NA, NA, NA),
534db436a71SBartosz Dudziak 	PINGROUP(75,  NA, NA, NA, NA, NA, NA, NA),
535db436a71SBartosz Dudziak 	PINGROUP(76,  NA, NA, NA, NA, NA, NA, NA),
536db436a71SBartosz Dudziak 	PINGROUP(77,  NA, NA, NA, NA, NA, NA, NA),
537db436a71SBartosz Dudziak 	PINGROUP(78,  NA, NA, NA, NA, NA, NA, NA),
538db436a71SBartosz Dudziak 	PINGROUP(79,  NA, NA, NA, NA, NA, NA, NA),
539db436a71SBartosz Dudziak 	PINGROUP(80,  NA, NA, NA, NA, NA, NA, NA),
540db436a71SBartosz Dudziak 	PINGROUP(81,  NA, NA, NA, NA, NA, NA, NA),
541db436a71SBartosz Dudziak 	PINGROUP(82,  NA, NA, NA, NA, NA, NA, NA),
542db436a71SBartosz Dudziak 	PINGROUP(83,  NA, NA, NA, NA, NA, NA, NA),
543db436a71SBartosz Dudziak 	PINGROUP(84,  NA, NA, NA, NA, NA, NA, NA),
544db436a71SBartosz Dudziak 	PINGROUP(85,  NA, NA, NA, NA, NA, NA, NA),
545db436a71SBartosz Dudziak 	PINGROUP(86,  NA, NA, NA, NA, NA, NA, NA),
546db436a71SBartosz Dudziak 	PINGROUP(87,  NA, NA, NA, NA, NA, NA, NA),
547db436a71SBartosz Dudziak 	PINGROUP(88,  NA, NA, NA, NA, NA, NA, NA),
548db436a71SBartosz Dudziak 	PINGROUP(89,  NA, NA, NA, NA, NA, NA, NA),
549db436a71SBartosz Dudziak 	PINGROUP(90,  NA, NA, NA, NA, NA, NA, NA),
550db436a71SBartosz Dudziak 	PINGROUP(91,  NA, NA, NA, NA, NA, NA, NA),
551db436a71SBartosz Dudziak 	PINGROUP(92,  NA, NA, NA, NA, NA, NA, NA),
552db436a71SBartosz Dudziak 	PINGROUP(93,  NA, NA, NA, NA, NA, NA, NA),
553db436a71SBartosz Dudziak 	PINGROUP(94,  NA, NA, NA, NA, NA, NA, NA),
554db436a71SBartosz Dudziak 	PINGROUP(95,  NA, NA, NA, NA, NA, NA, NA),
555db436a71SBartosz Dudziak 	PINGROUP(96,  NA, NA, NA, NA, NA, NA, NA),
556db436a71SBartosz Dudziak 	PINGROUP(97,  NA, NA, NA, NA, NA, NA, NA),
557db436a71SBartosz Dudziak 	PINGROUP(98,  NA, NA, NA, NA, NA, NA, NA),
558db436a71SBartosz Dudziak 	PINGROUP(99,  NA, NA, NA, NA, NA, NA, NA),
559db436a71SBartosz Dudziak 	PINGROUP(100, NA, NA, NA, NA, NA, NA, NA),
560db436a71SBartosz Dudziak 	PINGROUP(101, NA, NA, NA, NA, NA, NA, NA),
561db436a71SBartosz Dudziak 	PINGROUP(102, NA, NA, NA, NA, NA, NA, NA),
562db436a71SBartosz Dudziak 	PINGROUP(103, NA, NA, NA, NA, NA, NA, NA),
563db436a71SBartosz Dudziak 	PINGROUP(104, NA, NA, NA, NA, NA, NA, NA),
564db436a71SBartosz Dudziak 	PINGROUP(105, NA, NA, NA, NA, NA, NA, NA),
565db436a71SBartosz Dudziak 	PINGROUP(106, NA, NA, NA, NA, NA, NA, NA),
566db436a71SBartosz Dudziak 	PINGROUP(107, NA, NA, NA, NA, NA, NA, NA),
567db436a71SBartosz Dudziak 	PINGROUP(108, NA, NA, NA, NA, NA, NA, NA),
568db436a71SBartosz Dudziak 	PINGROUP(109, NA, NA, NA, NA, NA, NA, NA),
569db436a71SBartosz Dudziak 	PINGROUP(110, NA, NA, NA, NA, NA, NA, NA),
570db436a71SBartosz Dudziak 	PINGROUP(111, NA, NA, NA, NA, NA, NA, NA),
571db436a71SBartosz Dudziak 	PINGROUP(112, NA, NA, NA, NA, NA, NA, NA),
572db436a71SBartosz Dudziak 	PINGROUP(113, NA, NA, NA, NA, NA, NA, NA),
573db436a71SBartosz Dudziak 	PINGROUP(114, NA, NA, NA, NA, NA, NA, NA),
574db436a71SBartosz Dudziak 	PINGROUP(115, NA, NA, NA, NA, NA, NA, NA),
575db436a71SBartosz Dudziak 	PINGROUP(116, NA, NA, NA, NA, NA, NA, NA),
576db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc1_clk, 0x2044, 13, 6),
577db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc1_cmd, 0x2044, 11, 3),
578db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc1_data, 0x2044, 9, 0),
579db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc2_clk, 0x2048, 14, 6),
580db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc2_cmd, 0x2048, 11, 3),
581db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc2_data, 0x2048, 9, 0),
582db436a71SBartosz Dudziak };
583db436a71SBartosz Dudziak 
584db436a71SBartosz Dudziak #define NUM_GPIO_PINGROUPS 117
585db436a71SBartosz Dudziak 
586db436a71SBartosz Dudziak static const struct msm_pinctrl_soc_data msm8226_pinctrl = {
587db436a71SBartosz Dudziak 	.pins = msm8226_pins,
588db436a71SBartosz Dudziak 	.npins = ARRAY_SIZE(msm8226_pins),
589db436a71SBartosz Dudziak 	.functions = msm8226_functions,
590db436a71SBartosz Dudziak 	.nfunctions = ARRAY_SIZE(msm8226_functions),
591db436a71SBartosz Dudziak 	.groups = msm8226_groups,
592db436a71SBartosz Dudziak 	.ngroups = ARRAY_SIZE(msm8226_groups),
593db436a71SBartosz Dudziak 	.ngpios = NUM_GPIO_PINGROUPS,
594db436a71SBartosz Dudziak };
595db436a71SBartosz Dudziak 
596db436a71SBartosz Dudziak static int msm8226_pinctrl_probe(struct platform_device *pdev)
597db436a71SBartosz Dudziak {
598db436a71SBartosz Dudziak 	return msm_pinctrl_probe(pdev, &msm8226_pinctrl);
599db436a71SBartosz Dudziak }
600db436a71SBartosz Dudziak 
601db436a71SBartosz Dudziak static const struct of_device_id msm8226_pinctrl_of_match[] = {
602db436a71SBartosz Dudziak 	{ .compatible = "qcom,msm8226-pinctrl", },
603db436a71SBartosz Dudziak 	{ },
604db436a71SBartosz Dudziak };
605db436a71SBartosz Dudziak 
606db436a71SBartosz Dudziak static struct platform_driver msm8226_pinctrl_driver = {
607db436a71SBartosz Dudziak 	.driver = {
608db436a71SBartosz Dudziak 		.name = "msm8226-pinctrl",
609db436a71SBartosz Dudziak 		.of_match_table = msm8226_pinctrl_of_match,
610db436a71SBartosz Dudziak 	},
611db436a71SBartosz Dudziak 	.probe = msm8226_pinctrl_probe,
612db436a71SBartosz Dudziak 	.remove = msm_pinctrl_remove,
613db436a71SBartosz Dudziak };
614db436a71SBartosz Dudziak 
615db436a71SBartosz Dudziak static int __init msm8226_pinctrl_init(void)
616db436a71SBartosz Dudziak {
617db436a71SBartosz Dudziak 	return platform_driver_register(&msm8226_pinctrl_driver);
618db436a71SBartosz Dudziak }
619db436a71SBartosz Dudziak arch_initcall(msm8226_pinctrl_init);
620db436a71SBartosz Dudziak 
621db436a71SBartosz Dudziak static void __exit msm8226_pinctrl_exit(void)
622db436a71SBartosz Dudziak {
623db436a71SBartosz Dudziak 	platform_driver_unregister(&msm8226_pinctrl_driver);
624db436a71SBartosz Dudziak }
625db436a71SBartosz Dudziak module_exit(msm8226_pinctrl_exit);
626db436a71SBartosz Dudziak 
627db436a71SBartosz Dudziak MODULE_AUTHOR("Bartosz Dudziak <bartosz.dudziak@snejp.pl>");
628db436a71SBartosz Dudziak MODULE_DESCRIPTION("Qualcomm MSM8226 pinctrl driver");
629db436a71SBartosz Dudziak MODULE_LICENSE("GPL v2");
630db436a71SBartosz Dudziak MODULE_DEVICE_TABLE(of, msm8226_pinctrl_of_match);
631