1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef __ASM_PLAT_MFP_H
14 #define __ASM_PLAT_MFP_H
15
16 #define mfp_to_gpio(m) ((m) % 256)
17
18
19 enum {
20 MFP_PIN_INVALID = -1,
21
22 MFP_PIN_GPIO0 = 0,
23 MFP_PIN_GPIO1,
24 MFP_PIN_GPIO2,
25 MFP_PIN_GPIO3,
26 MFP_PIN_GPIO4,
27 MFP_PIN_GPIO5,
28 MFP_PIN_GPIO6,
29 MFP_PIN_GPIO7,
30 MFP_PIN_GPIO8,
31 MFP_PIN_GPIO9,
32 MFP_PIN_GPIO10,
33 MFP_PIN_GPIO11,
34 MFP_PIN_GPIO12,
35 MFP_PIN_GPIO13,
36 MFP_PIN_GPIO14,
37 MFP_PIN_GPIO15,
38 MFP_PIN_GPIO16,
39 MFP_PIN_GPIO17,
40 MFP_PIN_GPIO18,
41 MFP_PIN_GPIO19,
42 MFP_PIN_GPIO20,
43 MFP_PIN_GPIO21,
44 MFP_PIN_GPIO22,
45 MFP_PIN_GPIO23,
46 MFP_PIN_GPIO24,
47 MFP_PIN_GPIO25,
48 MFP_PIN_GPIO26,
49 MFP_PIN_GPIO27,
50 MFP_PIN_GPIO28,
51 MFP_PIN_GPIO29,
52 MFP_PIN_GPIO30,
53 MFP_PIN_GPIO31,
54 MFP_PIN_GPIO32,
55 MFP_PIN_GPIO33,
56 MFP_PIN_GPIO34,
57 MFP_PIN_GPIO35,
58 MFP_PIN_GPIO36,
59 MFP_PIN_GPIO37,
60 MFP_PIN_GPIO38,
61 MFP_PIN_GPIO39,
62 MFP_PIN_GPIO40,
63 MFP_PIN_GPIO41,
64 MFP_PIN_GPIO42,
65 MFP_PIN_GPIO43,
66 MFP_PIN_GPIO44,
67 MFP_PIN_GPIO45,
68 MFP_PIN_GPIO46,
69 MFP_PIN_GPIO47,
70 MFP_PIN_GPIO48,
71 MFP_PIN_GPIO49,
72 MFP_PIN_GPIO50,
73 MFP_PIN_GPIO51,
74 MFP_PIN_GPIO52,
75 MFP_PIN_GPIO53,
76 MFP_PIN_GPIO54,
77 MFP_PIN_GPIO55,
78 MFP_PIN_GPIO56,
79 MFP_PIN_GPIO57,
80 MFP_PIN_GPIO58,
81 MFP_PIN_GPIO59,
82 MFP_PIN_GPIO60,
83 MFP_PIN_GPIO61,
84 MFP_PIN_GPIO62,
85 MFP_PIN_GPIO63,
86 MFP_PIN_GPIO64,
87 MFP_PIN_GPIO65,
88 MFP_PIN_GPIO66,
89 MFP_PIN_GPIO67,
90 MFP_PIN_GPIO68,
91 MFP_PIN_GPIO69,
92 MFP_PIN_GPIO70,
93 MFP_PIN_GPIO71,
94 MFP_PIN_GPIO72,
95 MFP_PIN_GPIO73,
96 MFP_PIN_GPIO74,
97 MFP_PIN_GPIO75,
98 MFP_PIN_GPIO76,
99 MFP_PIN_GPIO77,
100 MFP_PIN_GPIO78,
101 MFP_PIN_GPIO79,
102 MFP_PIN_GPIO80,
103 MFP_PIN_GPIO81,
104 MFP_PIN_GPIO82,
105 MFP_PIN_GPIO83,
106 MFP_PIN_GPIO84,
107 MFP_PIN_GPIO85,
108 MFP_PIN_GPIO86,
109 MFP_PIN_GPIO87,
110 MFP_PIN_GPIO88,
111 MFP_PIN_GPIO89,
112 MFP_PIN_GPIO90,
113 MFP_PIN_GPIO91,
114 MFP_PIN_GPIO92,
115 MFP_PIN_GPIO93,
116 MFP_PIN_GPIO94,
117 MFP_PIN_GPIO95,
118 MFP_PIN_GPIO96,
119 MFP_PIN_GPIO97,
120 MFP_PIN_GPIO98,
121 MFP_PIN_GPIO99,
122 MFP_PIN_GPIO100,
123 MFP_PIN_GPIO101,
124 MFP_PIN_GPIO102,
125 MFP_PIN_GPIO103,
126 MFP_PIN_GPIO104,
127 MFP_PIN_GPIO105,
128 MFP_PIN_GPIO106,
129 MFP_PIN_GPIO107,
130 MFP_PIN_GPIO108,
131 MFP_PIN_GPIO109,
132 MFP_PIN_GPIO110,
133 MFP_PIN_GPIO111,
134 MFP_PIN_GPIO112,
135 MFP_PIN_GPIO113,
136 MFP_PIN_GPIO114,
137 MFP_PIN_GPIO115,
138 MFP_PIN_GPIO116,
139 MFP_PIN_GPIO117,
140 MFP_PIN_GPIO118,
141 MFP_PIN_GPIO119,
142 MFP_PIN_GPIO120,
143 MFP_PIN_GPIO121,
144 MFP_PIN_GPIO122,
145 MFP_PIN_GPIO123,
146 MFP_PIN_GPIO124,
147 MFP_PIN_GPIO125,
148 MFP_PIN_GPIO126,
149 MFP_PIN_GPIO127,
150
151 MFP_PIN_GPIO128,
152 MFP_PIN_GPIO129,
153 MFP_PIN_GPIO130,
154 MFP_PIN_GPIO131,
155 MFP_PIN_GPIO132,
156 MFP_PIN_GPIO133,
157 MFP_PIN_GPIO134,
158 MFP_PIN_GPIO135,
159 MFP_PIN_GPIO136,
160 MFP_PIN_GPIO137,
161 MFP_PIN_GPIO138,
162 MFP_PIN_GPIO139,
163 MFP_PIN_GPIO140,
164 MFP_PIN_GPIO141,
165 MFP_PIN_GPIO142,
166 MFP_PIN_GPIO143,
167 MFP_PIN_GPIO144,
168 MFP_PIN_GPIO145,
169 MFP_PIN_GPIO146,
170 MFP_PIN_GPIO147,
171 MFP_PIN_GPIO148,
172 MFP_PIN_GPIO149,
173 MFP_PIN_GPIO150,
174 MFP_PIN_GPIO151,
175 MFP_PIN_GPIO152,
176 MFP_PIN_GPIO153,
177 MFP_PIN_GPIO154,
178 MFP_PIN_GPIO155,
179 MFP_PIN_GPIO156,
180 MFP_PIN_GPIO157,
181 MFP_PIN_GPIO158,
182 MFP_PIN_GPIO159,
183 MFP_PIN_GPIO160,
184 MFP_PIN_GPIO161,
185 MFP_PIN_GPIO162,
186 MFP_PIN_GPIO163,
187 MFP_PIN_GPIO164,
188 MFP_PIN_GPIO165,
189 MFP_PIN_GPIO166,
190 MFP_PIN_GPIO167,
191 MFP_PIN_GPIO168,
192 MFP_PIN_GPIO169,
193 MFP_PIN_GPIO170,
194 MFP_PIN_GPIO171,
195 MFP_PIN_GPIO172,
196 MFP_PIN_GPIO173,
197 MFP_PIN_GPIO174,
198 MFP_PIN_GPIO175,
199 MFP_PIN_GPIO176,
200 MFP_PIN_GPIO177,
201 MFP_PIN_GPIO178,
202 MFP_PIN_GPIO179,
203 MFP_PIN_GPIO180,
204 MFP_PIN_GPIO181,
205 MFP_PIN_GPIO182,
206 MFP_PIN_GPIO183,
207 MFP_PIN_GPIO184,
208 MFP_PIN_GPIO185,
209 MFP_PIN_GPIO186,
210 MFP_PIN_GPIO187,
211 MFP_PIN_GPIO188,
212 MFP_PIN_GPIO189,
213 MFP_PIN_GPIO190,
214 MFP_PIN_GPIO191,
215
216 MFP_PIN_GPIO255 = 255,
217
218 MFP_PIN_GPIO0_2,
219 MFP_PIN_GPIO1_2,
220 MFP_PIN_GPIO2_2,
221 MFP_PIN_GPIO3_2,
222 MFP_PIN_GPIO4_2,
223 MFP_PIN_GPIO5_2,
224 MFP_PIN_GPIO6_2,
225 MFP_PIN_GPIO7_2,
226 MFP_PIN_GPIO8_2,
227 MFP_PIN_GPIO9_2,
228 MFP_PIN_GPIO10_2,
229 MFP_PIN_GPIO11_2,
230 MFP_PIN_GPIO12_2,
231 MFP_PIN_GPIO13_2,
232 MFP_PIN_GPIO14_2,
233 MFP_PIN_GPIO15_2,
234 MFP_PIN_GPIO16_2,
235 MFP_PIN_GPIO17_2,
236
237 MFP_PIN_ULPI_STP,
238 MFP_PIN_ULPI_NXT,
239 MFP_PIN_ULPI_DIR,
240
241 MFP_PIN_nXCVREN,
242 MFP_PIN_DF_CLE_nOE,
243 MFP_PIN_DF_nADV1_ALE,
244 MFP_PIN_DF_SCLK_E,
245 MFP_PIN_DF_SCLK_S,
246 MFP_PIN_nBE0,
247 MFP_PIN_nBE1,
248 MFP_PIN_DF_nADV2_ALE,
249 MFP_PIN_DF_INT_RnB,
250 MFP_PIN_DF_nCS0,
251 MFP_PIN_DF_nCS1,
252 MFP_PIN_nLUA,
253 MFP_PIN_nLLA,
254 MFP_PIN_DF_nWE,
255 MFP_PIN_DF_ALE_nWE,
256 MFP_PIN_DF_nRE_nOE,
257 MFP_PIN_DF_ADDR0,
258 MFP_PIN_DF_ADDR1,
259 MFP_PIN_DF_ADDR2,
260 MFP_PIN_DF_ADDR3,
261 MFP_PIN_DF_IO0,
262 MFP_PIN_DF_IO1,
263 MFP_PIN_DF_IO2,
264 MFP_PIN_DF_IO3,
265 MFP_PIN_DF_IO4,
266 MFP_PIN_DF_IO5,
267 MFP_PIN_DF_IO6,
268 MFP_PIN_DF_IO7,
269 MFP_PIN_DF_IO8,
270 MFP_PIN_DF_IO9,
271 MFP_PIN_DF_IO10,
272 MFP_PIN_DF_IO11,
273 MFP_PIN_DF_IO12,
274 MFP_PIN_DF_IO13,
275 MFP_PIN_DF_IO14,
276 MFP_PIN_DF_IO15,
277 MFP_PIN_DF_nCS0_SM_nCS2,
278 MFP_PIN_DF_nCS1_SM_nCS3,
279 MFP_PIN_SM_nCS0,
280 MFP_PIN_SM_nCS1,
281 MFP_PIN_DF_WEn,
282 MFP_PIN_DF_REn,
283 MFP_PIN_DF_CLE_SM_OEn,
284 MFP_PIN_DF_ALE_SM_WEn,
285 MFP_PIN_DF_RDY0,
286 MFP_PIN_DF_RDY1,
287
288 MFP_PIN_SM_SCLK,
289 MFP_PIN_SM_BE0,
290 MFP_PIN_SM_BE1,
291 MFP_PIN_SM_ADV,
292 MFP_PIN_SM_ADVMUX,
293 MFP_PIN_SM_RDY,
294
295 MFP_PIN_MMC1_DAT7,
296 MFP_PIN_MMC1_DAT6,
297 MFP_PIN_MMC1_DAT5,
298 MFP_PIN_MMC1_DAT4,
299 MFP_PIN_MMC1_DAT3,
300 MFP_PIN_MMC1_DAT2,
301 MFP_PIN_MMC1_DAT1,
302 MFP_PIN_MMC1_DAT0,
303 MFP_PIN_MMC1_CMD,
304 MFP_PIN_MMC1_CLK,
305 MFP_PIN_MMC1_CD,
306 MFP_PIN_MMC1_WP,
307
308
309 MFP_PIN_GSIM_UIO,
310 MFP_PIN_GSIM_UCLK,
311 MFP_PIN_GSIM_UDET,
312 MFP_PIN_GSIM_nURST,
313 MFP_PIN_PMIC_INT,
314 MFP_PIN_RDY,
315
316
317 MFP_PIN_TWSI1_SCL,
318 MFP_PIN_TWSI1_SDA,
319 MFP_PIN_TWSI4_SCL,
320 MFP_PIN_TWSI4_SDA,
321 MFP_PIN_CLK_REQ,
322
323 MFP_PIN_MAX,
324 };
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353 typedef unsigned long mfp_cfg_t;
354
355 #define MFP_PIN(x) ((x) & 0x3ff)
356
357 #define MFP_AF0 (0x0 << 10)
358 #define MFP_AF1 (0x1 << 10)
359 #define MFP_AF2 (0x2 << 10)
360 #define MFP_AF3 (0x3 << 10)
361 #define MFP_AF4 (0x4 << 10)
362 #define MFP_AF5 (0x5 << 10)
363 #define MFP_AF6 (0x6 << 10)
364 #define MFP_AF7 (0x7 << 10)
365 #define MFP_AF_MASK (0x7 << 10)
366 #define MFP_AF(x) (((x) >> 10) & 0x7)
367
368 #define MFP_DS01X (0x0 << 13)
369 #define MFP_DS02X (0x1 << 13)
370 #define MFP_DS03X (0x2 << 13)
371 #define MFP_DS04X (0x3 << 13)
372 #define MFP_DS06X (0x4 << 13)
373 #define MFP_DS08X (0x5 << 13)
374 #define MFP_DS10X (0x6 << 13)
375 #define MFP_DS13X (0x7 << 13)
376 #define MFP_DS_MASK (0x7 << 13)
377 #define MFP_DS(x) (((x) >> 13) & 0x7)
378
379 #define MFP_LPM_DEFAULT (0x0 << 16)
380 #define MFP_LPM_DRIVE_LOW (0x1 << 16)
381 #define MFP_LPM_DRIVE_HIGH (0x2 << 16)
382 #define MFP_LPM_PULL_LOW (0x3 << 16)
383 #define MFP_LPM_PULL_HIGH (0x4 << 16)
384 #define MFP_LPM_FLOAT (0x5 << 16)
385 #define MFP_LPM_INPUT (0x6 << 16)
386 #define MFP_LPM_STATE_MASK (0x7 << 16)
387 #define MFP_LPM_STATE(x) (((x) >> 16) & 0x7)
388
389 #define MFP_LPM_EDGE_NONE (0x0 << 19)
390 #define MFP_LPM_EDGE_RISE (0x1 << 19)
391 #define MFP_LPM_EDGE_FALL (0x2 << 19)
392 #define MFP_LPM_EDGE_BOTH (0x3 << 19)
393 #define MFP_LPM_EDGE_MASK (0x3 << 19)
394 #define MFP_LPM_EDGE(x) (((x) >> 19) & 0x3)
395
396 #define MFP_PULL_NONE (0x0 << 21)
397 #define MFP_PULL_LOW (0x1 << 21)
398 #define MFP_PULL_HIGH (0x2 << 21)
399 #define MFP_PULL_BOTH (0x3 << 21)
400 #define MFP_PULL_FLOAT (0x4 << 21)
401 #define MFP_PULL_MASK (0x7 << 21)
402 #define MFP_PULL(x) (((x) >> 21) & 0x7)
403
404 #define MFP_CFG_DEFAULT (MFP_AF0 | MFP_DS03X | MFP_LPM_DEFAULT |\
405 MFP_LPM_EDGE_NONE | MFP_PULL_NONE)
406
407 #define MFP_CFG(pin, af) \
408 ((MFP_CFG_DEFAULT & ~MFP_AF_MASK) |\
409 (MFP_PIN(MFP_PIN_##pin) | MFP_##af))
410
411 #define MFP_CFG_DRV(pin, af, drv) \
412 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK)) |\
413 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv))
414
415 #define MFP_CFG_LPM(pin, af, lpm) \
416 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_LPM_STATE_MASK)) |\
417 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_LPM_##lpm))
418
419 #define MFP_CFG_X(pin, af, drv, lpm) \
420 ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\
421 (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm))
422
423 #if defined(CONFIG_PXA3xx) || defined(CONFIG_ARCH_MMP)
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442 struct mfp_addr_map {
443 unsigned int start;
444 unsigned int end;
445 unsigned long offset;
446 };
447
448 #define MFP_ADDR_X(start, end, offset) \
449 { MFP_PIN_##start, MFP_PIN_##end, offset }
450
451 #define MFP_ADDR(pin, offset) \
452 { MFP_PIN_##pin, -1, offset }
453
454 #define MFP_ADDR_END { MFP_PIN_INVALID, 0 }
455
456 void __init mfp_init_base(void __iomem *mfpr_base);
457 void __init mfp_init_addr(struct mfp_addr_map *map);
458
459
460
461
462
463
464
465 unsigned long mfp_read(int mfp);
466 void mfp_write(int mfp, unsigned long mfpr_val);
467 void mfp_config(unsigned long *mfp_cfgs, int num);
468 void mfp_config_run(void);
469 void mfp_config_lpm(void);
470 #endif
471
472 #endif