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 
10db436a71SBartosz Dudziak #include "pinctrl-msm.h"
11db436a71SBartosz Dudziak 
12db436a71SBartosz Dudziak static const struct pinctrl_pin_desc msm8226_pins[] = {
13db436a71SBartosz Dudziak 	PINCTRL_PIN(0, "GPIO_0"),
14db436a71SBartosz Dudziak 	PINCTRL_PIN(1, "GPIO_1"),
15db436a71SBartosz Dudziak 	PINCTRL_PIN(2, "GPIO_2"),
16db436a71SBartosz Dudziak 	PINCTRL_PIN(3, "GPIO_3"),
17db436a71SBartosz Dudziak 	PINCTRL_PIN(4, "GPIO_4"),
18db436a71SBartosz Dudziak 	PINCTRL_PIN(5, "GPIO_5"),
19db436a71SBartosz Dudziak 	PINCTRL_PIN(6, "GPIO_6"),
20db436a71SBartosz Dudziak 	PINCTRL_PIN(7, "GPIO_7"),
21db436a71SBartosz Dudziak 	PINCTRL_PIN(8, "GPIO_8"),
22db436a71SBartosz Dudziak 	PINCTRL_PIN(9, "GPIO_9"),
23db436a71SBartosz Dudziak 	PINCTRL_PIN(10, "GPIO_10"),
24db436a71SBartosz Dudziak 	PINCTRL_PIN(11, "GPIO_11"),
25db436a71SBartosz Dudziak 	PINCTRL_PIN(12, "GPIO_12"),
26db436a71SBartosz Dudziak 	PINCTRL_PIN(13, "GPIO_13"),
27db436a71SBartosz Dudziak 	PINCTRL_PIN(14, "GPIO_14"),
28db436a71SBartosz Dudziak 	PINCTRL_PIN(15, "GPIO_15"),
29db436a71SBartosz Dudziak 	PINCTRL_PIN(16, "GPIO_16"),
30db436a71SBartosz Dudziak 	PINCTRL_PIN(17, "GPIO_17"),
31db436a71SBartosz Dudziak 	PINCTRL_PIN(18, "GPIO_18"),
32db436a71SBartosz Dudziak 	PINCTRL_PIN(19, "GPIO_19"),
33db436a71SBartosz Dudziak 	PINCTRL_PIN(20, "GPIO_20"),
34db436a71SBartosz Dudziak 	PINCTRL_PIN(21, "GPIO_21"),
35db436a71SBartosz Dudziak 	PINCTRL_PIN(22, "GPIO_22"),
36db436a71SBartosz Dudziak 	PINCTRL_PIN(23, "GPIO_23"),
37db436a71SBartosz Dudziak 	PINCTRL_PIN(24, "GPIO_24"),
38db436a71SBartosz Dudziak 	PINCTRL_PIN(25, "GPIO_25"),
39db436a71SBartosz Dudziak 	PINCTRL_PIN(26, "GPIO_26"),
40db436a71SBartosz Dudziak 	PINCTRL_PIN(27, "GPIO_27"),
41db436a71SBartosz Dudziak 	PINCTRL_PIN(28, "GPIO_28"),
42db436a71SBartosz Dudziak 	PINCTRL_PIN(29, "GPIO_29"),
43db436a71SBartosz Dudziak 	PINCTRL_PIN(30, "GPIO_30"),
44db436a71SBartosz Dudziak 	PINCTRL_PIN(31, "GPIO_31"),
45db436a71SBartosz Dudziak 	PINCTRL_PIN(32, "GPIO_32"),
46db436a71SBartosz Dudziak 	PINCTRL_PIN(33, "GPIO_33"),
47db436a71SBartosz Dudziak 	PINCTRL_PIN(34, "GPIO_34"),
48db436a71SBartosz Dudziak 	PINCTRL_PIN(35, "GPIO_35"),
49db436a71SBartosz Dudziak 	PINCTRL_PIN(36, "GPIO_36"),
50db436a71SBartosz Dudziak 	PINCTRL_PIN(37, "GPIO_37"),
51db436a71SBartosz Dudziak 	PINCTRL_PIN(38, "GPIO_38"),
52db436a71SBartosz Dudziak 	PINCTRL_PIN(39, "GPIO_39"),
53db436a71SBartosz Dudziak 	PINCTRL_PIN(40, "GPIO_40"),
54db436a71SBartosz Dudziak 	PINCTRL_PIN(41, "GPIO_41"),
55db436a71SBartosz Dudziak 	PINCTRL_PIN(42, "GPIO_42"),
56db436a71SBartosz Dudziak 	PINCTRL_PIN(43, "GPIO_43"),
57db436a71SBartosz Dudziak 	PINCTRL_PIN(44, "GPIO_44"),
58db436a71SBartosz Dudziak 	PINCTRL_PIN(45, "GPIO_45"),
59db436a71SBartosz Dudziak 	PINCTRL_PIN(46, "GPIO_46"),
60db436a71SBartosz Dudziak 	PINCTRL_PIN(47, "GPIO_47"),
61db436a71SBartosz Dudziak 	PINCTRL_PIN(48, "GPIO_48"),
62db436a71SBartosz Dudziak 	PINCTRL_PIN(49, "GPIO_49"),
63db436a71SBartosz Dudziak 	PINCTRL_PIN(50, "GPIO_50"),
64db436a71SBartosz Dudziak 	PINCTRL_PIN(51, "GPIO_51"),
65db436a71SBartosz Dudziak 	PINCTRL_PIN(52, "GPIO_52"),
66db436a71SBartosz Dudziak 	PINCTRL_PIN(53, "GPIO_53"),
67db436a71SBartosz Dudziak 	PINCTRL_PIN(54, "GPIO_54"),
68db436a71SBartosz Dudziak 	PINCTRL_PIN(55, "GPIO_55"),
69db436a71SBartosz Dudziak 	PINCTRL_PIN(56, "GPIO_56"),
70db436a71SBartosz Dudziak 	PINCTRL_PIN(57, "GPIO_57"),
71db436a71SBartosz Dudziak 	PINCTRL_PIN(58, "GPIO_58"),
72db436a71SBartosz Dudziak 	PINCTRL_PIN(59, "GPIO_59"),
73db436a71SBartosz Dudziak 	PINCTRL_PIN(60, "GPIO_60"),
74db436a71SBartosz Dudziak 	PINCTRL_PIN(61, "GPIO_61"),
75db436a71SBartosz Dudziak 	PINCTRL_PIN(62, "GPIO_62"),
76db436a71SBartosz Dudziak 	PINCTRL_PIN(63, "GPIO_63"),
77db436a71SBartosz Dudziak 	PINCTRL_PIN(64, "GPIO_64"),
78db436a71SBartosz Dudziak 	PINCTRL_PIN(65, "GPIO_65"),
79db436a71SBartosz Dudziak 	PINCTRL_PIN(66, "GPIO_66"),
80db436a71SBartosz Dudziak 	PINCTRL_PIN(67, "GPIO_67"),
81db436a71SBartosz Dudziak 	PINCTRL_PIN(68, "GPIO_68"),
82db436a71SBartosz Dudziak 	PINCTRL_PIN(69, "GPIO_69"),
83db436a71SBartosz Dudziak 	PINCTRL_PIN(70, "GPIO_70"),
84db436a71SBartosz Dudziak 	PINCTRL_PIN(71, "GPIO_71"),
85db436a71SBartosz Dudziak 	PINCTRL_PIN(72, "GPIO_72"),
86db436a71SBartosz Dudziak 	PINCTRL_PIN(73, "GPIO_73"),
87db436a71SBartosz Dudziak 	PINCTRL_PIN(74, "GPIO_74"),
88db436a71SBartosz Dudziak 	PINCTRL_PIN(75, "GPIO_75"),
89db436a71SBartosz Dudziak 	PINCTRL_PIN(76, "GPIO_76"),
90db436a71SBartosz Dudziak 	PINCTRL_PIN(77, "GPIO_77"),
91db436a71SBartosz Dudziak 	PINCTRL_PIN(78, "GPIO_78"),
92db436a71SBartosz Dudziak 	PINCTRL_PIN(79, "GPIO_79"),
93db436a71SBartosz Dudziak 	PINCTRL_PIN(80, "GPIO_80"),
94db436a71SBartosz Dudziak 	PINCTRL_PIN(81, "GPIO_81"),
95db436a71SBartosz Dudziak 	PINCTRL_PIN(82, "GPIO_82"),
96db436a71SBartosz Dudziak 	PINCTRL_PIN(83, "GPIO_83"),
97db436a71SBartosz Dudziak 	PINCTRL_PIN(84, "GPIO_84"),
98db436a71SBartosz Dudziak 	PINCTRL_PIN(85, "GPIO_85"),
99db436a71SBartosz Dudziak 	PINCTRL_PIN(86, "GPIO_86"),
100db436a71SBartosz Dudziak 	PINCTRL_PIN(87, "GPIO_87"),
101db436a71SBartosz Dudziak 	PINCTRL_PIN(88, "GPIO_88"),
102db436a71SBartosz Dudziak 	PINCTRL_PIN(89, "GPIO_89"),
103db436a71SBartosz Dudziak 	PINCTRL_PIN(90, "GPIO_90"),
104db436a71SBartosz Dudziak 	PINCTRL_PIN(91, "GPIO_91"),
105db436a71SBartosz Dudziak 	PINCTRL_PIN(92, "GPIO_92"),
106db436a71SBartosz Dudziak 	PINCTRL_PIN(93, "GPIO_93"),
107db436a71SBartosz Dudziak 	PINCTRL_PIN(94, "GPIO_94"),
108db436a71SBartosz Dudziak 	PINCTRL_PIN(95, "GPIO_95"),
109db436a71SBartosz Dudziak 	PINCTRL_PIN(96, "GPIO_96"),
110db436a71SBartosz Dudziak 	PINCTRL_PIN(97, "GPIO_97"),
111db436a71SBartosz Dudziak 	PINCTRL_PIN(98, "GPIO_98"),
112db436a71SBartosz Dudziak 	PINCTRL_PIN(99, "GPIO_99"),
113db436a71SBartosz Dudziak 	PINCTRL_PIN(100, "GPIO_100"),
114db436a71SBartosz Dudziak 	PINCTRL_PIN(101, "GPIO_101"),
115db436a71SBartosz Dudziak 	PINCTRL_PIN(102, "GPIO_102"),
116db436a71SBartosz Dudziak 	PINCTRL_PIN(103, "GPIO_103"),
117db436a71SBartosz Dudziak 	PINCTRL_PIN(104, "GPIO_104"),
118db436a71SBartosz Dudziak 	PINCTRL_PIN(105, "GPIO_105"),
119db436a71SBartosz Dudziak 	PINCTRL_PIN(106, "GPIO_106"),
120db436a71SBartosz Dudziak 	PINCTRL_PIN(107, "GPIO_107"),
121db436a71SBartosz Dudziak 	PINCTRL_PIN(108, "GPIO_108"),
122db436a71SBartosz Dudziak 	PINCTRL_PIN(109, "GPIO_109"),
123db436a71SBartosz Dudziak 	PINCTRL_PIN(110, "GPIO_110"),
124db436a71SBartosz Dudziak 	PINCTRL_PIN(111, "GPIO_111"),
125db436a71SBartosz Dudziak 	PINCTRL_PIN(112, "GPIO_112"),
126db436a71SBartosz Dudziak 	PINCTRL_PIN(113, "GPIO_113"),
127db436a71SBartosz Dudziak 	PINCTRL_PIN(114, "GPIO_114"),
128db436a71SBartosz Dudziak 	PINCTRL_PIN(115, "GPIO_115"),
129db436a71SBartosz Dudziak 	PINCTRL_PIN(116, "GPIO_116"),
130db436a71SBartosz Dudziak 
131db436a71SBartosz Dudziak 	PINCTRL_PIN(117, "SDC1_CLK"),
132db436a71SBartosz Dudziak 	PINCTRL_PIN(118, "SDC1_CMD"),
133db436a71SBartosz Dudziak 	PINCTRL_PIN(119, "SDC1_DATA"),
134db436a71SBartosz Dudziak 	PINCTRL_PIN(120, "SDC2_CLK"),
135db436a71SBartosz Dudziak 	PINCTRL_PIN(121, "SDC2_CMD"),
136db436a71SBartosz Dudziak 	PINCTRL_PIN(122, "SDC2_DATA"),
137db436a71SBartosz Dudziak };
138db436a71SBartosz Dudziak 
139db436a71SBartosz Dudziak #define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
140db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(0);
141db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(1);
142db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(2);
143db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(3);
144db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(4);
145db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(5);
146db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(6);
147db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(7);
148db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(8);
149db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(9);
150db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(10);
151db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(11);
152db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(12);
153db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(13);
154db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(14);
155db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(15);
156db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(16);
157db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(17);
158db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(18);
159db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(19);
160db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(20);
161db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(21);
162db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(22);
163db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(23);
164db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(24);
165db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(25);
166db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(26);
167db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(27);
168db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(28);
169db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(29);
170db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(30);
171db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(31);
172db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(32);
173db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(33);
174db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(34);
175db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(35);
176db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(36);
177db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(37);
178db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(38);
179db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(39);
180db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(40);
181db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(41);
182db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(42);
183db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(43);
184db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(44);
185db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(45);
186db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(46);
187db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(47);
188db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(48);
189db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(49);
190db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(50);
191db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(51);
192db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(52);
193db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(53);
194db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(54);
195db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(55);
196db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(56);
197db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(57);
198db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(58);
199db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(59);
200db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(60);
201db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(61);
202db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(62);
203db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(63);
204db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(64);
205db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(65);
206db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(66);
207db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(67);
208db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(68);
209db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(69);
210db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(70);
211db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(71);
212db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(72);
213db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(73);
214db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(74);
215db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(75);
216db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(76);
217db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(77);
218db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(78);
219db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(79);
220db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(80);
221db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(81);
222db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(82);
223db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(83);
224db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(84);
225db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(85);
226db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(86);
227db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(87);
228db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(88);
229db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(89);
230db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(90);
231db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(91);
232db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(92);
233db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(93);
234db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(94);
235db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(95);
236db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(96);
237db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(97);
238db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(98);
239db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(99);
240db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(100);
241db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(101);
242db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(102);
243db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(103);
244db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(104);
245db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(105);
246db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(106);
247db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(107);
248db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(108);
249db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(109);
250db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(110);
251db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(111);
252db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(112);
253db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(113);
254db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(114);
255db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(115);
256db436a71SBartosz Dudziak DECLARE_MSM_GPIO_PINS(116);
257db436a71SBartosz Dudziak 
258db436a71SBartosz Dudziak static const unsigned int sdc1_clk_pins[] = { 117 };
259db436a71SBartosz Dudziak static const unsigned int sdc1_cmd_pins[] = { 118 };
260db436a71SBartosz Dudziak static const unsigned int sdc1_data_pins[] = { 119 };
261db436a71SBartosz Dudziak static const unsigned int sdc2_clk_pins[] = { 120 };
262db436a71SBartosz Dudziak static const unsigned int sdc2_cmd_pins[] = { 121 };
263db436a71SBartosz Dudziak static const unsigned int sdc2_data_pins[] = { 122 };
264db436a71SBartosz Dudziak 
265db436a71SBartosz Dudziak #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7)	\
266db436a71SBartosz Dudziak 	{						\
267*6a16d1a5SRohit Agarwal 		.grp = PINCTRL_PINGROUP("gpio" #id, 	\
268*6a16d1a5SRohit Agarwal 			gpio##id##_pins, 		\
269*6a16d1a5SRohit Agarwal 			ARRAY_SIZE(gpio##id##_pins)),	\
270db436a71SBartosz Dudziak 		.funcs = (int[]){			\
271c7a291dbSRohit Agarwal 			msm_mux_gpio,			\
272c7a291dbSRohit Agarwal 			msm_mux_##f1,			\
273c7a291dbSRohit Agarwal 			msm_mux_##f2,			\
274c7a291dbSRohit Agarwal 			msm_mux_##f3,			\
275c7a291dbSRohit Agarwal 			msm_mux_##f4,			\
276c7a291dbSRohit Agarwal 			msm_mux_##f5,			\
277c7a291dbSRohit Agarwal 			msm_mux_##f6,			\
278c7a291dbSRohit Agarwal 			msm_mux_##f7			\
279db436a71SBartosz Dudziak 		},					\
280db436a71SBartosz Dudziak 		.nfuncs = 8,				\
281db436a71SBartosz Dudziak 		.ctl_reg = 0x1000 + 0x10 * id,		\
282db436a71SBartosz Dudziak 		.io_reg = 0x1004 + 0x10 * id,		\
283db436a71SBartosz Dudziak 		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
284db436a71SBartosz Dudziak 		.intr_status_reg = 0x100c + 0x10 * id,	\
285db436a71SBartosz Dudziak 		.intr_target_reg = 0x1008 + 0x10 * id,	\
286db436a71SBartosz Dudziak 		.mux_bit = 2,				\
287db436a71SBartosz Dudziak 		.pull_bit = 0,				\
288db436a71SBartosz Dudziak 		.drv_bit = 6,				\
289db436a71SBartosz Dudziak 		.oe_bit = 9,				\
290db436a71SBartosz Dudziak 		.in_bit = 0,				\
291db436a71SBartosz Dudziak 		.out_bit = 1,				\
292db436a71SBartosz Dudziak 		.intr_enable_bit = 0,			\
293db436a71SBartosz Dudziak 		.intr_status_bit = 0,			\
294db436a71SBartosz Dudziak 		.intr_target_bit = 5,			\
295db436a71SBartosz Dudziak 		.intr_target_kpss_val = 4,		\
296db436a71SBartosz Dudziak 		.intr_raw_status_bit = 4,		\
297db436a71SBartosz Dudziak 		.intr_polarity_bit = 1,			\
298db436a71SBartosz Dudziak 		.intr_detection_bit = 2,		\
299db436a71SBartosz Dudziak 		.intr_detection_width = 2,		\
300db436a71SBartosz Dudziak 	}
301db436a71SBartosz Dudziak 
302db436a71SBartosz Dudziak #define SDC_PINGROUP(pg_name, ctl, pull, drv)		\
303db436a71SBartosz Dudziak 	{						\
304*6a16d1a5SRohit Agarwal 		.grp = PINCTRL_PINGROUP(#pg_name, 	\
305*6a16d1a5SRohit Agarwal 			pg_name##_pins, 		\
306*6a16d1a5SRohit Agarwal 			ARRAY_SIZE(pg_name##_pins)),	\
307db436a71SBartosz Dudziak 		.ctl_reg = ctl,				\
308db436a71SBartosz Dudziak 		.io_reg = 0,				\
309db436a71SBartosz Dudziak 		.intr_cfg_reg = 0,			\
310db436a71SBartosz Dudziak 		.intr_status_reg = 0,			\
311db436a71SBartosz Dudziak 		.intr_target_reg = 0,			\
312db436a71SBartosz Dudziak 		.mux_bit = -1,				\
313db436a71SBartosz Dudziak 		.pull_bit = pull,			\
314db436a71SBartosz Dudziak 		.drv_bit = drv,				\
315db436a71SBartosz Dudziak 		.oe_bit = -1,				\
316db436a71SBartosz Dudziak 		.in_bit = -1,				\
317db436a71SBartosz Dudziak 		.out_bit = -1,				\
318db436a71SBartosz Dudziak 		.intr_enable_bit = -1,			\
319db436a71SBartosz Dudziak 		.intr_status_bit = -1,			\
320db436a71SBartosz Dudziak 		.intr_target_bit = -1,			\
321db436a71SBartosz Dudziak 		.intr_target_kpss_val = -1,		\
322db436a71SBartosz Dudziak 		.intr_raw_status_bit = -1,		\
323db436a71SBartosz Dudziak 		.intr_polarity_bit = -1,		\
324db436a71SBartosz Dudziak 		.intr_detection_bit = -1,		\
325db436a71SBartosz Dudziak 		.intr_detection_width = -1,		\
326db436a71SBartosz Dudziak 	}
327db436a71SBartosz Dudziak 
328db436a71SBartosz Dudziak /*
329db436a71SBartosz Dudziak  * TODO: Add the rest of the possible functions and fill out
330db436a71SBartosz Dudziak  * the pingroup table below.
331db436a71SBartosz Dudziak  */
332db436a71SBartosz Dudziak enum msm8226_functions {
333c7a291dbSRohit Agarwal 	msm_mux_audio_pcm,
334c7a291dbSRohit Agarwal 	msm_mux_blsp_i2c1,
335c7a291dbSRohit Agarwal 	msm_mux_blsp_i2c2,
336c7a291dbSRohit Agarwal 	msm_mux_blsp_i2c3,
337c7a291dbSRohit Agarwal 	msm_mux_blsp_i2c4,
338c7a291dbSRohit Agarwal 	msm_mux_blsp_i2c5,
339c7a291dbSRohit Agarwal 	msm_mux_blsp_spi1,
340c7a291dbSRohit Agarwal 	msm_mux_blsp_spi2,
341c7a291dbSRohit Agarwal 	msm_mux_blsp_spi3,
342c7a291dbSRohit Agarwal 	msm_mux_blsp_spi4,
343c7a291dbSRohit Agarwal 	msm_mux_blsp_spi5,
344c7a291dbSRohit Agarwal 	msm_mux_blsp_uart1,
345c7a291dbSRohit Agarwal 	msm_mux_blsp_uart2,
346c7a291dbSRohit Agarwal 	msm_mux_blsp_uart3,
347c7a291dbSRohit Agarwal 	msm_mux_blsp_uart4,
348c7a291dbSRohit Agarwal 	msm_mux_blsp_uart5,
349c7a291dbSRohit Agarwal 	msm_mux_blsp_uim1,
350c7a291dbSRohit Agarwal 	msm_mux_blsp_uim2,
351c7a291dbSRohit Agarwal 	msm_mux_blsp_uim3,
352c7a291dbSRohit Agarwal 	msm_mux_blsp_uim4,
353c7a291dbSRohit Agarwal 	msm_mux_blsp_uim5,
354c7a291dbSRohit Agarwal 	msm_mux_cam_mclk0,
355c7a291dbSRohit Agarwal 	msm_mux_cam_mclk1,
356c7a291dbSRohit Agarwal 	msm_mux_cci_i2c0,
357c7a291dbSRohit Agarwal 	msm_mux_gp0_clk,
358c7a291dbSRohit Agarwal 	msm_mux_gp1_clk,
359c7a291dbSRohit Agarwal 	msm_mux_gpio,
360c7a291dbSRohit Agarwal 	msm_mux_sdc3,
361c7a291dbSRohit Agarwal 	msm_mux_wlan,
362c7a291dbSRohit Agarwal 	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 
385f5cdffdcSLuca Weiss static const char * const audio_pcm_groups[] = {
386f5cdffdcSLuca Weiss 	"gpio63", "gpio64", "gpio65", "gpio66"
387f5cdffdcSLuca Weiss };
388f5cdffdcSLuca Weiss 
389db436a71SBartosz Dudziak static const char * const blsp_uart1_groups[] = {
390db436a71SBartosz Dudziak 	"gpio0", "gpio1", "gpio2", "gpio3"
391db436a71SBartosz Dudziak };
392db436a71SBartosz Dudziak 
393db436a71SBartosz Dudziak static const char * const blsp_uim1_groups[] = { "gpio0", "gpio1" };
394db436a71SBartosz Dudziak static const char * const blsp_i2c1_groups[] = { "gpio2", "gpio3" };
395db436a71SBartosz Dudziak static const char * const blsp_spi1_groups[] = {
396db436a71SBartosz Dudziak 	"gpio0", "gpio1", "gpio2", "gpio3"
397db436a71SBartosz Dudziak };
398db436a71SBartosz Dudziak 
399db436a71SBartosz Dudziak static const char * const blsp_uart2_groups[] = {
400db436a71SBartosz Dudziak 	"gpio4", "gpio5", "gpio6", "gpio7"
401db436a71SBartosz Dudziak };
402db436a71SBartosz Dudziak 
403db436a71SBartosz Dudziak static const char * const blsp_uim2_groups[] = { "gpio4", "gpio5" };
404db436a71SBartosz Dudziak static const char * const blsp_i2c2_groups[] = { "gpio6", "gpio7" };
405db436a71SBartosz Dudziak static const char * const blsp_spi2_groups[] = {
406db436a71SBartosz Dudziak 	"gpio4", "gpio5", "gpio6", "gpio7"
407db436a71SBartosz Dudziak };
408db436a71SBartosz Dudziak 
409db436a71SBartosz Dudziak static const char * const blsp_uart3_groups[] = {
410db436a71SBartosz Dudziak 	"gpio8", "gpio9", "gpio10", "gpio11"
411db436a71SBartosz Dudziak };
412db436a71SBartosz Dudziak 
413db436a71SBartosz Dudziak static const char * const blsp_uim3_groups[] = { "gpio8", "gpio9" };
414db436a71SBartosz Dudziak static const char * const blsp_i2c3_groups[] = { "gpio10", "gpio11" };
415db436a71SBartosz Dudziak static const char * const blsp_spi3_groups[] = {
416db436a71SBartosz Dudziak 	"gpio8", "gpio9", "gpio10", "gpio11"
417db436a71SBartosz Dudziak };
418db436a71SBartosz Dudziak 
419f5cdffdcSLuca Weiss static const char * const blsp_uart4_groups[] = {
420f5cdffdcSLuca Weiss 	"gpio12", "gpio13", "gpio14", "gpio15"
421f5cdffdcSLuca Weiss };
422f5cdffdcSLuca Weiss 
423f5cdffdcSLuca Weiss static const char * const blsp_uim4_groups[] = { "gpio12", "gpio13" };
424f5cdffdcSLuca Weiss static const char * const blsp_i2c4_groups[] = { "gpio14", "gpio15" };
425f5cdffdcSLuca Weiss static const char * const blsp_spi4_groups[] = {
426f5cdffdcSLuca Weiss 	"gpio12", "gpio13", "gpio14", "gpio15"
427f5cdffdcSLuca Weiss };
428f5cdffdcSLuca Weiss 
429db436a71SBartosz Dudziak static const char * const blsp_uart5_groups[] = {
430db436a71SBartosz Dudziak 	"gpio16", "gpio17", "gpio18", "gpio19"
431db436a71SBartosz Dudziak };
432db436a71SBartosz Dudziak 
433db436a71SBartosz Dudziak static const char * const blsp_uim5_groups[] = { "gpio16", "gpio17" };
434db436a71SBartosz Dudziak static const char * const blsp_i2c5_groups[] = { "gpio18", "gpio19" };
435db436a71SBartosz Dudziak static const char * const blsp_spi5_groups[] = {
436db436a71SBartosz Dudziak 	"gpio16", "gpio17", "gpio18", "gpio19"
437db436a71SBartosz Dudziak };
438db436a71SBartosz Dudziak 
439db436a71SBartosz Dudziak static const char * const cci_i2c0_groups[] = { "gpio29", "gpio30" };
440db436a71SBartosz Dudziak 
441db436a71SBartosz Dudziak static const char * const cam_mclk0_groups[] = { "gpio26" };
442db436a71SBartosz Dudziak static const char * const cam_mclk1_groups[] = { "gpio27" };
443db436a71SBartosz Dudziak 
444814ee08dSLuca Weiss static const char * const gp0_clk_groups[] = { "gpio33" };
445814ee08dSLuca Weiss static const char * const gp1_clk_groups[] = { "gpio34" };
446814ee08dSLuca Weiss 
447f5cdffdcSLuca Weiss static const char * const sdc3_groups[] = {
448f5cdffdcSLuca Weiss 	"gpio39", "gpio40", "gpio41", "gpio42", "gpio43", "gpio44"
449f5cdffdcSLuca Weiss };
450f5cdffdcSLuca Weiss 
451db436a71SBartosz Dudziak static const char * const wlan_groups[] = {
452db436a71SBartosz Dudziak 	"gpio40", "gpio41", "gpio42", "gpio43", "gpio44"
453db436a71SBartosz Dudziak };
454db436a71SBartosz Dudziak 
455c7a291dbSRohit Agarwal static const struct pinfunction msm8226_functions[] = {
456c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(audio_pcm),
457c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_i2c1),
458c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_i2c2),
459c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_i2c3),
460c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_i2c4),
461c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_i2c5),
462c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_spi1),
463c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_spi2),
464c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_spi3),
465c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_spi4),
466c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_spi5),
467c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uart1),
468c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uart2),
469c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uart3),
470c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uart4),
471c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uart5),
472c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uim1),
473c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uim2),
474c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uim3),
475c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uim4),
476c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(blsp_uim5),
477c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(cam_mclk0),
478c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(cam_mclk1),
479c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(cci_i2c0),
480c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp0_clk),
481c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gp1_clk),
482c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(gpio),
483c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(sdc3),
484c7a291dbSRohit Agarwal 	MSM_PIN_FUNCTION(wlan),
485db436a71SBartosz Dudziak };
486db436a71SBartosz Dudziak 
487db436a71SBartosz Dudziak static const struct msm_pingroup msm8226_groups[] = {
488db436a71SBartosz Dudziak 	PINGROUP(0,   blsp_spi1, blsp_uart1, blsp_uim1, NA, NA, NA, NA),
489db436a71SBartosz Dudziak 	PINGROUP(1,   blsp_spi1, blsp_uart1, blsp_uim1, NA, NA, NA, NA),
490db436a71SBartosz Dudziak 	PINGROUP(2,   blsp_spi1, blsp_uart1, blsp_i2c1, NA, NA, NA, NA),
491db436a71SBartosz Dudziak 	PINGROUP(3,   blsp_spi1, blsp_uart1, blsp_i2c1, NA, NA, NA, NA),
492db436a71SBartosz Dudziak 	PINGROUP(4,   blsp_spi2, blsp_uart2, blsp_uim2, NA, NA, NA, NA),
493db436a71SBartosz Dudziak 	PINGROUP(5,   blsp_spi2, blsp_uart2, blsp_uim2, NA, NA, NA, NA),
494db436a71SBartosz Dudziak 	PINGROUP(6,   blsp_spi2, blsp_uart2, blsp_i2c2, NA, NA, NA, NA),
495db436a71SBartosz Dudziak 	PINGROUP(7,   blsp_spi2, blsp_uart2, blsp_i2c2, NA, NA, NA, NA),
496db436a71SBartosz Dudziak 	PINGROUP(8,   blsp_spi3, blsp_uart3, blsp_uim3, NA, NA, NA, NA),
497db436a71SBartosz Dudziak 	PINGROUP(9,   blsp_spi3, blsp_uart3, blsp_uim3, NA, NA, NA, NA),
498db436a71SBartosz Dudziak 	PINGROUP(10,  blsp_spi3, blsp_uart3, blsp_i2c3, NA, NA, NA, NA),
499db436a71SBartosz Dudziak 	PINGROUP(11,  blsp_spi3, blsp_uart3, blsp_i2c3, NA, NA, NA, NA),
500f5cdffdcSLuca Weiss 	PINGROUP(12,  blsp_spi4, blsp_uart4, blsp_uim4, NA, NA, NA, NA),
501f5cdffdcSLuca Weiss 	PINGROUP(13,  blsp_spi4, blsp_uart4, blsp_uim4, NA, NA, NA, NA),
502f5cdffdcSLuca Weiss 	PINGROUP(14,  blsp_spi4, blsp_uart4, blsp_i2c4, NA, NA, NA, NA),
503f5cdffdcSLuca Weiss 	PINGROUP(15,  blsp_spi4, blsp_uart4, blsp_i2c4, NA, NA, NA, NA),
504db436a71SBartosz Dudziak 	PINGROUP(16,  blsp_spi5, blsp_uart5, blsp_uim5, NA, NA, NA, NA),
505db436a71SBartosz Dudziak 	PINGROUP(17,  blsp_spi5, blsp_uart5, blsp_uim5, NA, NA, NA, NA),
506db436a71SBartosz Dudziak 	PINGROUP(18,  blsp_spi5, blsp_uart5, blsp_i2c5, NA, NA, NA, NA),
507db436a71SBartosz Dudziak 	PINGROUP(19,  blsp_spi5, blsp_uart5, blsp_i2c5, NA, NA, NA, NA),
508db436a71SBartosz Dudziak 	PINGROUP(20,  NA, NA, NA, NA, NA, NA, NA),
509db436a71SBartosz Dudziak 	PINGROUP(21,  NA, NA, NA, NA, NA, NA, NA),
510db436a71SBartosz Dudziak 	PINGROUP(22,  NA, NA, NA, NA, NA, NA, NA),
511db436a71SBartosz Dudziak 	PINGROUP(23,  NA, NA, NA, NA, NA, NA, NA),
512db436a71SBartosz Dudziak 	PINGROUP(24,  NA, NA, NA, NA, NA, NA, NA),
513db436a71SBartosz Dudziak 	PINGROUP(25,  NA, NA, NA, NA, NA, NA, NA),
514db436a71SBartosz Dudziak 	PINGROUP(26,  cam_mclk0, NA, NA, NA, NA, NA, NA),
515db436a71SBartosz Dudziak 	PINGROUP(27,  cam_mclk1, NA, NA, NA, NA, NA, NA),
516db436a71SBartosz Dudziak 	PINGROUP(28,  NA, NA, NA, NA, NA, NA, NA),
517db436a71SBartosz Dudziak 	PINGROUP(29,  cci_i2c0, NA, NA, NA, NA, NA, NA),
518db436a71SBartosz Dudziak 	PINGROUP(30,  cci_i2c0, NA, NA, NA, NA, NA, NA),
519db436a71SBartosz Dudziak 	PINGROUP(31,  NA, NA, NA, NA, NA, NA, NA),
520db436a71SBartosz Dudziak 	PINGROUP(32,  NA, NA, NA, NA, NA, NA, NA),
521814ee08dSLuca Weiss 	PINGROUP(33,  NA, NA, gp0_clk, NA, NA, NA, NA),
522814ee08dSLuca Weiss 	PINGROUP(34,  NA, NA, gp1_clk, NA, NA, NA, NA),
523db436a71SBartosz Dudziak 	PINGROUP(35,  NA, NA, NA, NA, NA, NA, NA),
524db436a71SBartosz Dudziak 	PINGROUP(36,  NA, NA, NA, NA, NA, NA, NA),
525db436a71SBartosz Dudziak 	PINGROUP(37,  NA, NA, NA, NA, NA, NA, NA),
526db436a71SBartosz Dudziak 	PINGROUP(38,  NA, NA, NA, NA, NA, NA, NA),
527f5cdffdcSLuca Weiss 	PINGROUP(39,  NA, sdc3, NA, NA, NA, NA, NA),
528f5cdffdcSLuca Weiss 	PINGROUP(40,  wlan, sdc3, NA, NA, NA, NA, NA),
529f5cdffdcSLuca Weiss 	PINGROUP(41,  wlan, sdc3, NA, NA, NA, NA, NA),
530f5cdffdcSLuca Weiss 	PINGROUP(42,  wlan, sdc3, NA, NA, NA, NA, NA),
531f5cdffdcSLuca Weiss 	PINGROUP(43,  wlan, sdc3, NA, NA, NA, NA, NA),
532f5cdffdcSLuca Weiss 	PINGROUP(44,  wlan, sdc3, NA, NA, NA, NA, NA),
533db436a71SBartosz Dudziak 	PINGROUP(45,  NA, NA, NA, NA, NA, NA, NA),
534db436a71SBartosz Dudziak 	PINGROUP(46,  NA, NA, NA, NA, NA, NA, NA),
535db436a71SBartosz Dudziak 	PINGROUP(47,  NA, NA, NA, NA, NA, NA, NA),
536db436a71SBartosz Dudziak 	PINGROUP(48,  NA, NA, NA, NA, NA, NA, NA),
537db436a71SBartosz Dudziak 	PINGROUP(49,  NA, NA, NA, NA, NA, NA, NA),
538db436a71SBartosz Dudziak 	PINGROUP(50,  NA, NA, NA, NA, NA, NA, NA),
539db436a71SBartosz Dudziak 	PINGROUP(51,  NA, NA, NA, NA, NA, NA, NA),
540db436a71SBartosz Dudziak 	PINGROUP(52,  NA, NA, NA, NA, NA, NA, NA),
541db436a71SBartosz Dudziak 	PINGROUP(53,  NA, NA, NA, NA, NA, NA, NA),
542db436a71SBartosz Dudziak 	PINGROUP(54,  NA, NA, NA, NA, NA, NA, NA),
543db436a71SBartosz Dudziak 	PINGROUP(55,  NA, NA, NA, NA, NA, NA, NA),
544db436a71SBartosz Dudziak 	PINGROUP(56,  NA, NA, NA, NA, NA, NA, NA),
545db436a71SBartosz Dudziak 	PINGROUP(57,  NA, NA, NA, NA, NA, NA, NA),
546db436a71SBartosz Dudziak 	PINGROUP(58,  NA, NA, NA, NA, NA, NA, NA),
547db436a71SBartosz Dudziak 	PINGROUP(59,  NA, NA, NA, NA, NA, NA, NA),
548db436a71SBartosz Dudziak 	PINGROUP(60,  NA, NA, NA, NA, NA, NA, NA),
549db436a71SBartosz Dudziak 	PINGROUP(61,  NA, NA, NA, NA, NA, NA, NA),
550db436a71SBartosz Dudziak 	PINGROUP(62,  NA, NA, NA, NA, NA, NA, NA),
551f5cdffdcSLuca Weiss 	PINGROUP(63,  audio_pcm, NA, NA, NA, NA, NA, NA),
552f5cdffdcSLuca Weiss 	PINGROUP(64,  audio_pcm, NA, NA, NA, NA, NA, NA),
553f5cdffdcSLuca Weiss 	PINGROUP(65,  audio_pcm, NA, NA, NA, NA, NA, NA),
554f5cdffdcSLuca Weiss 	PINGROUP(66,  audio_pcm, NA, NA, NA, NA, NA, NA),
555db436a71SBartosz Dudziak 	PINGROUP(67,  NA, NA, NA, NA, NA, NA, NA),
556db436a71SBartosz Dudziak 	PINGROUP(68,  NA, NA, NA, NA, NA, NA, NA),
557db436a71SBartosz Dudziak 	PINGROUP(69,  NA, NA, NA, NA, NA, NA, NA),
558db436a71SBartosz Dudziak 	PINGROUP(70,  NA, NA, NA, NA, NA, NA, NA),
559db436a71SBartosz Dudziak 	PINGROUP(71,  NA, NA, NA, NA, NA, NA, NA),
560db436a71SBartosz Dudziak 	PINGROUP(72,  NA, NA, NA, NA, NA, NA, NA),
561db436a71SBartosz Dudziak 	PINGROUP(73,  NA, NA, NA, NA, NA, NA, NA),
562db436a71SBartosz Dudziak 	PINGROUP(74,  NA, NA, NA, NA, NA, NA, NA),
563db436a71SBartosz Dudziak 	PINGROUP(75,  NA, NA, NA, NA, NA, NA, NA),
564db436a71SBartosz Dudziak 	PINGROUP(76,  NA, NA, NA, NA, NA, NA, NA),
565db436a71SBartosz Dudziak 	PINGROUP(77,  NA, NA, NA, NA, NA, NA, NA),
566db436a71SBartosz Dudziak 	PINGROUP(78,  NA, NA, NA, NA, NA, NA, NA),
567db436a71SBartosz Dudziak 	PINGROUP(79,  NA, NA, NA, NA, NA, NA, NA),
568db436a71SBartosz Dudziak 	PINGROUP(80,  NA, NA, NA, NA, NA, NA, NA),
569db436a71SBartosz Dudziak 	PINGROUP(81,  NA, NA, NA, NA, NA, NA, NA),
570db436a71SBartosz Dudziak 	PINGROUP(82,  NA, NA, NA, NA, NA, NA, NA),
571db436a71SBartosz Dudziak 	PINGROUP(83,  NA, NA, NA, NA, NA, NA, NA),
572db436a71SBartosz Dudziak 	PINGROUP(84,  NA, NA, NA, NA, NA, NA, NA),
573db436a71SBartosz Dudziak 	PINGROUP(85,  NA, NA, NA, NA, NA, NA, NA),
574db436a71SBartosz Dudziak 	PINGROUP(86,  NA, NA, NA, NA, NA, NA, NA),
575db436a71SBartosz Dudziak 	PINGROUP(87,  NA, NA, NA, NA, NA, NA, NA),
576db436a71SBartosz Dudziak 	PINGROUP(88,  NA, NA, NA, NA, NA, NA, NA),
577db436a71SBartosz Dudziak 	PINGROUP(89,  NA, NA, NA, NA, NA, NA, NA),
578db436a71SBartosz Dudziak 	PINGROUP(90,  NA, NA, NA, NA, NA, NA, NA),
579db436a71SBartosz Dudziak 	PINGROUP(91,  NA, NA, NA, NA, NA, NA, NA),
580db436a71SBartosz Dudziak 	PINGROUP(92,  NA, NA, NA, NA, NA, NA, NA),
581db436a71SBartosz Dudziak 	PINGROUP(93,  NA, NA, NA, NA, NA, NA, NA),
582db436a71SBartosz Dudziak 	PINGROUP(94,  NA, NA, NA, NA, NA, NA, NA),
583db436a71SBartosz Dudziak 	PINGROUP(95,  NA, NA, NA, NA, NA, NA, NA),
584db436a71SBartosz Dudziak 	PINGROUP(96,  NA, NA, NA, NA, NA, NA, NA),
585db436a71SBartosz Dudziak 	PINGROUP(97,  NA, NA, NA, NA, NA, NA, NA),
586db436a71SBartosz Dudziak 	PINGROUP(98,  NA, NA, NA, NA, NA, NA, NA),
587db436a71SBartosz Dudziak 	PINGROUP(99,  NA, NA, NA, NA, NA, NA, NA),
588db436a71SBartosz Dudziak 	PINGROUP(100, NA, NA, NA, NA, NA, NA, NA),
589db436a71SBartosz Dudziak 	PINGROUP(101, NA, NA, NA, NA, NA, NA, NA),
590db436a71SBartosz Dudziak 	PINGROUP(102, NA, NA, NA, NA, NA, NA, NA),
591db436a71SBartosz Dudziak 	PINGROUP(103, NA, NA, NA, NA, NA, NA, NA),
592db436a71SBartosz Dudziak 	PINGROUP(104, NA, NA, NA, NA, NA, NA, NA),
593db436a71SBartosz Dudziak 	PINGROUP(105, NA, NA, NA, NA, NA, NA, NA),
594db436a71SBartosz Dudziak 	PINGROUP(106, NA, NA, NA, NA, NA, NA, NA),
595db436a71SBartosz Dudziak 	PINGROUP(107, NA, NA, NA, NA, NA, NA, NA),
596db436a71SBartosz Dudziak 	PINGROUP(108, NA, NA, NA, NA, NA, NA, NA),
597db436a71SBartosz Dudziak 	PINGROUP(109, NA, NA, NA, NA, NA, NA, NA),
598db436a71SBartosz Dudziak 	PINGROUP(110, NA, NA, NA, NA, NA, NA, NA),
599db436a71SBartosz Dudziak 	PINGROUP(111, NA, NA, NA, NA, NA, NA, NA),
600db436a71SBartosz Dudziak 	PINGROUP(112, NA, NA, NA, NA, NA, NA, NA),
601db436a71SBartosz Dudziak 	PINGROUP(113, NA, NA, NA, NA, NA, NA, NA),
602db436a71SBartosz Dudziak 	PINGROUP(114, NA, NA, NA, NA, NA, NA, NA),
603db436a71SBartosz Dudziak 	PINGROUP(115, NA, NA, NA, NA, NA, NA, NA),
604db436a71SBartosz Dudziak 	PINGROUP(116, NA, NA, NA, NA, NA, NA, NA),
605db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc1_clk, 0x2044, 13, 6),
606db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc1_cmd, 0x2044, 11, 3),
607db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc1_data, 0x2044, 9, 0),
608db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc2_clk, 0x2048, 14, 6),
609db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc2_cmd, 0x2048, 11, 3),
610db436a71SBartosz Dudziak 	SDC_PINGROUP(sdc2_data, 0x2048, 9, 0),
611db436a71SBartosz Dudziak };
612db436a71SBartosz Dudziak 
613db436a71SBartosz Dudziak #define NUM_GPIO_PINGROUPS 117
614db436a71SBartosz Dudziak 
615db436a71SBartosz Dudziak static const struct msm_pinctrl_soc_data msm8226_pinctrl = {
616db436a71SBartosz Dudziak 	.pins = msm8226_pins,
617db436a71SBartosz Dudziak 	.npins = ARRAY_SIZE(msm8226_pins),
618db436a71SBartosz Dudziak 	.functions = msm8226_functions,
619db436a71SBartosz Dudziak 	.nfunctions = ARRAY_SIZE(msm8226_functions),
620db436a71SBartosz Dudziak 	.groups = msm8226_groups,
621db436a71SBartosz Dudziak 	.ngroups = ARRAY_SIZE(msm8226_groups),
622db436a71SBartosz Dudziak 	.ngpios = NUM_GPIO_PINGROUPS,
623db436a71SBartosz Dudziak };
624db436a71SBartosz Dudziak 
msm8226_pinctrl_probe(struct platform_device * pdev)625db436a71SBartosz Dudziak static int msm8226_pinctrl_probe(struct platform_device *pdev)
626db436a71SBartosz Dudziak {
627db436a71SBartosz Dudziak 	return msm_pinctrl_probe(pdev, &msm8226_pinctrl);
628db436a71SBartosz Dudziak }
629db436a71SBartosz Dudziak 
630db436a71SBartosz Dudziak static const struct of_device_id msm8226_pinctrl_of_match[] = {
631db436a71SBartosz Dudziak 	{ .compatible = "qcom,msm8226-pinctrl", },
632db436a71SBartosz Dudziak 	{ },
633db436a71SBartosz Dudziak };
634db436a71SBartosz Dudziak 
635db436a71SBartosz Dudziak static struct platform_driver msm8226_pinctrl_driver = {
636db436a71SBartosz Dudziak 	.driver = {
637db436a71SBartosz Dudziak 		.name = "msm8226-pinctrl",
638db436a71SBartosz Dudziak 		.of_match_table = msm8226_pinctrl_of_match,
639db436a71SBartosz Dudziak 	},
640db436a71SBartosz Dudziak 	.probe = msm8226_pinctrl_probe,
641db436a71SBartosz Dudziak 	.remove = msm_pinctrl_remove,
642db436a71SBartosz Dudziak };
643db436a71SBartosz Dudziak 
msm8226_pinctrl_init(void)644db436a71SBartosz Dudziak static int __init msm8226_pinctrl_init(void)
645db436a71SBartosz Dudziak {
646db436a71SBartosz Dudziak 	return platform_driver_register(&msm8226_pinctrl_driver);
647db436a71SBartosz Dudziak }
648db436a71SBartosz Dudziak arch_initcall(msm8226_pinctrl_init);
649db436a71SBartosz Dudziak 
msm8226_pinctrl_exit(void)650db436a71SBartosz Dudziak static void __exit msm8226_pinctrl_exit(void)
651db436a71SBartosz Dudziak {
652db436a71SBartosz Dudziak 	platform_driver_unregister(&msm8226_pinctrl_driver);
653db436a71SBartosz Dudziak }
654db436a71SBartosz Dudziak module_exit(msm8226_pinctrl_exit);
655db436a71SBartosz Dudziak 
656db436a71SBartosz Dudziak MODULE_AUTHOR("Bartosz Dudziak <bartosz.dudziak@snejp.pl>");
657db436a71SBartosz Dudziak MODULE_DESCRIPTION("Qualcomm MSM8226 pinctrl driver");
658db436a71SBartosz Dudziak MODULE_LICENSE("GPL v2");
659db436a71SBartosz Dudziak MODULE_DEVICE_TABLE(of, msm8226_pinctrl_of_match);
660