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