1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | /* |
3 | * Marvell PXA27x family pin control |
4 | * |
5 | * Copyright (C) 2015 Robert Jarzmik |
6 | */ |
7 | #include <linux/module.h> |
8 | #include <linux/platform_device.h> |
9 | #include <linux/of.h> |
10 | #include <linux/pinctrl/pinctrl.h> |
11 | |
12 | #include "pinctrl-pxa2xx.h" |
13 | |
14 | static const struct pxa_desc_pin pxa27x_pins[] = { |
15 | PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(0)), |
16 | PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(1)), |
17 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(9), |
18 | PXA_FUNCTION(0, 3, "FFCTS" ), |
19 | PXA_FUNCTION(1, 1, "HZ_CLK" ), |
20 | PXA_FUNCTION(1, 3, "CHOUT<0>" )), |
21 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(10), |
22 | PXA_FUNCTION(0, 1, "FFDCD" ), |
23 | PXA_FUNCTION(0, 3, "USB_P3_5" ), |
24 | PXA_FUNCTION(1, 1, "HZ_CLK" ), |
25 | PXA_FUNCTION(1, 3, "CHOUT<1>" )), |
26 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(11), |
27 | PXA_FUNCTION(0, 1, "EXT_SYNC<0>" ), |
28 | PXA_FUNCTION(0, 2, "SSPRXD2" ), |
29 | PXA_FUNCTION(0, 3, "USB_P3_1" ), |
30 | PXA_FUNCTION(1, 1, "CHOUT<0>" ), |
31 | PXA_FUNCTION(1, 1, "PWM_OUT<2>" ), |
32 | PXA_FUNCTION(1, 3, "48_MHz" )), |
33 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(12), |
34 | PXA_FUNCTION(0, 1, "EXT_SYNC<1>" ), |
35 | PXA_FUNCTION(0, 2, "CIF_DD<7>" ), |
36 | PXA_FUNCTION(1, 1, "CHOUT<1>" ), |
37 | PXA_FUNCTION(1, 1, "PWM_OUT<3>" ), |
38 | PXA_FUNCTION(1, 3, "48_MHz" )), |
39 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(13), |
40 | PXA_FUNCTION(0, 1, "CLK_EXT" ), |
41 | PXA_FUNCTION(0, 2, "KP_DKIN<7>" ), |
42 | PXA_FUNCTION(0, 3, "KP_MKIN<7>" ), |
43 | PXA_FUNCTION(1, 1, "SSPTXD2" )), |
44 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(14), |
45 | PXA_FUNCTION(0, 1, "L_VSYNC" ), |
46 | PXA_FUNCTION(0, 2, "SSPSFRM2" ), |
47 | PXA_FUNCTION(1, 1, "SSPSFRM2" ), |
48 | PXA_FUNCTION(1, 3, "UCLK" )), |
49 | PXA_GPIO_ONLY_PIN(PXA_PINCTRL_PIN(15)), |
50 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(16), |
51 | PXA_FUNCTION(0, 1, "KP_MKIN<5>" ), |
52 | PXA_FUNCTION(1, 2, "PWM_OUT<0>" ), |
53 | PXA_FUNCTION(1, 3, "FFTXD" )), |
54 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(17), |
55 | PXA_FUNCTION(0, 1, "KP_MKIN<6>" ), |
56 | PXA_FUNCTION(0, 2, "CIF_DD<6>" ), |
57 | PXA_FUNCTION(1, 2, "PWM_OUT<1>" )), |
58 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(18), |
59 | PXA_FUNCTION(0, 1, "RDY" )), |
60 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(19), |
61 | PXA_FUNCTION(0, 1, "SSPSCLK2" ), |
62 | PXA_FUNCTION(0, 3, "FFRXD" ), |
63 | PXA_FUNCTION(1, 1, "SSPSCLK2" ), |
64 | PXA_FUNCTION(1, 2, "L_CS" ), |
65 | PXA_FUNCTION(1, 3, "nURST" )), |
66 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(20), |
67 | PXA_FUNCTION(0, 1, "DREQ<0>" ), |
68 | PXA_FUNCTION(0, 2, "MBREQ" ), |
69 | PXA_FUNCTION(1, 1, "nSDCS<2>" )), |
70 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(21), |
71 | PXA_FUNCTION(1, 1, "nSDCS<3>" ), |
72 | PXA_FUNCTION(1, 2, "DVAL<0>" ), |
73 | PXA_FUNCTION(1, 3, "MBGNT" )), |
74 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(22), |
75 | PXA_FUNCTION(0, 1, "SSPEXTCLK2" ), |
76 | PXA_FUNCTION(0, 2, "SSPSCLKEN2" ), |
77 | PXA_FUNCTION(0, 3, "SSPSCLK2" ), |
78 | PXA_FUNCTION(1, 1, "KP_MKOUT<7>" ), |
79 | PXA_FUNCTION(1, 2, "SSPSYSCLK2" ), |
80 | PXA_FUNCTION(1, 3, "SSPSCLK2" )), |
81 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(23), |
82 | PXA_FUNCTION(0, 2, "SSPSCLK" ), |
83 | PXA_FUNCTION(1, 1, "CIF_MCLK" ), |
84 | PXA_FUNCTION(1, 1, "SSPSCLK" )), |
85 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(24), |
86 | PXA_FUNCTION(0, 1, "CIF_FV" ), |
87 | PXA_FUNCTION(0, 2, "SSPSFRM" ), |
88 | PXA_FUNCTION(1, 1, "CIF_FV" ), |
89 | PXA_FUNCTION(1, 2, "SSPSFRM" )), |
90 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(25), |
91 | PXA_FUNCTION(0, 1, "CIF_LV" ), |
92 | PXA_FUNCTION(1, 1, "CIF_LV" ), |
93 | PXA_FUNCTION(1, 2, "SSPTXD" )), |
94 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(26), |
95 | PXA_FUNCTION(0, 1, "SSPRXD" ), |
96 | PXA_FUNCTION(0, 2, "CIF_PCLK" ), |
97 | PXA_FUNCTION(0, 3, "FFCTS" )), |
98 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(27), |
99 | PXA_FUNCTION(0, 1, "SSPEXTCLK" ), |
100 | PXA_FUNCTION(0, 2, "SSPSCLKEN" ), |
101 | PXA_FUNCTION(0, 3, "CIF_DD<0>" ), |
102 | PXA_FUNCTION(1, 1, "SSPSYSCLK" ), |
103 | PXA_FUNCTION(1, 3, "FFRTS" )), |
104 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(28), |
105 | PXA_FUNCTION(0, 1, "AC97_BITCLK" ), |
106 | PXA_FUNCTION(0, 2, "I2S_BITCLK" ), |
107 | PXA_FUNCTION(0, 3, "SSPSFRM" ), |
108 | PXA_FUNCTION(1, 1, "I2S_BITCLK" ), |
109 | PXA_FUNCTION(1, 3, "SSPSFRM" )), |
110 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(29), |
111 | PXA_FUNCTION(0, 1, "AC97_SDATA_IN_0" ), |
112 | PXA_FUNCTION(0, 2, "I2S_SDATA_IN" ), |
113 | PXA_FUNCTION(0, 3, "SSPSCLK" ), |
114 | PXA_FUNCTION(1, 1, "SSPRXD2" ), |
115 | PXA_FUNCTION(1, 3, "SSPSCLK" )), |
116 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(30), |
117 | PXA_FUNCTION(1, 1, "I2S_SDATA_OUT" ), |
118 | PXA_FUNCTION(1, 2, "AC97_SDATA_OUT" ), |
119 | PXA_FUNCTION(1, 3, "USB_P3_2" )), |
120 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(31), |
121 | PXA_FUNCTION(1, 1, "I2S_SYNC" ), |
122 | PXA_FUNCTION(1, 2, "AC97_SYNC" ), |
123 | PXA_FUNCTION(1, 3, "USB_P3_6" )), |
124 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(32), |
125 | PXA_FUNCTION(1, 1, "MSSCLK" ), |
126 | PXA_FUNCTION(1, 2, "MMCLK" )), |
127 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(33), |
128 | PXA_FUNCTION(0, 1, "FFRXD" ), |
129 | PXA_FUNCTION(0, 2, "FFDSR" ), |
130 | PXA_FUNCTION(1, 1, "DVAL<1>" ), |
131 | PXA_FUNCTION(1, 2, "nCS<5>" ), |
132 | PXA_FUNCTION(1, 3, "MBGNT" )), |
133 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(34), |
134 | PXA_FUNCTION(0, 1, "FFRXD" ), |
135 | PXA_FUNCTION(0, 2, "KP_MKIN<3>" ), |
136 | PXA_FUNCTION(0, 3, "SSPSCLK3" ), |
137 | PXA_FUNCTION(1, 1, "USB_P2_2" ), |
138 | PXA_FUNCTION(1, 3, "SSPSCLK3" )), |
139 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(35), |
140 | PXA_FUNCTION(0, 1, "FFCTS" ), |
141 | PXA_FUNCTION(0, 2, "USB_P2_1" ), |
142 | PXA_FUNCTION(0, 3, "SSPSFRM3" ), |
143 | PXA_FUNCTION(1, 2, "KP_MKOUT<6>" ), |
144 | PXA_FUNCTION(1, 3, "SSPTXD3" )), |
145 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(36), |
146 | PXA_FUNCTION(0, 1, "FFDCD" ), |
147 | PXA_FUNCTION(0, 2, "SSPSCLK2" ), |
148 | PXA_FUNCTION(0, 3, "KP_MKIN<7>" ), |
149 | PXA_FUNCTION(1, 1, "USB_P2_4" ), |
150 | PXA_FUNCTION(1, 2, "SSPSCLK2" )), |
151 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(37), |
152 | PXA_FUNCTION(0, 1, "FFDSR" ), |
153 | PXA_FUNCTION(0, 2, "SSPSFRM2" ), |
154 | PXA_FUNCTION(0, 3, "KP_MKIN<3>" ), |
155 | PXA_FUNCTION(1, 1, "USB_P2_8" ), |
156 | PXA_FUNCTION(1, 2, "SSPSFRM2" ), |
157 | PXA_FUNCTION(1, 3, "FFTXD" )), |
158 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(38), |
159 | PXA_FUNCTION(0, 1, "FFRI" ), |
160 | PXA_FUNCTION(0, 2, "KP_MKIN<4>" ), |
161 | PXA_FUNCTION(0, 3, "USB_P2_3" ), |
162 | PXA_FUNCTION(1, 1, "SSPTXD3" ), |
163 | PXA_FUNCTION(1, 2, "SSPTXD2" ), |
164 | PXA_FUNCTION(1, 3, "PWM_OUT<0>" )), |
165 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(39), |
166 | PXA_FUNCTION(0, 1, "KP_MKIN<4>" ), |
167 | PXA_FUNCTION(0, 3, "SSPSFRM3" ), |
168 | PXA_FUNCTION(1, 1, "USB_P2_6" ), |
169 | PXA_FUNCTION(1, 2, "FFTXD" ), |
170 | PXA_FUNCTION(1, 3, "SSPSFRM3" )), |
171 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(40), |
172 | PXA_FUNCTION(0, 1, "SSPRXD2" ), |
173 | PXA_FUNCTION(0, 3, "USB_P2_5" ), |
174 | PXA_FUNCTION(1, 1, "KP_MKOUT<6>" ), |
175 | PXA_FUNCTION(1, 2, "FFDTR" ), |
176 | PXA_FUNCTION(1, 3, "SSPSCLK3" )), |
177 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(41), |
178 | PXA_FUNCTION(0, 1, "FFRXD" ), |
179 | PXA_FUNCTION(0, 2, "USB_P2_7" ), |
180 | PXA_FUNCTION(0, 3, "SSPRXD3" ), |
181 | PXA_FUNCTION(1, 1, "KP_MKOUT<7>" ), |
182 | PXA_FUNCTION(1, 2, "FFRTS" )), |
183 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(42), |
184 | PXA_FUNCTION(0, 1, "BTRXD" ), |
185 | PXA_FUNCTION(0, 2, "ICP_RXD" ), |
186 | PXA_FUNCTION(1, 3, "CIF_MCLK" )), |
187 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(43), |
188 | PXA_FUNCTION(0, 3, "CIF_FV" ), |
189 | PXA_FUNCTION(1, 1, "ICP_TXD" ), |
190 | PXA_FUNCTION(1, 2, "BTTXD" ), |
191 | PXA_FUNCTION(1, 3, "CIF_FV" )), |
192 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(44), |
193 | PXA_FUNCTION(0, 1, "BTCTS" ), |
194 | PXA_FUNCTION(0, 3, "CIF_LV" ), |
195 | PXA_FUNCTION(1, 3, "CIF_LV" )), |
196 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(45), |
197 | PXA_FUNCTION(0, 3, "CIF_PCLK" ), |
198 | PXA_FUNCTION(1, 1, "AC97_SYSCLK" ), |
199 | PXA_FUNCTION(1, 2, "BTRTS" ), |
200 | PXA_FUNCTION(1, 3, "SSPSYSCLK3" )), |
201 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(46), |
202 | PXA_FUNCTION(0, 1, "ICP_RXD" ), |
203 | PXA_FUNCTION(0, 2, "STD_RXD" ), |
204 | PXA_FUNCTION(1, 2, "PWM_OUT<2>" )), |
205 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(47), |
206 | PXA_FUNCTION(0, 1, "CIF_DD<0>" ), |
207 | PXA_FUNCTION(1, 1, "STD_TXD" ), |
208 | PXA_FUNCTION(1, 2, "ICP_TXD" ), |
209 | PXA_FUNCTION(1, 3, "PWM_OUT<3>" )), |
210 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(48), |
211 | PXA_FUNCTION(0, 1, "CIF_DD<5>" ), |
212 | PXA_FUNCTION(1, 1, "BB_OB_DAT<1>" ), |
213 | PXA_FUNCTION(1, 2, "nPOE" )), |
214 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(49), |
215 | PXA_FUNCTION(1, 2, "nPWE" )), |
216 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(50), |
217 | PXA_FUNCTION(0, 1, "CIF_DD<3>" ), |
218 | PXA_FUNCTION(0, 3, "SSPSCLK2" ), |
219 | PXA_FUNCTION(1, 1, "BB_OB_DAT<2>" ), |
220 | PXA_FUNCTION(1, 2, "nPIOR" ), |
221 | PXA_FUNCTION(1, 3, "SSPSCLK2" )), |
222 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(51), |
223 | PXA_FUNCTION(0, 1, "CIF_DD<2>" ), |
224 | PXA_FUNCTION(1, 1, "BB_OB_DAT<3>" ), |
225 | PXA_FUNCTION(1, 2, "nPIOW" )), |
226 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(52), |
227 | PXA_FUNCTION(0, 1, "CIF_DD<4>" ), |
228 | PXA_FUNCTION(0, 2, "SSPSCLK3" ), |
229 | PXA_FUNCTION(1, 1, "BB_OB_CLK" ), |
230 | PXA_FUNCTION(1, 2, "SSPSCLK3" )), |
231 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(53), |
232 | PXA_FUNCTION(0, 1, "FFRXD" ), |
233 | PXA_FUNCTION(0, 2, "USB_P2_3" ), |
234 | PXA_FUNCTION(1, 1, "BB_OB_STB" ), |
235 | PXA_FUNCTION(1, 2, "CIF_MCLK" ), |
236 | PXA_FUNCTION(1, 3, "SSPSYSCLK" )), |
237 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(54), |
238 | PXA_FUNCTION(0, 2, "BB_OB_WAIT" ), |
239 | PXA_FUNCTION(0, 3, "CIF_PCLK" ), |
240 | PXA_FUNCTION(1, 2, "nPCE<2>" )), |
241 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(55), |
242 | PXA_FUNCTION(0, 1, "CIF_DD<1>" ), |
243 | PXA_FUNCTION(0, 2, "BB_IB_DAT<1>" ), |
244 | PXA_FUNCTION(1, 2, "nPREG" )), |
245 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(56), |
246 | PXA_FUNCTION(0, 1, "nPWAIT" ), |
247 | PXA_FUNCTION(0, 2, "BB_IB_DAT<2>" ), |
248 | PXA_FUNCTION(1, 1, "USB_P3_4" )), |
249 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(57), |
250 | PXA_FUNCTION(0, 1, "nIOS16" ), |
251 | PXA_FUNCTION(0, 2, "BB_IB_DAT<3>" ), |
252 | PXA_FUNCTION(1, 3, "SSPTXD" )), |
253 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(58), |
254 | PXA_FUNCTION(0, 2, "LDD<0>" ), |
255 | PXA_FUNCTION(1, 2, "LDD<0>" )), |
256 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(59), |
257 | PXA_FUNCTION(0, 2, "LDD<1>" ), |
258 | PXA_FUNCTION(1, 2, "LDD<1>" )), |
259 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(60), |
260 | PXA_FUNCTION(0, 2, "LDD<2>" ), |
261 | PXA_FUNCTION(1, 2, "LDD<2>" )), |
262 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(61), |
263 | PXA_FUNCTION(0, 2, "LDD<3>" ), |
264 | PXA_FUNCTION(1, 2, "LDD<3>" )), |
265 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(62), |
266 | PXA_FUNCTION(0, 2, "LDD<4>" ), |
267 | PXA_FUNCTION(1, 2, "LDD<4>" )), |
268 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(63), |
269 | PXA_FUNCTION(0, 2, "LDD<5>" ), |
270 | PXA_FUNCTION(1, 2, "LDD<5>" )), |
271 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(64), |
272 | PXA_FUNCTION(0, 2, "LDD<6>" ), |
273 | PXA_FUNCTION(1, 2, "LDD<6>" )), |
274 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(65), |
275 | PXA_FUNCTION(0, 2, "LDD<7>" ), |
276 | PXA_FUNCTION(1, 2, "LDD<7>" )), |
277 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(66), |
278 | PXA_FUNCTION(0, 2, "LDD<8>" ), |
279 | PXA_FUNCTION(1, 2, "LDD<8>" )), |
280 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(67), |
281 | PXA_FUNCTION(0, 2, "LDD<9>" ), |
282 | PXA_FUNCTION(1, 2, "LDD<9>" )), |
283 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(68), |
284 | PXA_FUNCTION(0, 2, "LDD<10>" ), |
285 | PXA_FUNCTION(1, 2, "LDD<10>" )), |
286 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(69), |
287 | PXA_FUNCTION(0, 2, "LDD<11>" ), |
288 | PXA_FUNCTION(1, 2, "LDD<11>" )), |
289 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(70), |
290 | PXA_FUNCTION(0, 2, "LDD<12>" ), |
291 | PXA_FUNCTION(1, 2, "LDD<12>" )), |
292 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(71), |
293 | PXA_FUNCTION(0, 2, "LDD<13>" ), |
294 | PXA_FUNCTION(1, 2, "LDD<13>" )), |
295 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(72), |
296 | PXA_FUNCTION(0, 2, "LDD<14>" ), |
297 | PXA_FUNCTION(1, 2, "LDD<14>" )), |
298 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(73), |
299 | PXA_FUNCTION(0, 2, "LDD<15>" ), |
300 | PXA_FUNCTION(1, 2, "LDD<15>" )), |
301 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(74), |
302 | PXA_FUNCTION(1, 2, "L_FCLK_RD" )), |
303 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(75), |
304 | PXA_FUNCTION(1, 2, "L_LCLK_A0" )), |
305 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(76), |
306 | PXA_FUNCTION(1, 2, "L_PCLK_WR" )), |
307 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(77), |
308 | PXA_FUNCTION(1, 2, "L_BIAS" )), |
309 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(78), |
310 | PXA_FUNCTION(1, 1, "nPCE<2>" ), |
311 | PXA_FUNCTION(1, 2, "nCS<2>" )), |
312 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(79), |
313 | PXA_FUNCTION(1, 1, "PSKTSEL" ), |
314 | PXA_FUNCTION(1, 2, "nCS<3>" ), |
315 | PXA_FUNCTION(1, 3, "PWM_OUT<2>" )), |
316 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(80), |
317 | PXA_FUNCTION(0, 1, "DREQ<1>" ), |
318 | PXA_FUNCTION(0, 2, "MBREQ" ), |
319 | PXA_FUNCTION(1, 2, "nCS<4>" ), |
320 | PXA_FUNCTION(1, 3, "PWM_OUT<3>" )), |
321 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(81), |
322 | PXA_FUNCTION(0, 2, "CIF_DD<0>" ), |
323 | PXA_FUNCTION(1, 1, "SSPTXD3" ), |
324 | PXA_FUNCTION(1, 2, "BB_OB_DAT<0>" )), |
325 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(82), |
326 | PXA_FUNCTION(0, 1, "SSPRXD3" ), |
327 | PXA_FUNCTION(0, 2, "BB_IB_DAT<0>" ), |
328 | PXA_FUNCTION(0, 3, "CIF_DD<5>" ), |
329 | PXA_FUNCTION(1, 3, "FFDTR" )), |
330 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(83), |
331 | PXA_FUNCTION(0, 1, "SSPSFRM3" ), |
332 | PXA_FUNCTION(0, 2, "BB_IB_CLK" ), |
333 | PXA_FUNCTION(0, 3, "CIF_DD<5>" ), |
334 | PXA_FUNCTION(1, 1, "SSPSFRM3" ), |
335 | PXA_FUNCTION(1, 2, "FFTXD" ), |
336 | PXA_FUNCTION(1, 3, "FFRTS" )), |
337 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(84), |
338 | PXA_FUNCTION(0, 1, "SSPCLK3" ), |
339 | PXA_FUNCTION(0, 2, "BB_IB_STB" ), |
340 | PXA_FUNCTION(0, 3, "CIF_FV" ), |
341 | PXA_FUNCTION(1, 1, "SSPCLK3" ), |
342 | PXA_FUNCTION(1, 3, "CIF_FV" )), |
343 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(85), |
344 | PXA_FUNCTION(0, 1, "FFRXD" ), |
345 | PXA_FUNCTION(0, 2, "DREQ<2>" ), |
346 | PXA_FUNCTION(0, 3, "CIF_LV" ), |
347 | PXA_FUNCTION(1, 1, "nPCE<1>" ), |
348 | PXA_FUNCTION(1, 2, "BB_IB_WAIT" ), |
349 | PXA_FUNCTION(1, 3, "CIF_LV" )), |
350 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(86), |
351 | PXA_FUNCTION(0, 1, "SSPRXD2" ), |
352 | PXA_FUNCTION(0, 2, "LDD<16>" ), |
353 | PXA_FUNCTION(0, 3, "USB_P3_5" ), |
354 | PXA_FUNCTION(1, 1, "nPCE<1>" ), |
355 | PXA_FUNCTION(1, 2, "LDD<16>" )), |
356 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(87), |
357 | PXA_FUNCTION(0, 1, "nPCE<2>" ), |
358 | PXA_FUNCTION(0, 2, "LDD<17>" ), |
359 | PXA_FUNCTION(0, 3, "USB_P3_1" ), |
360 | PXA_FUNCTION(1, 1, "SSPTXD2" ), |
361 | PXA_FUNCTION(1, 2, "LDD<17>" ), |
362 | PXA_FUNCTION(1, 3, "SSPSFRM2" )), |
363 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(88), |
364 | PXA_FUNCTION(0, 1, "USBHPWR<1>" ), |
365 | PXA_FUNCTION(0, 2, "SSPRXD2" ), |
366 | PXA_FUNCTION(0, 3, "SSPSFRM2" ), |
367 | PXA_FUNCTION(1, 2, "SSPTXD2" ), |
368 | PXA_FUNCTION(1, 3, "SSPSFRM2" )), |
369 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(89), |
370 | PXA_FUNCTION(0, 1, "SSPRXD3" ), |
371 | PXA_FUNCTION(0, 3, "FFRI" ), |
372 | PXA_FUNCTION(1, 1, "AC97_SYSCLK" ), |
373 | PXA_FUNCTION(1, 2, "USBHPEN<1>" ), |
374 | PXA_FUNCTION(1, 3, "SSPTXD2" )), |
375 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(90), |
376 | PXA_FUNCTION(0, 1, "KP_MKIN<5>" ), |
377 | PXA_FUNCTION(0, 3, "USB_P3_5" ), |
378 | PXA_FUNCTION(1, 1, "CIF_DD<4>" ), |
379 | PXA_FUNCTION(1, 2, "nURST" )), |
380 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(91), |
381 | PXA_FUNCTION(0, 1, "KP_MKIN<6>" ), |
382 | PXA_FUNCTION(0, 3, "USB_P3_1" ), |
383 | PXA_FUNCTION(1, 1, "CIF_DD<5>" ), |
384 | PXA_FUNCTION(1, 2, "UCLK" )), |
385 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(92), |
386 | PXA_FUNCTION(0, 1, "MMDAT<0>" ), |
387 | PXA_FUNCTION(1, 1, "MMDAT<0>" ), |
388 | PXA_FUNCTION(1, 2, "MSBS" )), |
389 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(93), |
390 | PXA_FUNCTION(0, 1, "KP_DKIN<0>" ), |
391 | PXA_FUNCTION(0, 2, "CIF_DD<6>" ), |
392 | PXA_FUNCTION(1, 1, "AC97_SDATA_OUT" )), |
393 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(94), |
394 | PXA_FUNCTION(0, 1, "KP_DKIN<1>" ), |
395 | PXA_FUNCTION(0, 2, "CIF_DD<5>" ), |
396 | PXA_FUNCTION(1, 1, "AC97_SYNC" )), |
397 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(95), |
398 | PXA_FUNCTION(0, 1, "KP_DKIN<2>" ), |
399 | PXA_FUNCTION(0, 2, "CIF_DD<4>" ), |
400 | PXA_FUNCTION(0, 3, "KP_MKIN<6>" ), |
401 | PXA_FUNCTION(1, 1, "AC97_RESET_n" )), |
402 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(96), |
403 | PXA_FUNCTION(0, 1, "KP_DKIN<3>" ), |
404 | PXA_FUNCTION(0, 2, "MBREQ" ), |
405 | PXA_FUNCTION(0, 3, "FFRXD" ), |
406 | PXA_FUNCTION(1, 2, "DVAL<1>" ), |
407 | PXA_FUNCTION(1, 3, "KP_MKOUT<6>" )), |
408 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(97), |
409 | PXA_FUNCTION(0, 1, "KP_DKIN<4>" ), |
410 | PXA_FUNCTION(0, 2, "DREQ<1>" ), |
411 | PXA_FUNCTION(0, 3, "KP_MKIN<3>" ), |
412 | PXA_FUNCTION(1, 2, "MBGNT" )), |
413 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(98), |
414 | PXA_FUNCTION(0, 1, "KP_DKIN<5>" ), |
415 | PXA_FUNCTION(0, 2, "CIF_DD<0>" ), |
416 | PXA_FUNCTION(0, 3, "KP_MKIN<4>" ), |
417 | PXA_FUNCTION(1, 1, "AC97_SYSCLK" ), |
418 | PXA_FUNCTION(1, 3, "FFRTS" )), |
419 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(99), |
420 | PXA_FUNCTION(0, 1, "KP_DKIN<6>" ), |
421 | PXA_FUNCTION(0, 2, "AC97_SDATA_IN_1" ), |
422 | PXA_FUNCTION(0, 3, "KP_MKIN<5>" ), |
423 | PXA_FUNCTION(1, 3, "FFTXD" )), |
424 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(100), |
425 | PXA_FUNCTION(0, 1, "KP_MKIN<0>" ), |
426 | PXA_FUNCTION(0, 2, "DREQ<2>" ), |
427 | PXA_FUNCTION(0, 3, "FFCTS" )), |
428 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(101), |
429 | PXA_FUNCTION(0, 1, "KP_MKIN<1>" )), |
430 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(102), |
431 | PXA_FUNCTION(0, 1, "KP_MKIN<2>" ), |
432 | PXA_FUNCTION(0, 3, "FFRXD" ), |
433 | PXA_FUNCTION(1, 1, "nPCE<1>" )), |
434 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(103), |
435 | PXA_FUNCTION(0, 1, "CIF_DD<3>" ), |
436 | PXA_FUNCTION(1, 2, "KP_MKOUT<0>" )), |
437 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(104), |
438 | PXA_FUNCTION(0, 1, "CIF_DD<2>" ), |
439 | PXA_FUNCTION(1, 1, "PSKTSEL" ), |
440 | PXA_FUNCTION(1, 2, "KP_MKOUT<1>" )), |
441 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(105), |
442 | PXA_FUNCTION(0, 1, "CIF_DD<1>" ), |
443 | PXA_FUNCTION(1, 1, "nPCE<2>" ), |
444 | PXA_FUNCTION(1, 2, "KP_MKOUT<2>" )), |
445 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(106), |
446 | PXA_FUNCTION(0, 1, "CIF_DD<9>" ), |
447 | PXA_FUNCTION(1, 2, "KP_MKOUT<3>" )), |
448 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(107), |
449 | PXA_FUNCTION(0, 1, "CIF_DD<8>" ), |
450 | PXA_FUNCTION(1, 2, "KP_MKOUT<4>" )), |
451 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(108), |
452 | PXA_FUNCTION(0, 1, "CIF_DD<7>" ), |
453 | PXA_FUNCTION(1, 1, "CHOUT<0>" ), |
454 | PXA_FUNCTION(1, 2, "KP_MKOUT<5>" )), |
455 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(109), |
456 | PXA_FUNCTION(0, 1, "MMDAT<1>" ), |
457 | PXA_FUNCTION(0, 2, "MSSDIO" ), |
458 | PXA_FUNCTION(1, 1, "MMDAT<1>" ), |
459 | PXA_FUNCTION(1, 2, "MSSDIO" )), |
460 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(110), |
461 | PXA_FUNCTION(0, 1, "MMDAT<2>" ), |
462 | PXA_FUNCTION(1, 1, "MMDAT<2>" )), |
463 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(111), |
464 | PXA_FUNCTION(0, 1, "MMDAT<3>" ), |
465 | PXA_FUNCTION(1, 1, "MMDAT<3>" )), |
466 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(112), |
467 | PXA_FUNCTION(0, 1, "MMCMD" ), |
468 | PXA_FUNCTION(0, 2, "nMSINS" ), |
469 | PXA_FUNCTION(1, 1, "MMCMD" )), |
470 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(113), |
471 | PXA_FUNCTION(0, 3, "USB_P3_3" ), |
472 | PXA_FUNCTION(1, 1, "I2S_SYSCLK" ), |
473 | PXA_FUNCTION(1, 2, "AC97_RESET_n" )), |
474 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(114), |
475 | PXA_FUNCTION(0, 1, "CIF_DD<1>" ), |
476 | PXA_FUNCTION(1, 1, "UEN" ), |
477 | PXA_FUNCTION(1, 2, "UVS0" )), |
478 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(115), |
479 | PXA_FUNCTION(0, 1, "DREQ<0>" ), |
480 | PXA_FUNCTION(0, 2, "CIF_DD<3>" ), |
481 | PXA_FUNCTION(0, 3, "MBREQ" ), |
482 | PXA_FUNCTION(1, 1, "UEN" ), |
483 | PXA_FUNCTION(1, 2, "nUVS1" ), |
484 | PXA_FUNCTION(1, 3, "PWM_OUT<1>" )), |
485 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(116), |
486 | PXA_FUNCTION(0, 1, "CIF_DD<2>" ), |
487 | PXA_FUNCTION(0, 2, "AC97_SDATA_IN_0" ), |
488 | PXA_FUNCTION(0, 3, "UDET" ), |
489 | PXA_FUNCTION(1, 1, "DVAL<0>" ), |
490 | PXA_FUNCTION(1, 2, "nUVS2" ), |
491 | PXA_FUNCTION(1, 3, "MBGNT" )), |
492 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(117), |
493 | PXA_FUNCTION(0, 1, "SCL" ), |
494 | PXA_FUNCTION(1, 1, "SCL" )), |
495 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(118), |
496 | PXA_FUNCTION(0, 1, "SDA" ), |
497 | PXA_FUNCTION(1, 1, "SDA" )), |
498 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(119), |
499 | PXA_FUNCTION(0, 1, "USBHPWR<2>" )), |
500 | PXA_GPIO_PIN(PXA_PINCTRL_PIN(120), |
501 | PXA_FUNCTION(1, 2, "USBHPEN<2>" )), |
502 | }; |
503 | |
504 | static int pxa27x_pinctrl_probe(struct platform_device *pdev) |
505 | { |
506 | int i; |
507 | void __iomem *base_af[8]; |
508 | void __iomem *base_dir[4]; |
509 | void __iomem *base_sleep[4]; |
510 | |
511 | base_af[0] = devm_platform_ioremap_resource(pdev, index: 0); |
512 | if (IS_ERR(ptr: base_af[0])) |
513 | return PTR_ERR(ptr: base_af[0]); |
514 | |
515 | base_dir[0] = devm_platform_ioremap_resource(pdev, index: 1); |
516 | if (IS_ERR(ptr: base_dir[0])) |
517 | return PTR_ERR(ptr: base_dir[0]); |
518 | |
519 | base_dir[3] = devm_platform_ioremap_resource(pdev, index: 2); |
520 | if (IS_ERR(ptr: base_dir[3])) |
521 | return PTR_ERR(ptr: base_dir[3]); |
522 | |
523 | base_sleep[0] = devm_platform_ioremap_resource(pdev, index: 3); |
524 | if (IS_ERR(ptr: base_sleep[0])) |
525 | return PTR_ERR(ptr: base_sleep[0]); |
526 | |
527 | for (i = 0; i < ARRAY_SIZE(base_af); i++) |
528 | base_af[i] = base_af[0] + sizeof(base_af[0]) * i; |
529 | for (i = 0; i < 3; i++) |
530 | base_dir[i] = base_dir[0] + sizeof(base_dir[0]) * i; |
531 | for (i = 0; i < ARRAY_SIZE(base_sleep); i++) |
532 | base_sleep[i] = base_sleep[0] + sizeof(base_af[0]) * i; |
533 | |
534 | return pxa2xx_pinctrl_init(pdev, ppins: pxa27x_pins, ARRAY_SIZE(pxa27x_pins), |
535 | base_gafr: base_af, base_gpdr: base_dir, base_gpsr: base_sleep); |
536 | } |
537 | |
538 | static const struct of_device_id pxa27x_pinctrl_match[] = { |
539 | { .compatible = "marvell,pxa27x-pinctrl" , }, |
540 | {} |
541 | }; |
542 | MODULE_DEVICE_TABLE(of, pxa27x_pinctrl_match); |
543 | |
544 | static struct platform_driver pxa27x_pinctrl_driver = { |
545 | .probe = pxa27x_pinctrl_probe, |
546 | .driver = { |
547 | .name = "pxa27x-pinctrl" , |
548 | .of_match_table = pxa27x_pinctrl_match, |
549 | }, |
550 | }; |
551 | module_platform_driver(pxa27x_pinctrl_driver); |
552 | |
553 | MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>" ); |
554 | MODULE_DESCRIPTION("Marvell PXA27x pinctrl driver" ); |
555 | MODULE_LICENSE("GPL v2" ); |
556 | |