xref: /openbmc/linux/drivers/pinctrl/qcom/pinctrl-ipq4019.c (revision 5303f7827fcd41d1cf4da9ca9b6b7d360bc07bb7)
1e260d2bbSVaradarajan Narayanan /*
2e260d2bbSVaradarajan Narayanan  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
3e260d2bbSVaradarajan Narayanan  *
4e260d2bbSVaradarajan Narayanan  * This program is free software; you can redistribute it and/or modify
5e260d2bbSVaradarajan Narayanan  * it under the terms of the GNU General Public License version 2 and
6e260d2bbSVaradarajan Narayanan  * only version 2 as published by the Free Software Foundation.
7e260d2bbSVaradarajan Narayanan  *
8e260d2bbSVaradarajan Narayanan  * This program is distributed in the hope that it will be useful,
9e260d2bbSVaradarajan Narayanan  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10e260d2bbSVaradarajan Narayanan  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11e260d2bbSVaradarajan Narayanan  * GNU General Public License for more details.
12e260d2bbSVaradarajan Narayanan  */
13e260d2bbSVaradarajan Narayanan 
14e260d2bbSVaradarajan Narayanan #include <linux/module.h>
15e260d2bbSVaradarajan Narayanan #include <linux/of.h>
16e260d2bbSVaradarajan Narayanan #include <linux/platform_device.h>
17e260d2bbSVaradarajan Narayanan #include <linux/pinctrl/pinctrl.h>
18e260d2bbSVaradarajan Narayanan 
19e260d2bbSVaradarajan Narayanan #include "pinctrl-msm.h"
20e260d2bbSVaradarajan Narayanan 
21e260d2bbSVaradarajan Narayanan static const struct pinctrl_pin_desc ipq4019_pins[] = {
22e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(0, "GPIO_0"),
23e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(1, "GPIO_1"),
24e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(2, "GPIO_2"),
25e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(3, "GPIO_3"),
26e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(4, "GPIO_4"),
27e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(5, "GPIO_5"),
28e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(6, "GPIO_6"),
29e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(7, "GPIO_7"),
30e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(8, "GPIO_8"),
31e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(9, "GPIO_9"),
32e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(10, "GPIO_10"),
33e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(11, "GPIO_11"),
34e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(12, "GPIO_12"),
35e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(13, "GPIO_13"),
36e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(14, "GPIO_14"),
37e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(15, "GPIO_15"),
38e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(16, "GPIO_16"),
39e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(17, "GPIO_17"),
40e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(18, "GPIO_18"),
41e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(19, "GPIO_19"),
42e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(20, "GPIO_20"),
43e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(21, "GPIO_21"),
44e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(22, "GPIO_22"),
45e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(23, "GPIO_23"),
46e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(24, "GPIO_24"),
47e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(25, "GPIO_25"),
48e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(26, "GPIO_26"),
49e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(27, "GPIO_27"),
50e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(28, "GPIO_28"),
51e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(29, "GPIO_29"),
52e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(30, "GPIO_30"),
53e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(31, "GPIO_31"),
54e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(32, "GPIO_32"),
55e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(33, "GPIO_33"),
56e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(34, "GPIO_34"),
57e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(35, "GPIO_35"),
58e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(36, "GPIO_36"),
59e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(37, "GPIO_37"),
60e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(38, "GPIO_38"),
61e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(39, "GPIO_39"),
62e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(40, "GPIO_40"),
63e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(41, "GPIO_41"),
64e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(42, "GPIO_42"),
65e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(43, "GPIO_43"),
66e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(44, "GPIO_44"),
67e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(45, "GPIO_45"),
68e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(46, "GPIO_46"),
69e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(47, "GPIO_47"),
70e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(48, "GPIO_48"),
71e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(49, "GPIO_49"),
72e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(50, "GPIO_50"),
73e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(51, "GPIO_51"),
74e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(52, "GPIO_52"),
75e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(53, "GPIO_53"),
76e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(54, "GPIO_54"),
77e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(55, "GPIO_55"),
78e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(56, "GPIO_56"),
79e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(57, "GPIO_57"),
80e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(58, "GPIO_58"),
81e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(59, "GPIO_59"),
82e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(60, "GPIO_60"),
83e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(61, "GPIO_61"),
84e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(62, "GPIO_62"),
85e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(63, "GPIO_63"),
86e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(64, "GPIO_64"),
87e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(65, "GPIO_65"),
88e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(66, "GPIO_66"),
89e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(67, "GPIO_67"),
90e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(68, "GPIO_68"),
91e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(69, "GPIO_69"),
92e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(70, "GPIO_70"),
93e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(71, "GPIO_71"),
94e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(72, "GPIO_72"),
95e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(73, "GPIO_73"),
96e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(74, "GPIO_74"),
97e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(75, "GPIO_75"),
98e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(76, "GPIO_76"),
99e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(77, "GPIO_77"),
100e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(78, "GPIO_78"),
101e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(79, "GPIO_79"),
102e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(80, "GPIO_80"),
103e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(81, "GPIO_81"),
104e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(82, "GPIO_82"),
105e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(83, "GPIO_83"),
106e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(84, "GPIO_84"),
107e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(85, "GPIO_85"),
108e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(86, "GPIO_86"),
109e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(87, "GPIO_87"),
110e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(88, "GPIO_88"),
111e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(89, "GPIO_89"),
112e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(90, "GPIO_90"),
113e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(91, "GPIO_91"),
114e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(92, "GPIO_92"),
115e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(93, "GPIO_93"),
116e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(94, "GPIO_94"),
117e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(95, "GPIO_95"),
118e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(96, "GPIO_96"),
119e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(97, "GPIO_97"),
120e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(98, "GPIO_98"),
121e260d2bbSVaradarajan Narayanan 	PINCTRL_PIN(99, "GPIO_99"),
122e260d2bbSVaradarajan Narayanan };
123e260d2bbSVaradarajan Narayanan 
124e260d2bbSVaradarajan Narayanan #define DECLARE_QCA_GPIO_PINS(pin) \
125e260d2bbSVaradarajan Narayanan 	static const unsigned int gpio##pin##_pins[] = { pin }
126e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(0);
127e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(1);
128e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(2);
129e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(3);
130e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(4);
131e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(5);
132e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(6);
133e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(7);
134e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(8);
135e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(9);
136e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(10);
137e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(11);
138e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(12);
139e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(13);
140e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(14);
141e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(15);
142e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(16);
143e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(17);
144e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(18);
145e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(19);
146e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(20);
147e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(21);
148e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(22);
149e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(23);
150e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(24);
151e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(25);
152e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(26);
153e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(27);
154e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(28);
155e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(29);
156e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(30);
157e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(31);
158e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(32);
159e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(33);
160e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(34);
161e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(35);
162e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(36);
163e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(37);
164e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(38);
165e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(39);
166e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(40);
167e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(41);
168e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(42);
169e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(43);
170e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(44);
171e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(45);
172e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(46);
173e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(47);
174e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(48);
175e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(49);
176e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(50);
177e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(51);
178e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(52);
179e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(53);
180e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(54);
181e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(55);
182e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(56);
183e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(57);
184e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(58);
185e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(59);
186e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(60);
187e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(61);
188e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(62);
189e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(63);
190e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(64);
191e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(65);
192e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(66);
193e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(67);
194e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(68);
195e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(69);
196e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(70);
197e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(71);
198e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(72);
199e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(73);
200e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(74);
201e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(75);
202e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(76);
203e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(77);
204e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(78);
205e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(79);
206e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(80);
207e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(81);
208e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(82);
209e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(83);
210e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(84);
211e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(85);
212e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(86);
213e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(87);
214e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(88);
215e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(89);
216e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(90);
217e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(91);
218e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(92);
219e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(93);
220e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(94);
221e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(95);
222e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(96);
223e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(97);
224e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(98);
225e260d2bbSVaradarajan Narayanan DECLARE_QCA_GPIO_PINS(99);
226e260d2bbSVaradarajan Narayanan 
227e260d2bbSVaradarajan Narayanan #define FUNCTION(fname)			                \
228e260d2bbSVaradarajan Narayanan 	[qca_mux_##fname] = {		                \
229e260d2bbSVaradarajan Narayanan 		.name = #fname,				\
230e260d2bbSVaradarajan Narayanan 		.groups = fname##_groups,               \
231e260d2bbSVaradarajan Narayanan 		.ngroups = ARRAY_SIZE(fname##_groups),	\
232e260d2bbSVaradarajan Narayanan 	}
233e260d2bbSVaradarajan Narayanan 
234e260d2bbSVaradarajan Narayanan #define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14) \
235e260d2bbSVaradarajan Narayanan 	{					        \
236e260d2bbSVaradarajan Narayanan 		.name = "gpio" #id,			\
237e260d2bbSVaradarajan Narayanan 		.pins = gpio##id##_pins,		\
238e260d2bbSVaradarajan Narayanan 		.npins = (unsigned)ARRAY_SIZE(gpio##id##_pins),	\
239e260d2bbSVaradarajan Narayanan 		.funcs = (int[]){			\
240e260d2bbSVaradarajan Narayanan 			qca_mux_NA, /* gpio mode */	\
241e260d2bbSVaradarajan Narayanan 			qca_mux_##f1,			\
242e260d2bbSVaradarajan Narayanan 			qca_mux_##f2,			\
243e260d2bbSVaradarajan Narayanan 			qca_mux_##f3,			\
244e260d2bbSVaradarajan Narayanan 			qca_mux_##f4,			\
245e260d2bbSVaradarajan Narayanan 			qca_mux_##f5,			\
246e260d2bbSVaradarajan Narayanan 			qca_mux_##f6,			\
247e260d2bbSVaradarajan Narayanan 			qca_mux_##f7,			\
248e260d2bbSVaradarajan Narayanan 			qca_mux_##f8,			\
249e260d2bbSVaradarajan Narayanan 			qca_mux_##f9,			\
250e260d2bbSVaradarajan Narayanan 			qca_mux_##f10,			\
251e260d2bbSVaradarajan Narayanan 			qca_mux_##f11,			\
252e260d2bbSVaradarajan Narayanan 			qca_mux_##f12,			\
253e260d2bbSVaradarajan Narayanan 			qca_mux_##f13,			\
254e260d2bbSVaradarajan Narayanan 			qca_mux_##f14			\
255e260d2bbSVaradarajan Narayanan 		},				        \
256e260d2bbSVaradarajan Narayanan 		.nfuncs = 15,				\
257e260d2bbSVaradarajan Narayanan 		.ctl_reg = 0x1000 + 0x10 * id,		\
258e260d2bbSVaradarajan Narayanan 		.io_reg = 0x1004 + 0x10 * id,		\
259e260d2bbSVaradarajan Narayanan 		.intr_cfg_reg = 0x1008 + 0x10 * id,	\
260e260d2bbSVaradarajan Narayanan 		.intr_status_reg = 0x100c + 0x10 * id,	\
261e260d2bbSVaradarajan Narayanan 		.intr_target_reg = 0x400 + 0x4 * id,	\
262e260d2bbSVaradarajan Narayanan 		.mux_bit = 2,			\
263e260d2bbSVaradarajan Narayanan 		.pull_bit = 0,			\
264e260d2bbSVaradarajan Narayanan 		.drv_bit = 6,			\
265e260d2bbSVaradarajan Narayanan 		.oe_bit = 9,			\
266e260d2bbSVaradarajan Narayanan 		.in_bit = 0,			\
267e260d2bbSVaradarajan Narayanan 		.out_bit = 1,			\
268e260d2bbSVaradarajan Narayanan 		.intr_enable_bit = 0,		\
269e260d2bbSVaradarajan Narayanan 		.intr_status_bit = 0,		\
270e260d2bbSVaradarajan Narayanan 		.intr_target_bit = 5,		\
271e260d2bbSVaradarajan Narayanan 		.intr_raw_status_bit = 4,	\
272e260d2bbSVaradarajan Narayanan 		.intr_polarity_bit = 1,		\
273e260d2bbSVaradarajan Narayanan 		.intr_detection_bit = 2,	\
274e260d2bbSVaradarajan Narayanan 		.intr_detection_width = 2,	\
275e260d2bbSVaradarajan Narayanan 	}
276e260d2bbSVaradarajan Narayanan 
277e260d2bbSVaradarajan Narayanan 
278e260d2bbSVaradarajan Narayanan enum ipq4019_functions {
279e260d2bbSVaradarajan Narayanan 	qca_mux_gpio,
280e260d2bbSVaradarajan Narayanan 	qca_mux_blsp_uart1,
281e260d2bbSVaradarajan Narayanan 	qca_mux_blsp_i2c0,
282e260d2bbSVaradarajan Narayanan 	qca_mux_blsp_i2c1,
283e260d2bbSVaradarajan Narayanan 	qca_mux_blsp_uart0,
284e260d2bbSVaradarajan Narayanan 	qca_mux_blsp_spi1,
285e260d2bbSVaradarajan Narayanan 	qca_mux_blsp_spi0,
286e260d2bbSVaradarajan Narayanan 	qca_mux_NA,
287e260d2bbSVaradarajan Narayanan };
288e260d2bbSVaradarajan Narayanan 
289e260d2bbSVaradarajan Narayanan static const char * const gpio_groups[] = {
290e260d2bbSVaradarajan Narayanan 	"gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
291e260d2bbSVaradarajan Narayanan 	"gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
292e260d2bbSVaradarajan Narayanan 	"gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
293e260d2bbSVaradarajan Narayanan 	"gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
294e260d2bbSVaradarajan Narayanan 	"gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
295e260d2bbSVaradarajan Narayanan 	"gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
296e260d2bbSVaradarajan Narayanan 	"gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
297e260d2bbSVaradarajan Narayanan 	"gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
298e260d2bbSVaradarajan Narayanan 	"gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
299e260d2bbSVaradarajan Narayanan 	"gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
300e260d2bbSVaradarajan Narayanan 	"gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
301e260d2bbSVaradarajan Narayanan 	"gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
302e260d2bbSVaradarajan Narayanan 	"gpio85", "gpio86", "gpio87", "gpio88", "gpio89", "gpio90", "gpio91",
303e260d2bbSVaradarajan Narayanan 	"gpio92", "gpio93", "gpio94", "gpio95", "gpio96", "gpio97", "gpio98",
304e260d2bbSVaradarajan Narayanan 	"gpio99",
305e260d2bbSVaradarajan Narayanan };
306e260d2bbSVaradarajan Narayanan 
307e260d2bbSVaradarajan Narayanan static const char * const blsp_uart1_groups[] = {
308e260d2bbSVaradarajan Narayanan 	"gpio8", "gpio9", "gpio10", "gpio11",
309e260d2bbSVaradarajan Narayanan };
310e260d2bbSVaradarajan Narayanan static const char * const blsp_i2c0_groups[] = {
311e260d2bbSVaradarajan Narayanan 	"gpio10", "gpio11", "gpio20", "gpio21", "gpio58", "gpio59",
312e260d2bbSVaradarajan Narayanan };
313e260d2bbSVaradarajan Narayanan static const char * const blsp_spi0_groups[] = {
314e260d2bbSVaradarajan Narayanan 	"gpio12", "gpio13", "gpio14", "gpio15", "gpio45",
315e260d2bbSVaradarajan Narayanan 	"gpio54", "gpio55", "gpio56", "gpio57",
316e260d2bbSVaradarajan Narayanan };
317e260d2bbSVaradarajan Narayanan static const char * const blsp_i2c1_groups[] = {
318e260d2bbSVaradarajan Narayanan 	"gpio12", "gpio13", "gpio34", "gpio35",
319e260d2bbSVaradarajan Narayanan };
320e260d2bbSVaradarajan Narayanan static const char * const blsp_uart0_groups[] = {
321e260d2bbSVaradarajan Narayanan 	"gpio16", "gpio17", "gpio60", "gpio61",
322e260d2bbSVaradarajan Narayanan };
323e260d2bbSVaradarajan Narayanan static const char * const blsp_spi1_groups[] = {
324e260d2bbSVaradarajan Narayanan 	"gpio44", "gpio45", "gpio46", "gpio47",
325e260d2bbSVaradarajan Narayanan };
326e260d2bbSVaradarajan Narayanan 
327e260d2bbSVaradarajan Narayanan static const struct msm_function ipq4019_functions[] = {
328e260d2bbSVaradarajan Narayanan 	FUNCTION(gpio),
329e260d2bbSVaradarajan Narayanan 	FUNCTION(blsp_uart1),
330e260d2bbSVaradarajan Narayanan 	FUNCTION(blsp_i2c0),
331e260d2bbSVaradarajan Narayanan 	FUNCTION(blsp_i2c1),
332e260d2bbSVaradarajan Narayanan 	FUNCTION(blsp_uart0),
333e260d2bbSVaradarajan Narayanan 	FUNCTION(blsp_spi1),
334e260d2bbSVaradarajan Narayanan 	FUNCTION(blsp_spi0),
335e260d2bbSVaradarajan Narayanan };
336e260d2bbSVaradarajan Narayanan 
337e260d2bbSVaradarajan Narayanan static const struct msm_pingroup ipq4019_groups[] = {
338e260d2bbSVaradarajan Narayanan 	PINGROUP(0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
339e260d2bbSVaradarajan Narayanan 	PINGROUP(1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
340e260d2bbSVaradarajan Narayanan 	PINGROUP(2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
341e260d2bbSVaradarajan Narayanan 	PINGROUP(3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
342e260d2bbSVaradarajan Narayanan 	PINGROUP(4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
343e260d2bbSVaradarajan Narayanan 	PINGROUP(5, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
344e260d2bbSVaradarajan Narayanan 	PINGROUP(6, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
345e260d2bbSVaradarajan Narayanan 	PINGROUP(7, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
346e260d2bbSVaradarajan Narayanan 	PINGROUP(8, blsp_uart1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
347e260d2bbSVaradarajan Narayanan 	PINGROUP(9, blsp_uart1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
348e260d2bbSVaradarajan Narayanan 	PINGROUP(10, blsp_uart1, NA, NA, blsp_i2c0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
349e260d2bbSVaradarajan Narayanan 	PINGROUP(11, blsp_uart1, NA, NA, blsp_i2c0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
350e260d2bbSVaradarajan Narayanan 	PINGROUP(12, blsp_spi0, blsp_i2c1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
351e260d2bbSVaradarajan Narayanan 	PINGROUP(13, blsp_spi0, blsp_i2c1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
352e260d2bbSVaradarajan Narayanan 	PINGROUP(14, blsp_spi0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
353e260d2bbSVaradarajan Narayanan 	PINGROUP(15, blsp_spi0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
354e260d2bbSVaradarajan Narayanan 	PINGROUP(16, blsp_uart0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
355e260d2bbSVaradarajan Narayanan 	PINGROUP(17, blsp_uart0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
356e260d2bbSVaradarajan Narayanan 	PINGROUP(18, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
357e260d2bbSVaradarajan Narayanan 	PINGROUP(19, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
358e260d2bbSVaradarajan Narayanan 	PINGROUP(20, blsp_i2c0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
359e260d2bbSVaradarajan Narayanan 	PINGROUP(21, blsp_i2c0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
360e260d2bbSVaradarajan Narayanan 	PINGROUP(22, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
361e260d2bbSVaradarajan Narayanan 	PINGROUP(23, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
362e260d2bbSVaradarajan Narayanan 	PINGROUP(24, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
363e260d2bbSVaradarajan Narayanan 	PINGROUP(25, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
364e260d2bbSVaradarajan Narayanan 	PINGROUP(26, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
365e260d2bbSVaradarajan Narayanan 	PINGROUP(27, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
366e260d2bbSVaradarajan Narayanan 	PINGROUP(28, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
367e260d2bbSVaradarajan Narayanan 	PINGROUP(29, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
368e260d2bbSVaradarajan Narayanan 	PINGROUP(30, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
369e260d2bbSVaradarajan Narayanan 	PINGROUP(31, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
370e260d2bbSVaradarajan Narayanan 	PINGROUP(32, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
371e260d2bbSVaradarajan Narayanan 	PINGROUP(33, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
372e260d2bbSVaradarajan Narayanan 	PINGROUP(34, blsp_i2c1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
373e260d2bbSVaradarajan Narayanan 	PINGROUP(35, blsp_i2c1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
374e260d2bbSVaradarajan Narayanan 	PINGROUP(36, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
375e260d2bbSVaradarajan Narayanan 	PINGROUP(37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
376e260d2bbSVaradarajan Narayanan 	PINGROUP(38, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
377e260d2bbSVaradarajan Narayanan 	PINGROUP(39, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
378e260d2bbSVaradarajan Narayanan 	PINGROUP(40, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
379e260d2bbSVaradarajan Narayanan 	PINGROUP(41, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
380e260d2bbSVaradarajan Narayanan 	PINGROUP(42, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
381e260d2bbSVaradarajan Narayanan 	PINGROUP(43, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
382e260d2bbSVaradarajan Narayanan 	PINGROUP(44, NA, blsp_spi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
383e260d2bbSVaradarajan Narayanan 	PINGROUP(45, NA, blsp_spi1, blsp_spi0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
384e260d2bbSVaradarajan Narayanan 	PINGROUP(46, NA, blsp_spi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
385e260d2bbSVaradarajan Narayanan 	PINGROUP(47, NA, blsp_spi1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
386e260d2bbSVaradarajan Narayanan 	PINGROUP(48, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
387e260d2bbSVaradarajan Narayanan 	PINGROUP(49, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
388e260d2bbSVaradarajan Narayanan 	PINGROUP(50, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
389e260d2bbSVaradarajan Narayanan 	PINGROUP(51, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
390e260d2bbSVaradarajan Narayanan 	PINGROUP(52, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
391e260d2bbSVaradarajan Narayanan 	PINGROUP(53, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
392e260d2bbSVaradarajan Narayanan 	PINGROUP(54, NA, blsp_spi0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
393e260d2bbSVaradarajan Narayanan 	PINGROUP(55, NA, blsp_spi0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
394e260d2bbSVaradarajan Narayanan 	PINGROUP(56, NA, blsp_spi0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
395e260d2bbSVaradarajan Narayanan 	PINGROUP(57, NA, blsp_spi0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
396e260d2bbSVaradarajan Narayanan 	PINGROUP(58, NA, NA, blsp_i2c0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
397e260d2bbSVaradarajan Narayanan 	PINGROUP(59, NA, blsp_i2c0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
398e260d2bbSVaradarajan Narayanan 	PINGROUP(60, NA, blsp_uart0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
399e260d2bbSVaradarajan Narayanan 	PINGROUP(61, NA, blsp_uart0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
400e260d2bbSVaradarajan Narayanan 	PINGROUP(62, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
401e260d2bbSVaradarajan Narayanan 	PINGROUP(63, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
402e260d2bbSVaradarajan Narayanan 	PINGROUP(64, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
403e260d2bbSVaradarajan Narayanan 	PINGROUP(65, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
404e260d2bbSVaradarajan Narayanan 	PINGROUP(66, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
405e260d2bbSVaradarajan Narayanan 	PINGROUP(67, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
406e260d2bbSVaradarajan Narayanan 	PINGROUP(68, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
407e260d2bbSVaradarajan Narayanan 	PINGROUP(69, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
408e260d2bbSVaradarajan Narayanan };
409e260d2bbSVaradarajan Narayanan 
410e260d2bbSVaradarajan Narayanan static const struct msm_pinctrl_soc_data ipq4019_pinctrl = {
411e260d2bbSVaradarajan Narayanan 	.pins = ipq4019_pins,
412e260d2bbSVaradarajan Narayanan 	.npins = ARRAY_SIZE(ipq4019_pins),
413e260d2bbSVaradarajan Narayanan 	.functions = ipq4019_functions,
414e260d2bbSVaradarajan Narayanan 	.nfunctions = ARRAY_SIZE(ipq4019_functions),
415e260d2bbSVaradarajan Narayanan 	.groups = ipq4019_groups,
416e260d2bbSVaradarajan Narayanan 	.ngroups = ARRAY_SIZE(ipq4019_groups),
417*5303f782SMatthew McClintock 	.ngpios = 100,
418e260d2bbSVaradarajan Narayanan };
419e260d2bbSVaradarajan Narayanan 
420e260d2bbSVaradarajan Narayanan static int ipq4019_pinctrl_probe(struct platform_device *pdev)
421e260d2bbSVaradarajan Narayanan {
422e260d2bbSVaradarajan Narayanan 	return msm_pinctrl_probe(pdev, &ipq4019_pinctrl);
423e260d2bbSVaradarajan Narayanan }
424e260d2bbSVaradarajan Narayanan 
425e260d2bbSVaradarajan Narayanan static const struct of_device_id ipq4019_pinctrl_of_match[] = {
426e260d2bbSVaradarajan Narayanan 	{ .compatible = "qcom,ipq4019-pinctrl", },
427e260d2bbSVaradarajan Narayanan 	{ },
428e260d2bbSVaradarajan Narayanan };
429e260d2bbSVaradarajan Narayanan 
430e260d2bbSVaradarajan Narayanan static struct platform_driver ipq4019_pinctrl_driver = {
431e260d2bbSVaradarajan Narayanan 	.driver = {
432e260d2bbSVaradarajan Narayanan 		.name = "ipq4019-pinctrl",
433e260d2bbSVaradarajan Narayanan 		.of_match_table = ipq4019_pinctrl_of_match,
434e260d2bbSVaradarajan Narayanan 	},
435e260d2bbSVaradarajan Narayanan 	.probe = ipq4019_pinctrl_probe,
436e260d2bbSVaradarajan Narayanan 	.remove = msm_pinctrl_remove,
437e260d2bbSVaradarajan Narayanan };
438e260d2bbSVaradarajan Narayanan 
439e260d2bbSVaradarajan Narayanan static int __init ipq4019_pinctrl_init(void)
440e260d2bbSVaradarajan Narayanan {
441e260d2bbSVaradarajan Narayanan 	return platform_driver_register(&ipq4019_pinctrl_driver);
442e260d2bbSVaradarajan Narayanan }
443e260d2bbSVaradarajan Narayanan arch_initcall(ipq4019_pinctrl_init);
444e260d2bbSVaradarajan Narayanan 
445e260d2bbSVaradarajan Narayanan static void __exit ipq4019_pinctrl_exit(void)
446e260d2bbSVaradarajan Narayanan {
447e260d2bbSVaradarajan Narayanan 	platform_driver_unregister(&ipq4019_pinctrl_driver);
448e260d2bbSVaradarajan Narayanan }
449e260d2bbSVaradarajan Narayanan module_exit(ipq4019_pinctrl_exit);
450e260d2bbSVaradarajan Narayanan 
451e260d2bbSVaradarajan Narayanan MODULE_DESCRIPTION("Qualcomm ipq4019 pinctrl driver");
452e260d2bbSVaradarajan Narayanan MODULE_LICENSE("GPL v2");
453e260d2bbSVaradarajan Narayanan MODULE_DEVICE_TABLE(of, ipq4019_pinctrl_of_match);
454