dm: exynos: gpio: Convert to driver model
[karo-tx-uboot.git] / arch / arm / include / asm / arch-exynos / gpio.h
1 /*
2  * (C) Copyright 2010 Samsung Electronics
3  * Minkyu Kang <mk7.kang@samsung.com>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #ifndef __ASM_ARCH_GPIO_H
9 #define __ASM_ARCH_GPIO_H
10
11 #ifndef __ASSEMBLY__
12 struct s5p_gpio_bank {
13         unsigned int    con;
14         unsigned int    dat;
15         unsigned int    pull;
16         unsigned int    drv;
17         unsigned int    pdn_con;
18         unsigned int    pdn_pull;
19         unsigned char   res1[8];
20 };
21
22 /* GPIO pins per bank  */
23 #define GPIO_PER_BANK 8
24
25 /* A list of valid GPIO numbers for the asm-generic/gpio.h interface */
26 enum exynos4_gpio_pin {
27         /* GPIO_PART1_STARTS */
28         EXYNOS4_GPIO_A00,               /* 0 */
29         EXYNOS4_GPIO_A01,
30         EXYNOS4_GPIO_A02,
31         EXYNOS4_GPIO_A03,
32         EXYNOS4_GPIO_A04,
33         EXYNOS4_GPIO_A05,
34         EXYNOS4_GPIO_A06,
35         EXYNOS4_GPIO_A07,
36         EXYNOS4_GPIO_A10,               /* 8 */
37         EXYNOS4_GPIO_A11,
38         EXYNOS4_GPIO_A12,
39         EXYNOS4_GPIO_A13,
40         EXYNOS4_GPIO_A14,
41         EXYNOS4_GPIO_A15,
42         EXYNOS4_GPIO_A16,
43         EXYNOS4_GPIO_A17,
44         EXYNOS4_GPIO_B0,                /* 16 0x10 */
45         EXYNOS4_GPIO_B1,
46         EXYNOS4_GPIO_B2,
47         EXYNOS4_GPIO_B3,
48         EXYNOS4_GPIO_B4,
49         EXYNOS4_GPIO_B5,
50         EXYNOS4_GPIO_B6,
51         EXYNOS4_GPIO_B7,
52         EXYNOS4_GPIO_C00,               /* 24 0x18 */
53         EXYNOS4_GPIO_C01,
54         EXYNOS4_GPIO_C02,
55         EXYNOS4_GPIO_C03,
56         EXYNOS4_GPIO_C04,
57         EXYNOS4_GPIO_C05,
58         EXYNOS4_GPIO_C06,
59         EXYNOS4_GPIO_C07,
60         EXYNOS4_GPIO_C10,               /* 32 0x20*/
61         EXYNOS4_GPIO_C11,
62         EXYNOS4_GPIO_C12,
63         EXYNOS4_GPIO_C13,
64         EXYNOS4_GPIO_C14,
65         EXYNOS4_GPIO_C15,
66         EXYNOS4_GPIO_C16,
67         EXYNOS4_GPIO_C17,
68         EXYNOS4_GPIO_D00,               /* 40 0x28 */
69         EXYNOS4_GPIO_D01,
70         EXYNOS4_GPIO_D02,
71         EXYNOS4_GPIO_D03,
72         EXYNOS4_GPIO_D04,
73         EXYNOS4_GPIO_D05,
74         EXYNOS4_GPIO_D06,
75         EXYNOS4_GPIO_D07,
76         EXYNOS4_GPIO_D10,               /* 48 0x30 */
77         EXYNOS4_GPIO_D11,
78         EXYNOS4_GPIO_D12,
79         EXYNOS4_GPIO_D13,
80         EXYNOS4_GPIO_D14,
81         EXYNOS4_GPIO_D15,
82         EXYNOS4_GPIO_D16,
83         EXYNOS4_GPIO_D17,
84         EXYNOS4_GPIO_E00,               /* 56 0x38 */
85         EXYNOS4_GPIO_E01,
86         EXYNOS4_GPIO_E02,
87         EXYNOS4_GPIO_E03,
88         EXYNOS4_GPIO_E04,
89         EXYNOS4_GPIO_E05,
90         EXYNOS4_GPIO_E06,
91         EXYNOS4_GPIO_E07,
92         EXYNOS4_GPIO_E10,               /* 64 0x40 */
93         EXYNOS4_GPIO_E11,
94         EXYNOS4_GPIO_E12,
95         EXYNOS4_GPIO_E13,
96         EXYNOS4_GPIO_E14,
97         EXYNOS4_GPIO_E15,
98         EXYNOS4_GPIO_E16,
99         EXYNOS4_GPIO_E17,
100         EXYNOS4_GPIO_E20,               /* 72 0x48 */
101         EXYNOS4_GPIO_E21,
102         EXYNOS4_GPIO_E22,
103         EXYNOS4_GPIO_E23,
104         EXYNOS4_GPIO_E24,
105         EXYNOS4_GPIO_E25,
106         EXYNOS4_GPIO_E26,
107         EXYNOS4_GPIO_E27,
108         EXYNOS4_GPIO_E30,               /* 80 0x50 */
109         EXYNOS4_GPIO_E31,
110         EXYNOS4_GPIO_E32,
111         EXYNOS4_GPIO_E33,
112         EXYNOS4_GPIO_E34,
113         EXYNOS4_GPIO_E35,
114         EXYNOS4_GPIO_E36,
115         EXYNOS4_GPIO_E37,
116         EXYNOS4_GPIO_E40,               /* 88 0x58 */
117         EXYNOS4_GPIO_E41,
118         EXYNOS4_GPIO_E42,
119         EXYNOS4_GPIO_E43,
120         EXYNOS4_GPIO_E44,
121         EXYNOS4_GPIO_E45,
122         EXYNOS4_GPIO_E46,
123         EXYNOS4_GPIO_E47,
124         EXYNOS4_GPIO_F00,               /* 96 0x60 */
125         EXYNOS4_GPIO_F01,
126         EXYNOS4_GPIO_F02,
127         EXYNOS4_GPIO_F03,
128         EXYNOS4_GPIO_F04,
129         EXYNOS4_GPIO_F05,
130         EXYNOS4_GPIO_F06,
131         EXYNOS4_GPIO_F07,
132         EXYNOS4_GPIO_F10,               /* 104 0x68 */
133         EXYNOS4_GPIO_F11,
134         EXYNOS4_GPIO_F12,
135         EXYNOS4_GPIO_F13,
136         EXYNOS4_GPIO_F14,
137         EXYNOS4_GPIO_F15,
138         EXYNOS4_GPIO_F16,
139         EXYNOS4_GPIO_F17,
140         EXYNOS4_GPIO_F20,               /* 112 0x70 */
141         EXYNOS4_GPIO_F21,
142         EXYNOS4_GPIO_F22,
143         EXYNOS4_GPIO_F23,
144         EXYNOS4_GPIO_F24,
145         EXYNOS4_GPIO_F25,
146         EXYNOS4_GPIO_F26,
147         EXYNOS4_GPIO_F27,
148         EXYNOS4_GPIO_F30,               /* 120 0x78 */
149         EXYNOS4_GPIO_F31,
150         EXYNOS4_GPIO_F32,
151         EXYNOS4_GPIO_F33,
152         EXYNOS4_GPIO_F34,
153         EXYNOS4_GPIO_F35,
154         EXYNOS4_GPIO_F36,
155         EXYNOS4_GPIO_F37,
156
157         /* GPIO_PART2_STARTS */
158         EXYNOS4_GPIO_MAX_PORT_PART_1,   /* 128 0x80 */
159         EXYNOS4_GPIO_J00 = EXYNOS4_GPIO_MAX_PORT_PART_1,
160         EXYNOS4_GPIO_J01,
161         EXYNOS4_GPIO_J02,
162         EXYNOS4_GPIO_J03,
163         EXYNOS4_GPIO_J04,
164         EXYNOS4_GPIO_J05,
165         EXYNOS4_GPIO_J06,
166         EXYNOS4_GPIO_J07,
167         EXYNOS4_GPIO_J10,               /* 136 0x88 */
168         EXYNOS4_GPIO_J11,
169         EXYNOS4_GPIO_J12,
170         EXYNOS4_GPIO_J13,
171         EXYNOS4_GPIO_J14,
172         EXYNOS4_GPIO_J15,
173         EXYNOS4_GPIO_J16,
174         EXYNOS4_GPIO_J17,
175         EXYNOS4_GPIO_K00,               /* 144 0x90 */
176         EXYNOS4_GPIO_K01,
177         EXYNOS4_GPIO_K02,
178         EXYNOS4_GPIO_K03,
179         EXYNOS4_GPIO_K04,
180         EXYNOS4_GPIO_K05,
181         EXYNOS4_GPIO_K06,
182         EXYNOS4_GPIO_K07,
183         EXYNOS4_GPIO_K10,               /* 152 0x98 */
184         EXYNOS4_GPIO_K11,
185         EXYNOS4_GPIO_K12,
186         EXYNOS4_GPIO_K13,
187         EXYNOS4_GPIO_K14,
188         EXYNOS4_GPIO_K15,
189         EXYNOS4_GPIO_K16,
190         EXYNOS4_GPIO_K17,
191         EXYNOS4_GPIO_K20,               /* 160 0xA0 */
192         EXYNOS4_GPIO_K21,
193         EXYNOS4_GPIO_K22,
194         EXYNOS4_GPIO_K23,
195         EXYNOS4_GPIO_K24,
196         EXYNOS4_GPIO_K25,
197         EXYNOS4_GPIO_K26,
198         EXYNOS4_GPIO_K27,
199         EXYNOS4_GPIO_K30,               /* 168 0xA8 */
200         EXYNOS4_GPIO_K31,
201         EXYNOS4_GPIO_K32,
202         EXYNOS4_GPIO_K33,
203         EXYNOS4_GPIO_K34,
204         EXYNOS4_GPIO_K35,
205         EXYNOS4_GPIO_K36,
206         EXYNOS4_GPIO_K37,
207         EXYNOS4_GPIO_L00,               /* 176 0xB0 */
208         EXYNOS4_GPIO_L01,
209         EXYNOS4_GPIO_L02,
210         EXYNOS4_GPIO_L03,
211         EXYNOS4_GPIO_L04,
212         EXYNOS4_GPIO_L05,
213         EXYNOS4_GPIO_L06,
214         EXYNOS4_GPIO_L07,
215         EXYNOS4_GPIO_L10,               /* 184 0xB8 */
216         EXYNOS4_GPIO_L11,
217         EXYNOS4_GPIO_L12,
218         EXYNOS4_GPIO_L13,
219         EXYNOS4_GPIO_L14,
220         EXYNOS4_GPIO_L15,
221         EXYNOS4_GPIO_L16,
222         EXYNOS4_GPIO_L17,
223         EXYNOS4_GPIO_L20,               /* 192 0xC0 */
224         EXYNOS4_GPIO_L21,
225         EXYNOS4_GPIO_L22,
226         EXYNOS4_GPIO_L23,
227         EXYNOS4_GPIO_L24,
228         EXYNOS4_GPIO_L25,
229         EXYNOS4_GPIO_L26,
230         EXYNOS4_GPIO_L27,
231         EXYNOS4_GPIO_Y00,               /* 200 0xC8 */
232         EXYNOS4_GPIO_Y01,
233         EXYNOS4_GPIO_Y02,
234         EXYNOS4_GPIO_Y03,
235         EXYNOS4_GPIO_Y04,
236         EXYNOS4_GPIO_Y05,
237         EXYNOS4_GPIO_Y06,
238         EXYNOS4_GPIO_Y07,
239         EXYNOS4_GPIO_Y10,               /* 208 0xD0 */
240         EXYNOS4_GPIO_Y11,
241         EXYNOS4_GPIO_Y12,
242         EXYNOS4_GPIO_Y13,
243         EXYNOS4_GPIO_Y14,
244         EXYNOS4_GPIO_Y15,
245         EXYNOS4_GPIO_Y16,
246         EXYNOS4_GPIO_Y17,
247         EXYNOS4_GPIO_Y20,               /* 216 0xD8 */
248         EXYNOS4_GPIO_Y21,
249         EXYNOS4_GPIO_Y22,
250         EXYNOS4_GPIO_Y23,
251         EXYNOS4_GPIO_Y24,
252         EXYNOS4_GPIO_Y25,
253         EXYNOS4_GPIO_Y26,
254         EXYNOS4_GPIO_Y27,
255         EXYNOS4_GPIO_Y30,               /* 224 0xE0 */
256         EXYNOS4_GPIO_Y31,
257         EXYNOS4_GPIO_Y32,
258         EXYNOS4_GPIO_Y33,
259         EXYNOS4_GPIO_Y34,
260         EXYNOS4_GPIO_Y35,
261         EXYNOS4_GPIO_Y36,
262         EXYNOS4_GPIO_Y37,
263         EXYNOS4_GPIO_Y40,               /* 232 0xE8 */
264         EXYNOS4_GPIO_Y41,
265         EXYNOS4_GPIO_Y42,
266         EXYNOS4_GPIO_Y43,
267         EXYNOS4_GPIO_Y44,
268         EXYNOS4_GPIO_Y45,
269         EXYNOS4_GPIO_Y46,
270         EXYNOS4_GPIO_Y47,
271         EXYNOS4_GPIO_Y50,               /* 240 0xF0 */
272         EXYNOS4_GPIO_Y51,
273         EXYNOS4_GPIO_Y52,
274         EXYNOS4_GPIO_Y53,
275         EXYNOS4_GPIO_Y54,
276         EXYNOS4_GPIO_Y55,
277         EXYNOS4_GPIO_Y56,
278         EXYNOS4_GPIO_Y57,
279         EXYNOS4_GPIO_Y60,               /* 248 0xF8 */
280         EXYNOS4_GPIO_Y61,
281         EXYNOS4_GPIO_Y62,
282         EXYNOS4_GPIO_Y63,
283         EXYNOS4_GPIO_Y64,
284         EXYNOS4_GPIO_Y65,
285         EXYNOS4_GPIO_Y66,
286         EXYNOS4_GPIO_Y67,
287         EXYNOS4_GPIO_X00,               /* 256 0x100 */
288         EXYNOS4_GPIO_X01,
289         EXYNOS4_GPIO_X02,
290         EXYNOS4_GPIO_X03,
291         EXYNOS4_GPIO_X04,
292         EXYNOS4_GPIO_X05,
293         EXYNOS4_GPIO_X06,
294         EXYNOS4_GPIO_X07,
295         EXYNOS4_GPIO_X10,               /* 264 0x108 */
296         EXYNOS4_GPIO_X11,
297         EXYNOS4_GPIO_X12,
298         EXYNOS4_GPIO_X13,
299         EXYNOS4_GPIO_X14,
300         EXYNOS4_GPIO_X15,
301         EXYNOS4_GPIO_X16,
302         EXYNOS4_GPIO_X17,
303         EXYNOS4_GPIO_X20,               /* 272 0x110 */
304         EXYNOS4_GPIO_X21,
305         EXYNOS4_GPIO_X22,
306         EXYNOS4_GPIO_X23,
307         EXYNOS4_GPIO_X24,
308         EXYNOS4_GPIO_X25,
309         EXYNOS4_GPIO_X26,
310         EXYNOS4_GPIO_X27,
311         EXYNOS4_GPIO_X30,               /* 280 0x118 */
312         EXYNOS4_GPIO_X31,
313         EXYNOS4_GPIO_X32,
314         EXYNOS4_GPIO_X33,
315         EXYNOS4_GPIO_X34,
316         EXYNOS4_GPIO_X35,
317         EXYNOS4_GPIO_X36,
318         EXYNOS4_GPIO_X37,
319
320         /* GPIO_PART3_STARTS */
321         EXYNOS4_GPIO_MAX_PORT_PART_2,   /* 288 0x120 */
322         EXYNOS4_GPIO_Z0 = EXYNOS4_GPIO_MAX_PORT_PART_2,
323         EXYNOS4_GPIO_Z1,
324         EXYNOS4_GPIO_Z2,
325         EXYNOS4_GPIO_Z3,
326         EXYNOS4_GPIO_Z4,
327         EXYNOS4_GPIO_Z5,
328         EXYNOS4_GPIO_Z6,
329         EXYNOS4_GPIO_Z7,
330
331         EXYNOS4_GPIO_MAX_PORT
332 };
333
334 enum exynos4X12_gpio_pin {
335         /* GPIO_PART1_STARTS */
336         EXYNOS4X12_GPIO_A00,            /* 0 */
337         EXYNOS4X12_GPIO_A01,
338         EXYNOS4X12_GPIO_A02,
339         EXYNOS4X12_GPIO_A03,
340         EXYNOS4X12_GPIO_A04,
341         EXYNOS4X12_GPIO_A05,
342         EXYNOS4X12_GPIO_A06,
343         EXYNOS4X12_GPIO_A07,
344         EXYNOS4X12_GPIO_A10,            /* 8 */
345         EXYNOS4X12_GPIO_A11,
346         EXYNOS4X12_GPIO_A12,
347         EXYNOS4X12_GPIO_A13,
348         EXYNOS4X12_GPIO_A14,
349         EXYNOS4X12_GPIO_A15,
350         EXYNOS4X12_GPIO_A16,
351         EXYNOS4X12_GPIO_A17,
352         EXYNOS4X12_GPIO_B0,             /* 16 0x10 */
353         EXYNOS4X12_GPIO_B1,
354         EXYNOS4X12_GPIO_B2,
355         EXYNOS4X12_GPIO_B3,
356         EXYNOS4X12_GPIO_B4,
357         EXYNOS4X12_GPIO_B5,
358         EXYNOS4X12_GPIO_B6,
359         EXYNOS4X12_GPIO_B7,
360         EXYNOS4X12_GPIO_C00,            /* 24 0x18 */
361         EXYNOS4X12_GPIO_C01,
362         EXYNOS4X12_GPIO_C02,
363         EXYNOS4X12_GPIO_C03,
364         EXYNOS4X12_GPIO_C04,
365         EXYNOS4X12_GPIO_C05,
366         EXYNOS4X12_GPIO_C06,
367         EXYNOS4X12_GPIO_C07,
368         EXYNOS4X12_GPIO_C10,            /* 32 0x20 */
369         EXYNOS4X12_GPIO_C11,
370         EXYNOS4X12_GPIO_C12,
371         EXYNOS4X12_GPIO_C13,
372         EXYNOS4X12_GPIO_C14,
373         EXYNOS4X12_GPIO_C15,
374         EXYNOS4X12_GPIO_C16,
375         EXYNOS4X12_GPIO_C17,
376         EXYNOS4X12_GPIO_D00,            /* 40 0x28 */
377         EXYNOS4X12_GPIO_D01,
378         EXYNOS4X12_GPIO_D02,
379         EXYNOS4X12_GPIO_D03,
380         EXYNOS4X12_GPIO_D04,
381         EXYNOS4X12_GPIO_D05,
382         EXYNOS4X12_GPIO_D06,
383         EXYNOS4X12_GPIO_D07,
384         EXYNOS4X12_GPIO_D10,            /* 48 0x30 */
385         EXYNOS4X12_GPIO_D11,
386         EXYNOS4X12_GPIO_D12,
387         EXYNOS4X12_GPIO_D13,
388         EXYNOS4X12_GPIO_D14,
389         EXYNOS4X12_GPIO_D15,
390         EXYNOS4X12_GPIO_D16,
391         EXYNOS4X12_GPIO_D17,
392         EXYNOS4X12_GPIO_F00,            /* 56 0x38 */
393         EXYNOS4X12_GPIO_F01,
394         EXYNOS4X12_GPIO_F02,
395         EXYNOS4X12_GPIO_F03,
396         EXYNOS4X12_GPIO_F04,
397         EXYNOS4X12_GPIO_F05,
398         EXYNOS4X12_GPIO_F06,
399         EXYNOS4X12_GPIO_F07,
400         EXYNOS4X12_GPIO_F10,            /* 64 0x40 */
401         EXYNOS4X12_GPIO_F11,
402         EXYNOS4X12_GPIO_F12,
403         EXYNOS4X12_GPIO_F13,
404         EXYNOS4X12_GPIO_F14,
405         EXYNOS4X12_GPIO_F15,
406         EXYNOS4X12_GPIO_F16,
407         EXYNOS4X12_GPIO_F17,
408         EXYNOS4X12_GPIO_F20,            /* 72 0x48 */
409         EXYNOS4X12_GPIO_F21,
410         EXYNOS4X12_GPIO_F22,
411         EXYNOS4X12_GPIO_F23,
412         EXYNOS4X12_GPIO_F24,
413         EXYNOS4X12_GPIO_F25,
414         EXYNOS4X12_GPIO_F26,
415         EXYNOS4X12_GPIO_F27,
416         EXYNOS4X12_GPIO_F30,            /* 80 0x50 */
417         EXYNOS4X12_GPIO_F31,
418         EXYNOS4X12_GPIO_F32,
419         EXYNOS4X12_GPIO_F33,
420         EXYNOS4X12_GPIO_F34,
421         EXYNOS4X12_GPIO_F35,
422         EXYNOS4X12_GPIO_F36,
423         EXYNOS4X12_GPIO_F37,
424         EXYNOS4X12_GPIO_J00,            /* 88 0x58 */
425         EXYNOS4X12_GPIO_J01,
426         EXYNOS4X12_GPIO_J02,
427         EXYNOS4X12_GPIO_J03,
428         EXYNOS4X12_GPIO_J04,
429         EXYNOS4X12_GPIO_J05,
430         EXYNOS4X12_GPIO_J06,
431         EXYNOS4X12_GPIO_J07,
432         EXYNOS4X12_GPIO_J10,            /* 96 0x60 */
433         EXYNOS4X12_GPIO_J11,
434         EXYNOS4X12_GPIO_J12,
435         EXYNOS4X12_GPIO_J13,
436         EXYNOS4X12_GPIO_J14,
437         EXYNOS4X12_GPIO_J15,
438         EXYNOS4X12_GPIO_J16,
439         EXYNOS4X12_GPIO_J17,
440
441         /* GPIO_PART2_STARTS */
442         EXYNOS4X12_GPIO_MAX_PORT_PART_1,/* 104 0x66 */
443         EXYNOS4X12_GPIO_K00 = EXYNOS4X12_GPIO_MAX_PORT_PART_1,
444         EXYNOS4X12_GPIO_K01,
445         EXYNOS4X12_GPIO_K02,
446         EXYNOS4X12_GPIO_K03,
447         EXYNOS4X12_GPIO_K04,
448         EXYNOS4X12_GPIO_K05,
449         EXYNOS4X12_GPIO_K06,
450         EXYNOS4X12_GPIO_K07,
451         EXYNOS4X12_GPIO_K10,            /* 112 0x70 */
452         EXYNOS4X12_GPIO_K11,
453         EXYNOS4X12_GPIO_K12,
454         EXYNOS4X12_GPIO_K13,
455         EXYNOS4X12_GPIO_K14,
456         EXYNOS4X12_GPIO_K15,
457         EXYNOS4X12_GPIO_K16,
458         EXYNOS4X12_GPIO_K17,
459         EXYNOS4X12_GPIO_K20,            /* 120 0x78 */
460         EXYNOS4X12_GPIO_K21,
461         EXYNOS4X12_GPIO_K22,
462         EXYNOS4X12_GPIO_K23,
463         EXYNOS4X12_GPIO_K24,
464         EXYNOS4X12_GPIO_K25,
465         EXYNOS4X12_GPIO_K26,
466         EXYNOS4X12_GPIO_K27,
467         EXYNOS4X12_GPIO_K30,            /* 128 0x80 */
468         EXYNOS4X12_GPIO_K31,
469         EXYNOS4X12_GPIO_K32,
470         EXYNOS4X12_GPIO_K33,
471         EXYNOS4X12_GPIO_K34,
472         EXYNOS4X12_GPIO_K35,
473         EXYNOS4X12_GPIO_K36,
474         EXYNOS4X12_GPIO_K37,
475         EXYNOS4X12_GPIO_L00,            /* 136 0x88 */
476         EXYNOS4X12_GPIO_L01,
477         EXYNOS4X12_GPIO_L02,
478         EXYNOS4X12_GPIO_L03,
479         EXYNOS4X12_GPIO_L04,
480         EXYNOS4X12_GPIO_L05,
481         EXYNOS4X12_GPIO_L06,
482         EXYNOS4X12_GPIO_L07,
483         EXYNOS4X12_GPIO_L10,            /* 144 0x90 */
484         EXYNOS4X12_GPIO_L11,
485         EXYNOS4X12_GPIO_L12,
486         EXYNOS4X12_GPIO_L13,
487         EXYNOS4X12_GPIO_L14,
488         EXYNOS4X12_GPIO_L15,
489         EXYNOS4X12_GPIO_L16,
490         EXYNOS4X12_GPIO_L17,
491         EXYNOS4X12_GPIO_L20,            /* 152 0x98 */
492         EXYNOS4X12_GPIO_L21,
493         EXYNOS4X12_GPIO_L22,
494         EXYNOS4X12_GPIO_L23,
495         EXYNOS4X12_GPIO_L24,
496         EXYNOS4X12_GPIO_L25,
497         EXYNOS4X12_GPIO_L26,
498         EXYNOS4X12_GPIO_L27,
499         EXYNOS4X12_GPIO_Y00,            /* 160 0xa0 */
500         EXYNOS4X12_GPIO_Y01,
501         EXYNOS4X12_GPIO_Y02,
502         EXYNOS4X12_GPIO_Y03,
503         EXYNOS4X12_GPIO_Y04,
504         EXYNOS4X12_GPIO_Y05,
505         EXYNOS4X12_GPIO_Y06,
506         EXYNOS4X12_GPIO_Y07,
507         EXYNOS4X12_GPIO_Y10,            /* 168 0xa8 */
508         EXYNOS4X12_GPIO_Y11,
509         EXYNOS4X12_GPIO_Y12,
510         EXYNOS4X12_GPIO_Y13,
511         EXYNOS4X12_GPIO_Y14,
512         EXYNOS4X12_GPIO_Y15,
513         EXYNOS4X12_GPIO_Y16,
514         EXYNOS4X12_GPIO_Y17,
515         EXYNOS4X12_GPIO_Y20,            /* 176 0xb0 */
516         EXYNOS4X12_GPIO_Y21,
517         EXYNOS4X12_GPIO_Y22,
518         EXYNOS4X12_GPIO_Y23,
519         EXYNOS4X12_GPIO_Y24,
520         EXYNOS4X12_GPIO_Y25,
521         EXYNOS4X12_GPIO_Y26,
522         EXYNOS4X12_GPIO_Y27,
523         EXYNOS4X12_GPIO_Y30,            /* 184 0xb8 */
524         EXYNOS4X12_GPIO_Y31,
525         EXYNOS4X12_GPIO_Y32,
526         EXYNOS4X12_GPIO_Y33,
527         EXYNOS4X12_GPIO_Y34,
528         EXYNOS4X12_GPIO_Y35,
529         EXYNOS4X12_GPIO_Y36,
530         EXYNOS4X12_GPIO_Y37,
531         EXYNOS4X12_GPIO_Y40,            /* 192 0xc0 */
532         EXYNOS4X12_GPIO_Y41,
533         EXYNOS4X12_GPIO_Y42,
534         EXYNOS4X12_GPIO_Y43,
535         EXYNOS4X12_GPIO_Y44,
536         EXYNOS4X12_GPIO_Y45,
537         EXYNOS4X12_GPIO_Y46,
538         EXYNOS4X12_GPIO_Y47,
539         EXYNOS4X12_GPIO_Y50,            /* 200 0xc8 */
540         EXYNOS4X12_GPIO_Y51,
541         EXYNOS4X12_GPIO_Y52,
542         EXYNOS4X12_GPIO_Y53,
543         EXYNOS4X12_GPIO_Y54,
544         EXYNOS4X12_GPIO_Y55,
545         EXYNOS4X12_GPIO_Y56,
546         EXYNOS4X12_GPIO_Y57,
547         EXYNOS4X12_GPIO_Y60,            /* 208 0xd0 */
548         EXYNOS4X12_GPIO_Y61,
549         EXYNOS4X12_GPIO_Y62,
550         EXYNOS4X12_GPIO_Y63,
551         EXYNOS4X12_GPIO_Y64,
552         EXYNOS4X12_GPIO_Y65,
553         EXYNOS4X12_GPIO_Y66,
554         EXYNOS4X12_GPIO_Y67,
555         EXYNOS4X12_GPIO_M00,            /* 216 0xd8 */
556         EXYNOS4X12_GPIO_M01,
557         EXYNOS4X12_GPIO_M02,
558         EXYNOS4X12_GPIO_M03,
559         EXYNOS4X12_GPIO_M04,
560         EXYNOS4X12_GPIO_M05,
561         EXYNOS4X12_GPIO_M06,
562         EXYNOS4X12_GPIO_M07,
563         EXYNOS4X12_GPIO_M10,            /* 224 0xe0 */
564         EXYNOS4X12_GPIO_M11,
565         EXYNOS4X12_GPIO_M12,
566         EXYNOS4X12_GPIO_M13,
567         EXYNOS4X12_GPIO_M14,
568         EXYNOS4X12_GPIO_M15,
569         EXYNOS4X12_GPIO_M16,
570         EXYNOS4X12_GPIO_M17,
571         EXYNOS4X12_GPIO_M20,            /* 232 0xe8 */
572         EXYNOS4X12_GPIO_M21,
573         EXYNOS4X12_GPIO_M22,
574         EXYNOS4X12_GPIO_M23,
575         EXYNOS4X12_GPIO_M24,
576         EXYNOS4X12_GPIO_M25,
577         EXYNOS4X12_GPIO_M26,
578         EXYNOS4X12_GPIO_M27,
579         EXYNOS4X12_GPIO_M30,            /* 240 0xf0 */
580         EXYNOS4X12_GPIO_M31,
581         EXYNOS4X12_GPIO_M32,
582         EXYNOS4X12_GPIO_M33,
583         EXYNOS4X12_GPIO_M34,
584         EXYNOS4X12_GPIO_M35,
585         EXYNOS4X12_GPIO_M36,
586         EXYNOS4X12_GPIO_M37,
587         EXYNOS4X12_GPIO_M40,            /* 248 0xf8 */
588         EXYNOS4X12_GPIO_M41,
589         EXYNOS4X12_GPIO_M42,
590         EXYNOS4X12_GPIO_M43,
591         EXYNOS4X12_GPIO_M44,
592         EXYNOS4X12_GPIO_M45,
593         EXYNOS4X12_GPIO_M46,
594         EXYNOS4X12_GPIO_M47,
595         EXYNOS4X12_GPIO_X00,            /* 256 0x100 */
596         EXYNOS4X12_GPIO_X01,
597         EXYNOS4X12_GPIO_X02,
598         EXYNOS4X12_GPIO_X03,
599         EXYNOS4X12_GPIO_X04,
600         EXYNOS4X12_GPIO_X05,
601         EXYNOS4X12_GPIO_X06,
602         EXYNOS4X12_GPIO_X07,
603         EXYNOS4X12_GPIO_X10,            /* 264 0x108 */
604         EXYNOS4X12_GPIO_X11,
605         EXYNOS4X12_GPIO_X12,
606         EXYNOS4X12_GPIO_X13,
607         EXYNOS4X12_GPIO_X14,
608         EXYNOS4X12_GPIO_X15,
609         EXYNOS4X12_GPIO_X16,
610         EXYNOS4X12_GPIO_X17,
611         EXYNOS4X12_GPIO_X20,            /* 272 0x110 */
612         EXYNOS4X12_GPIO_X21,
613         EXYNOS4X12_GPIO_X22,
614         EXYNOS4X12_GPIO_X23,
615         EXYNOS4X12_GPIO_X24,
616         EXYNOS4X12_GPIO_X25,
617         EXYNOS4X12_GPIO_X26,
618         EXYNOS4X12_GPIO_X27,
619         EXYNOS4X12_GPIO_X30,            /* 280 0x118 */
620         EXYNOS4X12_GPIO_X31,
621         EXYNOS4X12_GPIO_X32,
622         EXYNOS4X12_GPIO_X33,
623         EXYNOS4X12_GPIO_X34,
624         EXYNOS4X12_GPIO_X35,
625         EXYNOS4X12_GPIO_X36,
626         EXYNOS4X12_GPIO_X37,
627
628         /* GPIO_PART3_STARTS */
629         EXYNOS4X12_GPIO_MAX_PORT_PART_2,/* 288 0x120 */
630         EXYNOS4X12_GPIO_Z0 = EXYNOS4X12_GPIO_MAX_PORT_PART_2,
631         EXYNOS4X12_GPIO_Z1,
632         EXYNOS4X12_GPIO_Z2,
633         EXYNOS4X12_GPIO_Z3,
634         EXYNOS4X12_GPIO_Z4,
635         EXYNOS4X12_GPIO_Z5,
636         EXYNOS4X12_GPIO_Z6,
637         EXYNOS4X12_GPIO_Z7,
638
639         /* GPIO_PART4_STARTS */
640         EXYNOS4X12_GPIO_MAX_PORT_PART_3,/* 296 0x128 */
641         EXYNOS4X12_GPIO_V00 = EXYNOS4X12_GPIO_MAX_PORT_PART_3,
642         EXYNOS4X12_GPIO_V01,
643         EXYNOS4X12_GPIO_V02,
644         EXYNOS4X12_GPIO_V03,
645         EXYNOS4X12_GPIO_V04,
646         EXYNOS4X12_GPIO_V05,
647         EXYNOS4X12_GPIO_V06,
648         EXYNOS4X12_GPIO_V07,
649         EXYNOS4X12_GPIO_V10,            /* 304 0x130 */
650         EXYNOS4X12_GPIO_V11,
651         EXYNOS4X12_GPIO_V12,
652         EXYNOS4X12_GPIO_V13,
653         EXYNOS4X12_GPIO_V14,
654         EXYNOS4X12_GPIO_V15,
655         EXYNOS4X12_GPIO_V16,
656         EXYNOS4X12_GPIO_V17,
657         EXYNOS4X12_GPIO_V20,            /* 312 0x138 */
658         EXYNOS4X12_GPIO_V21,
659         EXYNOS4X12_GPIO_V22,
660         EXYNOS4X12_GPIO_V23,
661         EXYNOS4X12_GPIO_V24,
662         EXYNOS4X12_GPIO_V25,
663         EXYNOS4X12_GPIO_V26,
664         EXYNOS4X12_GPIO_V27,
665         EXYNOS4X12_GPIO_V30,            /* 320 0x140 */
666         EXYNOS4X12_GPIO_V31,
667         EXYNOS4X12_GPIO_V32,
668         EXYNOS4X12_GPIO_V33,
669         EXYNOS4X12_GPIO_V34,
670         EXYNOS4X12_GPIO_V35,
671         EXYNOS4X12_GPIO_V36,
672         EXYNOS4X12_GPIO_V37,
673         EXYNOS4X12_GPIO_V40,            /* 328 0x148 */
674         EXYNOS4X12_GPIO_V41,
675         EXYNOS4X12_GPIO_V42,
676         EXYNOS4X12_GPIO_V43,
677         EXYNOS4X12_GPIO_V44,
678         EXYNOS4X12_GPIO_V45,
679         EXYNOS4X12_GPIO_V46,
680         EXYNOS4X12_GPIO_V47,
681
682         EXYNOS4X12_GPIO_MAX_PORT
683 };
684
685 enum exynos5_gpio_pin {
686         /* GPIO_PART1_STARTS */
687         EXYNOS5_GPIO_A00,               /* 0 */
688         EXYNOS5_GPIO_A01,
689         EXYNOS5_GPIO_A02,
690         EXYNOS5_GPIO_A03,
691         EXYNOS5_GPIO_A04,
692         EXYNOS5_GPIO_A05,
693         EXYNOS5_GPIO_A06,
694         EXYNOS5_GPIO_A07,
695         EXYNOS5_GPIO_A10,               /* 8 */
696         EXYNOS5_GPIO_A11,
697         EXYNOS5_GPIO_A12,
698         EXYNOS5_GPIO_A13,
699         EXYNOS5_GPIO_A14,
700         EXYNOS5_GPIO_A15,
701         EXYNOS5_GPIO_A16,
702         EXYNOS5_GPIO_A17,
703         EXYNOS5_GPIO_A20,               /* 16 0x10 */
704         EXYNOS5_GPIO_A21,
705         EXYNOS5_GPIO_A22,
706         EXYNOS5_GPIO_A23,
707         EXYNOS5_GPIO_A24,
708         EXYNOS5_GPIO_A25,
709         EXYNOS5_GPIO_A26,
710         EXYNOS5_GPIO_A27,
711         EXYNOS5_GPIO_B00,               /* 24 0x18 */
712         EXYNOS5_GPIO_B01,
713         EXYNOS5_GPIO_B02,
714         EXYNOS5_GPIO_B03,
715         EXYNOS5_GPIO_B04,
716         EXYNOS5_GPIO_B05,
717         EXYNOS5_GPIO_B06,
718         EXYNOS5_GPIO_B07,
719         EXYNOS5_GPIO_B10,               /* 32 0x20 */
720         EXYNOS5_GPIO_B11,
721         EXYNOS5_GPIO_B12,
722         EXYNOS5_GPIO_B13,
723         EXYNOS5_GPIO_B14,
724         EXYNOS5_GPIO_B15,
725         EXYNOS5_GPIO_B16,
726         EXYNOS5_GPIO_B17,
727         EXYNOS5_GPIO_B20,               /* 40 0x28 */
728         EXYNOS5_GPIO_B21,
729         EXYNOS5_GPIO_B22,
730         EXYNOS5_GPIO_B23,
731         EXYNOS5_GPIO_B24,
732         EXYNOS5_GPIO_B25,
733         EXYNOS5_GPIO_B26,
734         EXYNOS5_GPIO_B27,
735         EXYNOS5_GPIO_B30,               /* 48 0x39 */
736         EXYNOS5_GPIO_B31,
737         EXYNOS5_GPIO_B32,
738         EXYNOS5_GPIO_B33,
739         EXYNOS5_GPIO_B34,
740         EXYNOS5_GPIO_B35,
741         EXYNOS5_GPIO_B36,
742         EXYNOS5_GPIO_B37,
743         EXYNOS5_GPIO_C00,               /* 56 0x38 */
744         EXYNOS5_GPIO_C01,
745         EXYNOS5_GPIO_C02,
746         EXYNOS5_GPIO_C03,
747         EXYNOS5_GPIO_C04,
748         EXYNOS5_GPIO_C05,
749         EXYNOS5_GPIO_C06,
750         EXYNOS5_GPIO_C07,
751         EXYNOS5_GPIO_C10,               /* 64 0x40 */
752         EXYNOS5_GPIO_C11,
753         EXYNOS5_GPIO_C12,
754         EXYNOS5_GPIO_C13,
755         EXYNOS5_GPIO_C14,
756         EXYNOS5_GPIO_C15,
757         EXYNOS5_GPIO_C16,
758         EXYNOS5_GPIO_C17,
759         EXYNOS5_GPIO_C20,               /* 72 0x48 */
760         EXYNOS5_GPIO_C21,
761         EXYNOS5_GPIO_C22,
762         EXYNOS5_GPIO_C23,
763         EXYNOS5_GPIO_C24,
764         EXYNOS5_GPIO_C25,
765         EXYNOS5_GPIO_C26,
766         EXYNOS5_GPIO_C27,
767         EXYNOS5_GPIO_C30,               /* 80 0x50 */
768         EXYNOS5_GPIO_C31,
769         EXYNOS5_GPIO_C32,
770         EXYNOS5_GPIO_C33,
771         EXYNOS5_GPIO_C34,
772         EXYNOS5_GPIO_C35,
773         EXYNOS5_GPIO_C36,
774         EXYNOS5_GPIO_C37,
775         EXYNOS5_GPIO_D00,               /* 88 0x58 */
776         EXYNOS5_GPIO_D01,
777         EXYNOS5_GPIO_D02,
778         EXYNOS5_GPIO_D03,
779         EXYNOS5_GPIO_D04,
780         EXYNOS5_GPIO_D05,
781         EXYNOS5_GPIO_D06,
782         EXYNOS5_GPIO_D07,
783         EXYNOS5_GPIO_D10,               /* 96 0x60 */
784         EXYNOS5_GPIO_D11,
785         EXYNOS5_GPIO_D12,
786         EXYNOS5_GPIO_D13,
787         EXYNOS5_GPIO_D14,
788         EXYNOS5_GPIO_D15,
789         EXYNOS5_GPIO_D16,
790         EXYNOS5_GPIO_D17,
791         EXYNOS5_GPIO_Y00,               /* 104 0x68 */
792         EXYNOS5_GPIO_Y01,
793         EXYNOS5_GPIO_Y02,
794         EXYNOS5_GPIO_Y03,
795         EXYNOS5_GPIO_Y04,
796         EXYNOS5_GPIO_Y05,
797         EXYNOS5_GPIO_Y06,
798         EXYNOS5_GPIO_Y07,
799         EXYNOS5_GPIO_Y10,               /* 112 0x70 */
800         EXYNOS5_GPIO_Y11,
801         EXYNOS5_GPIO_Y12,
802         EXYNOS5_GPIO_Y13,
803         EXYNOS5_GPIO_Y14,
804         EXYNOS5_GPIO_Y15,
805         EXYNOS5_GPIO_Y16,
806         EXYNOS5_GPIO_Y17,
807         EXYNOS5_GPIO_Y20,               /* 120 0x78 */
808         EXYNOS5_GPIO_Y21,
809         EXYNOS5_GPIO_Y22,
810         EXYNOS5_GPIO_Y23,
811         EXYNOS5_GPIO_Y24,
812         EXYNOS5_GPIO_Y25,
813         EXYNOS5_GPIO_Y26,
814         EXYNOS5_GPIO_Y27,
815         EXYNOS5_GPIO_Y30,               /* 128 0x80 */
816         EXYNOS5_GPIO_Y31,
817         EXYNOS5_GPIO_Y32,
818         EXYNOS5_GPIO_Y33,
819         EXYNOS5_GPIO_Y34,
820         EXYNOS5_GPIO_Y35,
821         EXYNOS5_GPIO_Y36,
822         EXYNOS5_GPIO_Y37,
823         EXYNOS5_GPIO_Y40,               /* 136 0x88 */
824         EXYNOS5_GPIO_Y41,
825         EXYNOS5_GPIO_Y42,
826         EXYNOS5_GPIO_Y43,
827         EXYNOS5_GPIO_Y44,
828         EXYNOS5_GPIO_Y45,
829         EXYNOS5_GPIO_Y46,
830         EXYNOS5_GPIO_Y47,
831         EXYNOS5_GPIO_Y50,               /* 144 0x90 */
832         EXYNOS5_GPIO_Y51,
833         EXYNOS5_GPIO_Y52,
834         EXYNOS5_GPIO_Y53,
835         EXYNOS5_GPIO_Y54,
836         EXYNOS5_GPIO_Y55,
837         EXYNOS5_GPIO_Y56,
838         EXYNOS5_GPIO_Y57,
839         EXYNOS5_GPIO_Y60,               /* 152 0x98 */
840         EXYNOS5_GPIO_Y61,
841         EXYNOS5_GPIO_Y62,
842         EXYNOS5_GPIO_Y63,
843         EXYNOS5_GPIO_Y64,
844         EXYNOS5_GPIO_Y65,
845         EXYNOS5_GPIO_Y66,
846         EXYNOS5_GPIO_Y67,
847
848         /* GPIO_PART2_STARTS */
849         EXYNOS5_GPIO_MAX_PORT_PART_1,   /* 160 0xa0 */
850         EXYNOS5_GPIO_C40 = EXYNOS5_GPIO_MAX_PORT_PART_1,
851         EXYNOS5_GPIO_C41,
852         EXYNOS5_GPIO_C42,
853         EXYNOS5_GPIO_C43,
854         EXYNOS5_GPIO_C44,
855         EXYNOS5_GPIO_C45,
856         EXYNOS5_GPIO_C46,
857         EXYNOS5_GPIO_C47,
858
859         /* GPIO_PART3_STARTS */
860         EXYNOS5_GPIO_MAX_PORT_PART_2,   /* 168 0xa8 */
861         EXYNOS5_GPIO_X00 = EXYNOS5_GPIO_MAX_PORT_PART_2,
862         EXYNOS5_GPIO_X01,
863         EXYNOS5_GPIO_X02,
864         EXYNOS5_GPIO_X03,
865         EXYNOS5_GPIO_X04,
866         EXYNOS5_GPIO_X05,
867         EXYNOS5_GPIO_X06,
868         EXYNOS5_GPIO_X07,
869         EXYNOS5_GPIO_X10,               /* 176 0xb0 */
870         EXYNOS5_GPIO_X11,
871         EXYNOS5_GPIO_X12,
872         EXYNOS5_GPIO_X13,
873         EXYNOS5_GPIO_X14,
874         EXYNOS5_GPIO_X15,
875         EXYNOS5_GPIO_X16,
876         EXYNOS5_GPIO_X17,
877         EXYNOS5_GPIO_X20,               /* 184 0xb8 */
878         EXYNOS5_GPIO_X21,
879         EXYNOS5_GPIO_X22,
880         EXYNOS5_GPIO_X23,
881         EXYNOS5_GPIO_X24,
882         EXYNOS5_GPIO_X25,
883         EXYNOS5_GPIO_X26,
884         EXYNOS5_GPIO_X27,
885         EXYNOS5_GPIO_X30,               /* 192 0xc0 */
886         EXYNOS5_GPIO_X31,
887         EXYNOS5_GPIO_X32,
888         EXYNOS5_GPIO_X33,
889         EXYNOS5_GPIO_X34,
890         EXYNOS5_GPIO_X35,
891         EXYNOS5_GPIO_X36,
892         EXYNOS5_GPIO_X37,
893
894         /* GPIO_PART4_STARTS */
895         EXYNOS5_GPIO_MAX_PORT_PART_3,   /* 200 0xc8 */
896         EXYNOS5_GPIO_E00 = EXYNOS5_GPIO_MAX_PORT_PART_3,
897         EXYNOS5_GPIO_E01,
898         EXYNOS5_GPIO_E02,
899         EXYNOS5_GPIO_E03,
900         EXYNOS5_GPIO_E04,
901         EXYNOS5_GPIO_E05,
902         EXYNOS5_GPIO_E06,
903         EXYNOS5_GPIO_E07,
904         EXYNOS5_GPIO_E10,               /* 208 0xd0 */
905         EXYNOS5_GPIO_E11,
906         EXYNOS5_GPIO_E12,
907         EXYNOS5_GPIO_E13,
908         EXYNOS5_GPIO_E14,
909         EXYNOS5_GPIO_E15,
910         EXYNOS5_GPIO_E16,
911         EXYNOS5_GPIO_E17,
912         EXYNOS5_GPIO_F00,               /* 216 0xd8 */
913         EXYNOS5_GPIO_F01,
914         EXYNOS5_GPIO_F02,
915         EXYNOS5_GPIO_F03,
916         EXYNOS5_GPIO_F04,
917         EXYNOS5_GPIO_F05,
918         EXYNOS5_GPIO_F06,
919         EXYNOS5_GPIO_F07,
920         EXYNOS5_GPIO_F10,               /* 224 0xe0 */
921         EXYNOS5_GPIO_F11,
922         EXYNOS5_GPIO_F12,
923         EXYNOS5_GPIO_F13,
924         EXYNOS5_GPIO_F14,
925         EXYNOS5_GPIO_F15,
926         EXYNOS5_GPIO_F16,
927         EXYNOS5_GPIO_F17,
928         EXYNOS5_GPIO_G00,               /* 232 0xe8 */
929         EXYNOS5_GPIO_G01,
930         EXYNOS5_GPIO_G02,
931         EXYNOS5_GPIO_G03,
932         EXYNOS5_GPIO_G04,
933         EXYNOS5_GPIO_G05,
934         EXYNOS5_GPIO_G06,
935         EXYNOS5_GPIO_G07,
936         EXYNOS5_GPIO_G10,               /* 240 0xf0 */
937         EXYNOS5_GPIO_G11,
938         EXYNOS5_GPIO_G12,
939         EXYNOS5_GPIO_G13,
940         EXYNOS5_GPIO_G14,
941         EXYNOS5_GPIO_G15,
942         EXYNOS5_GPIO_G16,
943         EXYNOS5_GPIO_G17,
944         EXYNOS5_GPIO_G20,               /* 248 0xf8 */
945         EXYNOS5_GPIO_G21,
946         EXYNOS5_GPIO_G22,
947         EXYNOS5_GPIO_G23,
948         EXYNOS5_GPIO_G24,
949         EXYNOS5_GPIO_G25,
950         EXYNOS5_GPIO_G26,
951         EXYNOS5_GPIO_G27,
952         EXYNOS5_GPIO_H00,               /* 256 0x100 */
953         EXYNOS5_GPIO_H01,
954         EXYNOS5_GPIO_H02,
955         EXYNOS5_GPIO_H03,
956         EXYNOS5_GPIO_H04,
957         EXYNOS5_GPIO_H05,
958         EXYNOS5_GPIO_H06,
959         EXYNOS5_GPIO_H07,
960         EXYNOS5_GPIO_H10,               /* 264 0x108 */
961         EXYNOS5_GPIO_H11,
962         EXYNOS5_GPIO_H12,
963         EXYNOS5_GPIO_H13,
964         EXYNOS5_GPIO_H14,
965         EXYNOS5_GPIO_H15,
966         EXYNOS5_GPIO_H16,
967         EXYNOS5_GPIO_H17,
968
969         /* GPIO_PART4_STARTS */
970         EXYNOS5_GPIO_MAX_PORT_PART_4,   /* 272 0x110 */
971         EXYNOS5_GPIO_V00 = EXYNOS5_GPIO_MAX_PORT_PART_4,
972         EXYNOS5_GPIO_V01,
973         EXYNOS5_GPIO_V02,
974         EXYNOS5_GPIO_V03,
975         EXYNOS5_GPIO_V04,
976         EXYNOS5_GPIO_V05,
977         EXYNOS5_GPIO_V06,
978         EXYNOS5_GPIO_V07,
979         EXYNOS5_GPIO_V10,               /* 280 0x118 */
980         EXYNOS5_GPIO_V11,
981         EXYNOS5_GPIO_V12,
982         EXYNOS5_GPIO_V13,
983         EXYNOS5_GPIO_V14,
984         EXYNOS5_GPIO_V15,
985         EXYNOS5_GPIO_V16,
986         EXYNOS5_GPIO_V17,
987
988         /* GPIO_PART5_STARTS */
989         EXYNOS5_GPIO_MAX_PORT_PART_5,   /* 288 0x120 */
990         EXYNOS5_GPIO_V20 = EXYNOS5_GPIO_MAX_PORT_PART_5,
991         EXYNOS5_GPIO_V21,
992         EXYNOS5_GPIO_V22,
993         EXYNOS5_GPIO_V23,
994         EXYNOS5_GPIO_V24,
995         EXYNOS5_GPIO_V25,
996         EXYNOS5_GPIO_V26,
997         EXYNOS5_GPIO_V27,
998         EXYNOS5_GPIO_V30,               /* 296 0x128 */
999         EXYNOS5_GPIO_V31,
1000         EXYNOS5_GPIO_V32,
1001         EXYNOS5_GPIO_V33,
1002         EXYNOS5_GPIO_V34,
1003         EXYNOS5_GPIO_V35,
1004         EXYNOS5_GPIO_V36,
1005         EXYNOS5_GPIO_V37,
1006
1007         /* GPIO_PART6_STARTS */
1008         EXYNOS5_GPIO_MAX_PORT_PART_6,   /* 304 0x130 */
1009         EXYNOS5_GPIO_V40 = EXYNOS5_GPIO_MAX_PORT_PART_6,
1010         EXYNOS5_GPIO_V41,
1011         EXYNOS5_GPIO_V42,
1012         EXYNOS5_GPIO_V43,
1013         EXYNOS5_GPIO_V44,
1014         EXYNOS5_GPIO_V45,
1015         EXYNOS5_GPIO_V46,
1016         EXYNOS5_GPIO_V47,
1017
1018         /* GPIO_PART7_STARTS */         /* 312 0x138 */
1019         EXYNOS5_GPIO_MAX_PORT_PART_7,
1020         EXYNOS5_GPIO_Z0 = EXYNOS5_GPIO_MAX_PORT_PART_7,
1021         EXYNOS5_GPIO_Z1,
1022         EXYNOS5_GPIO_Z2,
1023         EXYNOS5_GPIO_Z3,
1024         EXYNOS5_GPIO_Z4,
1025         EXYNOS5_GPIO_Z5,
1026         EXYNOS5_GPIO_Z6,
1027         EXYNOS5_GPIO_MAX_PORT
1028 };
1029
1030 enum exynos5420_gpio_pin {
1031         /* GPIO_PART1_STARTS */
1032         EXYNOS5420_GPIO_A00,            /* 0 */
1033         EXYNOS5420_GPIO_A01,
1034         EXYNOS5420_GPIO_A02,
1035         EXYNOS5420_GPIO_A03,
1036         EXYNOS5420_GPIO_A04,
1037         EXYNOS5420_GPIO_A05,
1038         EXYNOS5420_GPIO_A06,
1039         EXYNOS5420_GPIO_A07,
1040         EXYNOS5420_GPIO_A10,            /* 8 */
1041         EXYNOS5420_GPIO_A11,
1042         EXYNOS5420_GPIO_A12,
1043         EXYNOS5420_GPIO_A13,
1044         EXYNOS5420_GPIO_A14,
1045         EXYNOS5420_GPIO_A15,
1046         EXYNOS5420_GPIO_A16,
1047         EXYNOS5420_GPIO_A17,
1048         EXYNOS5420_GPIO_A20,            /* 16 0x10 */
1049         EXYNOS5420_GPIO_A21,
1050         EXYNOS5420_GPIO_A22,
1051         EXYNOS5420_GPIO_A23,
1052         EXYNOS5420_GPIO_A24,
1053         EXYNOS5420_GPIO_A25,
1054         EXYNOS5420_GPIO_A26,
1055         EXYNOS5420_GPIO_A27,
1056         EXYNOS5420_GPIO_B00,            /* 24 0x18 */
1057         EXYNOS5420_GPIO_B01,
1058         EXYNOS5420_GPIO_B02,
1059         EXYNOS5420_GPIO_B03,
1060         EXYNOS5420_GPIO_B04,
1061         EXYNOS5420_GPIO_B05,
1062         EXYNOS5420_GPIO_B06,
1063         EXYNOS5420_GPIO_B07,
1064         EXYNOS5420_GPIO_B10,            /* 32 0x20 */
1065         EXYNOS5420_GPIO_B11,
1066         EXYNOS5420_GPIO_B12,
1067         EXYNOS5420_GPIO_B13,
1068         EXYNOS5420_GPIO_B14,
1069         EXYNOS5420_GPIO_B15,
1070         EXYNOS5420_GPIO_B16,
1071         EXYNOS5420_GPIO_B17,
1072         EXYNOS5420_GPIO_B20,            /* 40 0x28 */
1073         EXYNOS5420_GPIO_B21,
1074         EXYNOS5420_GPIO_B22,
1075         EXYNOS5420_GPIO_B23,
1076         EXYNOS5420_GPIO_B24,
1077         EXYNOS5420_GPIO_B25,
1078         EXYNOS5420_GPIO_B26,
1079         EXYNOS5420_GPIO_B27,
1080         EXYNOS5420_GPIO_B30,            /* 48 0x30 */
1081         EXYNOS5420_GPIO_B31,
1082         EXYNOS5420_GPIO_B32,
1083         EXYNOS5420_GPIO_B33,
1084         EXYNOS5420_GPIO_B34,
1085         EXYNOS5420_GPIO_B35,
1086         EXYNOS5420_GPIO_B36,
1087         EXYNOS5420_GPIO_B37,
1088         EXYNOS5420_GPIO_B40,            /* 56 0x38 */
1089         EXYNOS5420_GPIO_B41,
1090         EXYNOS5420_GPIO_B42,
1091         EXYNOS5420_GPIO_B43,
1092         EXYNOS5420_GPIO_B44,
1093         EXYNOS5420_GPIO_B45,
1094         EXYNOS5420_GPIO_B46,
1095         EXYNOS5420_GPIO_B47,
1096         EXYNOS5420_GPIO_H00,            /* 64 0x40 */
1097         EXYNOS5420_GPIO_H01,
1098         EXYNOS5420_GPIO_H02,
1099         EXYNOS5420_GPIO_H03,
1100         EXYNOS5420_GPIO_H04,
1101         EXYNOS5420_GPIO_H05,
1102         EXYNOS5420_GPIO_H06,
1103         EXYNOS5420_GPIO_H07,
1104
1105         /* GPIO PART 2 STARTS*/
1106         EXYNOS5420_GPIO_MAX_PORT_PART_1,/* 72 0x48 */
1107         EXYNOS5420_GPIO_Y70 = EXYNOS5420_GPIO_MAX_PORT_PART_1,
1108         EXYNOS5420_GPIO_Y71,
1109         EXYNOS5420_GPIO_Y72,
1110         EXYNOS5420_GPIO_Y73,
1111         EXYNOS5420_GPIO_Y74,
1112         EXYNOS5420_GPIO_Y75,
1113         EXYNOS5420_GPIO_Y76,
1114         EXYNOS5420_GPIO_Y77,
1115
1116         /* GPIO PART 3 STARTS*/
1117         EXYNOS5420_GPIO_MAX_PORT_PART_2,/* 80 0x50 */
1118         EXYNOS5420_GPIO_X00 = EXYNOS5420_GPIO_MAX_PORT_PART_2,
1119         EXYNOS5420_GPIO_X01,
1120         EXYNOS5420_GPIO_X02,
1121         EXYNOS5420_GPIO_X03,
1122         EXYNOS5420_GPIO_X04,
1123         EXYNOS5420_GPIO_X05,
1124         EXYNOS5420_GPIO_X06,
1125         EXYNOS5420_GPIO_X07,
1126         EXYNOS5420_GPIO_X10,            /* 88 0x58 */
1127         EXYNOS5420_GPIO_X11,
1128         EXYNOS5420_GPIO_X12,
1129         EXYNOS5420_GPIO_X13,
1130         EXYNOS5420_GPIO_X14,
1131         EXYNOS5420_GPIO_X15,
1132         EXYNOS5420_GPIO_X16,
1133         EXYNOS5420_GPIO_X17,
1134         EXYNOS5420_GPIO_X20,            /* 96 0x60 */
1135         EXYNOS5420_GPIO_X21,
1136         EXYNOS5420_GPIO_X22,
1137         EXYNOS5420_GPIO_X23,
1138         EXYNOS5420_GPIO_X24,
1139         EXYNOS5420_GPIO_X25,
1140         EXYNOS5420_GPIO_X26,
1141         EXYNOS5420_GPIO_X27,
1142         EXYNOS5420_GPIO_X30,            /* 104 0x68 */
1143         EXYNOS5420_GPIO_X31,
1144         EXYNOS5420_GPIO_X32,
1145         EXYNOS5420_GPIO_X33,
1146         EXYNOS5420_GPIO_X34,
1147         EXYNOS5420_GPIO_X35,
1148         EXYNOS5420_GPIO_X36,
1149         EXYNOS5420_GPIO_X37,
1150
1151         /* GPIO PART 4 STARTS*/
1152         EXYNOS5420_GPIO_MAX_PORT_PART_3,/* 112 0x70 */
1153         EXYNOS5420_GPIO_C00 = EXYNOS5420_GPIO_MAX_PORT_PART_3,
1154         EXYNOS5420_GPIO_C01,
1155         EXYNOS5420_GPIO_C02,
1156         EXYNOS5420_GPIO_C03,
1157         EXYNOS5420_GPIO_C04,
1158         EXYNOS5420_GPIO_C05,
1159         EXYNOS5420_GPIO_C06,
1160         EXYNOS5420_GPIO_C07,
1161         EXYNOS5420_GPIO_C10,            /* 120 0x78 */
1162         EXYNOS5420_GPIO_C11,
1163         EXYNOS5420_GPIO_C12,
1164         EXYNOS5420_GPIO_C13,
1165         EXYNOS5420_GPIO_C14,
1166         EXYNOS5420_GPIO_C15,
1167         EXYNOS5420_GPIO_C16,
1168         EXYNOS5420_GPIO_C17,
1169         EXYNOS5420_GPIO_C20,            /* 128 0x80 */
1170         EXYNOS5420_GPIO_C21,
1171         EXYNOS5420_GPIO_C22,
1172         EXYNOS5420_GPIO_C23,
1173         EXYNOS5420_GPIO_C24,
1174         EXYNOS5420_GPIO_C25,
1175         EXYNOS5420_GPIO_C26,
1176         EXYNOS5420_GPIO_C27,
1177         EXYNOS5420_GPIO_C30,            /* 136 0x88 */
1178         EXYNOS5420_GPIO_C31,
1179         EXYNOS5420_GPIO_C32,
1180         EXYNOS5420_GPIO_C33,
1181         EXYNOS5420_GPIO_C34,
1182         EXYNOS5420_GPIO_C35,
1183         EXYNOS5420_GPIO_C36,
1184         EXYNOS5420_GPIO_C37,
1185         EXYNOS5420_GPIO_C40,            /* 144 0x90 */
1186         EXYNOS5420_GPIO_C41,
1187         EXYNOS5420_GPIO_C42,
1188         EXYNOS5420_GPIO_C43,
1189         EXYNOS5420_GPIO_C44,
1190         EXYNOS5420_GPIO_C45,
1191         EXYNOS5420_GPIO_C46,
1192         EXYNOS5420_GPIO_C47,
1193         EXYNOS5420_GPIO_D10,            /* 152 0x98 */
1194         EXYNOS5420_GPIO_D11,
1195         EXYNOS5420_GPIO_D12,
1196         EXYNOS5420_GPIO_D13,
1197         EXYNOS5420_GPIO_D14,
1198         EXYNOS5420_GPIO_D15,
1199         EXYNOS5420_GPIO_D16,
1200         EXYNOS5420_GPIO_D17,
1201         EXYNOS5420_GPIO_Y00,            /* 160 0xa0 */
1202         EXYNOS5420_GPIO_Y01,
1203         EXYNOS5420_GPIO_Y02,
1204         EXYNOS5420_GPIO_Y03,
1205         EXYNOS5420_GPIO_Y04,
1206         EXYNOS5420_GPIO_Y05,
1207         EXYNOS5420_GPIO_Y06,
1208         EXYNOS5420_GPIO_Y07,
1209         EXYNOS5420_GPIO_Y10,            /* 168 0xa8 */
1210         EXYNOS5420_GPIO_Y11,
1211         EXYNOS5420_GPIO_Y12,
1212         EXYNOS5420_GPIO_Y13,
1213         EXYNOS5420_GPIO_Y14,
1214         EXYNOS5420_GPIO_Y15,
1215         EXYNOS5420_GPIO_Y16,
1216         EXYNOS5420_GPIO_Y17,
1217         EXYNOS5420_GPIO_Y20,            /* 176 0xb0 */
1218         EXYNOS5420_GPIO_Y21,
1219         EXYNOS5420_GPIO_Y22,
1220         EXYNOS5420_GPIO_Y23,
1221         EXYNOS5420_GPIO_Y24,
1222         EXYNOS5420_GPIO_Y25,
1223         EXYNOS5420_GPIO_Y26,
1224         EXYNOS5420_GPIO_Y27,
1225         EXYNOS5420_GPIO_Y30,            /* 184 0xb8 */
1226         EXYNOS5420_GPIO_Y31,
1227         EXYNOS5420_GPIO_Y32,
1228         EXYNOS5420_GPIO_Y33,
1229         EXYNOS5420_GPIO_Y34,
1230         EXYNOS5420_GPIO_Y35,
1231         EXYNOS5420_GPIO_Y36,
1232         EXYNOS5420_GPIO_Y37,
1233         EXYNOS5420_GPIO_Y40,            /* 192 0xc0 */
1234         EXYNOS5420_GPIO_Y41,
1235         EXYNOS5420_GPIO_Y42,
1236         EXYNOS5420_GPIO_Y43,
1237         EXYNOS5420_GPIO_Y44,
1238         EXYNOS5420_GPIO_Y45,
1239         EXYNOS5420_GPIO_Y46,
1240         EXYNOS5420_GPIO_Y47,
1241         EXYNOS5420_GPIO_Y50,            /* 200 0xc8 */
1242         EXYNOS5420_GPIO_Y51,
1243         EXYNOS5420_GPIO_Y52,
1244         EXYNOS5420_GPIO_Y53,
1245         EXYNOS5420_GPIO_Y54,
1246         EXYNOS5420_GPIO_Y55,
1247         EXYNOS5420_GPIO_Y56,
1248         EXYNOS5420_GPIO_Y57,
1249         EXYNOS5420_GPIO_Y60,            /* 208 0xd0 */
1250         EXYNOS5420_GPIO_Y61,
1251         EXYNOS5420_GPIO_Y62,
1252         EXYNOS5420_GPIO_Y63,
1253         EXYNOS5420_GPIO_Y64,
1254         EXYNOS5420_GPIO_Y65,
1255         EXYNOS5420_GPIO_Y66,
1256         EXYNOS5420_GPIO_Y67,
1257
1258         /* GPIO_PART5_STARTS */
1259         EXYNOS5420_GPIO_MAX_PORT_PART_4,/* 216 0xd8 */
1260         EXYNOS5420_GPIO_E00 = EXYNOS5420_GPIO_MAX_PORT_PART_4,
1261         EXYNOS5420_GPIO_E01,
1262         EXYNOS5420_GPIO_E02,
1263         EXYNOS5420_GPIO_E03,
1264         EXYNOS5420_GPIO_E04,
1265         EXYNOS5420_GPIO_E05,
1266         EXYNOS5420_GPIO_E06,
1267         EXYNOS5420_GPIO_E07,
1268         EXYNOS5420_GPIO_E10,            /* 224 0xe0 */
1269         EXYNOS5420_GPIO_E11,
1270         EXYNOS5420_GPIO_E12,
1271         EXYNOS5420_GPIO_E13,
1272         EXYNOS5420_GPIO_E14,
1273         EXYNOS5420_GPIO_E15,
1274         EXYNOS5420_GPIO_E16,
1275         EXYNOS5420_GPIO_E17,
1276         EXYNOS5420_GPIO_F00,            /* 232 0xe8 */
1277         EXYNOS5420_GPIO_F01,
1278         EXYNOS5420_GPIO_F02,
1279         EXYNOS5420_GPIO_F03,
1280         EXYNOS5420_GPIO_F04,
1281         EXYNOS5420_GPIO_F05,
1282         EXYNOS5420_GPIO_F06,
1283         EXYNOS5420_GPIO_F07,
1284         EXYNOS5420_GPIO_F10,            /* 240 0xf0 */
1285         EXYNOS5420_GPIO_F11,
1286         EXYNOS5420_GPIO_F12,
1287         EXYNOS5420_GPIO_F13,
1288         EXYNOS5420_GPIO_F14,
1289         EXYNOS5420_GPIO_F15,
1290         EXYNOS5420_GPIO_F16,
1291         EXYNOS5420_GPIO_F17,
1292         EXYNOS5420_GPIO_G00,            /* 248 0xf8 */
1293         EXYNOS5420_GPIO_G01,
1294         EXYNOS5420_GPIO_G02,
1295         EXYNOS5420_GPIO_G03,
1296         EXYNOS5420_GPIO_G04,
1297         EXYNOS5420_GPIO_G05,
1298         EXYNOS5420_GPIO_G06,
1299         EXYNOS5420_GPIO_G07,
1300         EXYNOS5420_GPIO_G10,            /* 256 0x100 */
1301         EXYNOS5420_GPIO_G11,
1302         EXYNOS5420_GPIO_G12,
1303         EXYNOS5420_GPIO_G13,
1304         EXYNOS5420_GPIO_G14,
1305         EXYNOS5420_GPIO_G15,
1306         EXYNOS5420_GPIO_G16,
1307         EXYNOS5420_GPIO_G17,
1308         EXYNOS5420_GPIO_G20,            /* 264 0x108 */
1309         EXYNOS5420_GPIO_G21,
1310         EXYNOS5420_GPIO_G22,
1311         EXYNOS5420_GPIO_G23,
1312         EXYNOS5420_GPIO_G24,
1313         EXYNOS5420_GPIO_G25,
1314         EXYNOS5420_GPIO_G26,
1315         EXYNOS5420_GPIO_G27,
1316         EXYNOS5420_GPIO_J40,            /* 272 0x110 */
1317         EXYNOS5420_GPIO_J41,
1318         EXYNOS5420_GPIO_J42,
1319         EXYNOS5420_GPIO_J43,
1320         EXYNOS5420_GPIO_J44,
1321         EXYNOS5420_GPIO_J45,
1322         EXYNOS5420_GPIO_J46,
1323         EXYNOS5420_GPIO_J47,
1324
1325         /* GPIO_PART6_STARTS */
1326         EXYNOS5420_GPIO_MAX_PORT_PART_5,/* 280 0x118 */
1327         EXYNOS5420_GPIO_Z0 = EXYNOS5420_GPIO_MAX_PORT_PART_5,
1328         EXYNOS5420_GPIO_Z1,
1329         EXYNOS5420_GPIO_Z2,
1330         EXYNOS5420_GPIO_Z3,
1331         EXYNOS5420_GPIO_Z4,
1332         EXYNOS5420_GPIO_Z5,
1333         EXYNOS5420_GPIO_Z6,
1334         EXYNOS5420_GPIO_MAX_PORT
1335 };
1336
1337 struct gpio_info {
1338         unsigned int reg_addr;  /* Address of register for this part */
1339         unsigned int max_gpio;  /* Maximum GPIO in this part */
1340 };
1341
1342 #define EXYNOS4_GPIO_NUM_PARTS  3
1343 static struct gpio_info exynos4_gpio_data[EXYNOS4_GPIO_NUM_PARTS] = {
1344         { EXYNOS4_GPIO_PART1_BASE, EXYNOS4_GPIO_MAX_PORT_PART_1 },
1345         { EXYNOS4_GPIO_PART2_BASE, EXYNOS4_GPIO_MAX_PORT_PART_2 },
1346         { EXYNOS4_GPIO_PART3_BASE, EXYNOS4_GPIO_MAX_PORT },
1347 };
1348
1349 #define EXYNOS4X12_GPIO_NUM_PARTS       4
1350 static struct gpio_info exynos4x12_gpio_data[EXYNOS4X12_GPIO_NUM_PARTS] = {
1351         { EXYNOS4X12_GPIO_PART1_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_1 },
1352         { EXYNOS4X12_GPIO_PART2_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_2 },
1353         { EXYNOS4X12_GPIO_PART3_BASE, EXYNOS4X12_GPIO_MAX_PORT_PART_3 },
1354         { EXYNOS4X12_GPIO_PART4_BASE, EXYNOS4X12_GPIO_MAX_PORT },
1355 };
1356
1357 #define EXYNOS5_GPIO_NUM_PARTS  8
1358 static struct gpio_info exynos5_gpio_data[EXYNOS5_GPIO_NUM_PARTS] = {
1359         { EXYNOS5_GPIO_PART1_BASE, EXYNOS5_GPIO_MAX_PORT_PART_1 },
1360         { EXYNOS5_GPIO_PART2_BASE, EXYNOS5_GPIO_MAX_PORT_PART_2 },
1361         { EXYNOS5_GPIO_PART3_BASE, EXYNOS5_GPIO_MAX_PORT_PART_3 },
1362         { EXYNOS5_GPIO_PART4_BASE, EXYNOS5_GPIO_MAX_PORT_PART_4 },
1363         { EXYNOS5_GPIO_PART5_BASE, EXYNOS5_GPIO_MAX_PORT_PART_5 },
1364         { EXYNOS5_GPIO_PART6_BASE, EXYNOS5_GPIO_MAX_PORT_PART_6 },
1365         { EXYNOS5_GPIO_PART7_BASE, EXYNOS5_GPIO_MAX_PORT_PART_7 },
1366         { EXYNOS5_GPIO_PART8_BASE, EXYNOS5_GPIO_MAX_PORT },
1367 };
1368
1369 #define EXYNOS5420_GPIO_NUM_PARTS       6
1370 static struct gpio_info exynos5420_gpio_data[EXYNOS5420_GPIO_NUM_PARTS] = {
1371         { EXYNOS5420_GPIO_PART1_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_1 },
1372         { EXYNOS5420_GPIO_PART2_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_2 },
1373         { EXYNOS5420_GPIO_PART3_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_3 },
1374         { EXYNOS5420_GPIO_PART4_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_4 },
1375         { EXYNOS5420_GPIO_PART5_BASE, EXYNOS5420_GPIO_MAX_PORT_PART_5 },
1376         { EXYNOS5420_GPIO_PART6_BASE, EXYNOS5420_GPIO_MAX_PORT },
1377 };
1378
1379 static inline struct gpio_info *get_gpio_data(void)
1380 {
1381         if (cpu_is_exynos5()) {
1382                 if (proid_is_exynos5420())
1383                         return exynos5420_gpio_data;
1384                 else
1385                         return exynos5_gpio_data;
1386         } else if (cpu_is_exynos4()) {
1387                 if (proid_is_exynos4412())
1388                         return exynos4x12_gpio_data;
1389                 else
1390                         return exynos4_gpio_data;
1391         }
1392
1393         return NULL;
1394 }
1395
1396 static inline unsigned int get_bank_num(void)
1397 {
1398         if (cpu_is_exynos5()) {
1399                 if (proid_is_exynos5420())
1400                         return EXYNOS5420_GPIO_NUM_PARTS;
1401                 else
1402                         return EXYNOS5_GPIO_NUM_PARTS;
1403         } else if (cpu_is_exynos4()) {
1404                 if (proid_is_exynos4412())
1405                         return EXYNOS4X12_GPIO_NUM_PARTS;
1406                 else
1407                         return EXYNOS4_GPIO_NUM_PARTS;
1408         }
1409
1410         return 0;
1411 }
1412
1413 /*
1414  * This structure helps mapping symbolic GPIO names into indices from
1415  * exynos5_gpio_pin/exynos5420_gpio_pin enums.
1416  *
1417  * By convention, symbolic GPIO name is defined as follows:
1418  *
1419  * g[p]<bank><set><bit>, where
1420  *   p is optional
1421  *   <bank> - a single character bank name, as defined by the SOC
1422  *   <set> - a single digit set number
1423  *   <bit> - bit number within the set (in 0..7 range).
1424  *
1425  * <set><bit> essentially form an octal number of the GPIO pin within the bank
1426  * space. On the 5420 architecture some banks' sets do not start not from zero
1427  * ('d' starts from 1 and 'j' starts from 4). To compensate for that and
1428  * maintain flat number space withoout holes, those banks use offsets to be
1429  * deducted from the pin number.
1430  */
1431 struct gpio_name_num_table {
1432         char bank;              /* bank name symbol */
1433         unsigned int bank_size;         /* total number of pins in the bank */
1434         char bank_offset;       /* offset of the first bank's pin */
1435         unsigned int base;      /* index of the first bank's pin in the enum */
1436 };
1437
1438 #define GPIO_ENTRY(name, base, top, offset) { name, top - base, offset, base }
1439 static const struct gpio_name_num_table exynos4_gpio_table[] = {
1440         GPIO_ENTRY('a', EXYNOS4_GPIO_A00, EXYNOS4_GPIO_B0, 0),
1441         GPIO_ENTRY('b', EXYNOS4_GPIO_B0, EXYNOS4_GPIO_C00, 0),
1442         GPIO_ENTRY('c', EXYNOS4_GPIO_C00, EXYNOS4_GPIO_D00, 0),
1443         GPIO_ENTRY('d', EXYNOS4_GPIO_D00, EXYNOS4_GPIO_E00, 0),
1444         GPIO_ENTRY('e', EXYNOS4_GPIO_E00, EXYNOS4_GPIO_F00, 0),
1445         GPIO_ENTRY('f', EXYNOS4_GPIO_F00, EXYNOS4_GPIO_J00, 0),
1446         GPIO_ENTRY('j', EXYNOS4_GPIO_J00, EXYNOS4_GPIO_K00, 0),
1447         GPIO_ENTRY('k', EXYNOS4_GPIO_K00, EXYNOS4_GPIO_L00, 0),
1448         GPIO_ENTRY('l', EXYNOS4_GPIO_L00, EXYNOS4_GPIO_Y00, 0),
1449         GPIO_ENTRY('y', EXYNOS4_GPIO_Y00, EXYNOS4_GPIO_X00, 0),
1450         GPIO_ENTRY('x', EXYNOS4_GPIO_X00, EXYNOS4_GPIO_Z0, 0),
1451         GPIO_ENTRY('z', EXYNOS4_GPIO_Z0, EXYNOS4_GPIO_MAX_PORT, 0),
1452         { 0 }
1453 };
1454
1455 static const struct gpio_name_num_table exynos4x12_gpio_table[] = {
1456         GPIO_ENTRY('a', EXYNOS4X12_GPIO_A00, EXYNOS4X12_GPIO_B0, 0),
1457         GPIO_ENTRY('b', EXYNOS4X12_GPIO_B0, EXYNOS4X12_GPIO_C00, 0),
1458         GPIO_ENTRY('c', EXYNOS4X12_GPIO_C00, EXYNOS4X12_GPIO_D00, 0),
1459         GPIO_ENTRY('d', EXYNOS4X12_GPIO_D00, EXYNOS4X12_GPIO_F00, 0),
1460         GPIO_ENTRY('f', EXYNOS4X12_GPIO_F00, EXYNOS4X12_GPIO_J00, 0),
1461         GPIO_ENTRY('j', EXYNOS4X12_GPIO_J00, EXYNOS4X12_GPIO_K00, 0),
1462         GPIO_ENTRY('k', EXYNOS4X12_GPIO_K00, EXYNOS4X12_GPIO_L00, 0),
1463         GPIO_ENTRY('l', EXYNOS4X12_GPIO_L00, EXYNOS4X12_GPIO_Y00, 0),
1464         GPIO_ENTRY('y', EXYNOS4X12_GPIO_Y00, EXYNOS4X12_GPIO_M00, 0),
1465         GPIO_ENTRY('m', EXYNOS4X12_GPIO_M00, EXYNOS4X12_GPIO_X00, 0),
1466         GPIO_ENTRY('x', EXYNOS4X12_GPIO_X00, EXYNOS4X12_GPIO_Z0, 0),
1467         GPIO_ENTRY('z', EXYNOS4X12_GPIO_Z0, EXYNOS4X12_GPIO_V00, 0),
1468         GPIO_ENTRY('v', EXYNOS4X12_GPIO_V00, EXYNOS4X12_GPIO_MAX_PORT, 0),
1469         { 0 }
1470 };
1471
1472 static const struct gpio_name_num_table exynos5_gpio_table[] = {
1473         GPIO_ENTRY('a', EXYNOS5_GPIO_A00, EXYNOS5_GPIO_B00, 0),
1474         GPIO_ENTRY('b', EXYNOS5_GPIO_B00, EXYNOS5_GPIO_C00, 0),
1475         GPIO_ENTRY('c', EXYNOS5_GPIO_C00, EXYNOS5_GPIO_D00, 0),
1476         GPIO_ENTRY('d', EXYNOS5_GPIO_D00, EXYNOS5_GPIO_Y00, 0),
1477         GPIO_ENTRY('y', EXYNOS5_GPIO_Y00, EXYNOS5_GPIO_C40, 0),
1478         GPIO_ENTRY('x', EXYNOS5_GPIO_X00, EXYNOS5_GPIO_E00, 0),
1479         GPIO_ENTRY('e', EXYNOS5_GPIO_E00, EXYNOS5_GPIO_F00, 0),
1480         GPIO_ENTRY('f', EXYNOS5_GPIO_F00, EXYNOS5_GPIO_G00, 0),
1481         GPIO_ENTRY('g', EXYNOS5_GPIO_G00, EXYNOS5_GPIO_H00, 0),
1482         GPIO_ENTRY('h', EXYNOS5_GPIO_H00, EXYNOS5_GPIO_V00, 0),
1483         GPIO_ENTRY('v', EXYNOS5_GPIO_V00, EXYNOS5_GPIO_Z0, 0),
1484         GPIO_ENTRY('z', EXYNOS5_GPIO_Z0, EXYNOS5_GPIO_MAX_PORT, 0),
1485         { 0 }
1486 };
1487
1488 static const struct gpio_name_num_table exynos5420_gpio_table[] = {
1489         GPIO_ENTRY('a', EXYNOS5420_GPIO_A00, EXYNOS5420_GPIO_B00, 0),
1490         GPIO_ENTRY('b', EXYNOS5420_GPIO_B00, EXYNOS5420_GPIO_H00, 0),
1491         GPIO_ENTRY('h', EXYNOS5420_GPIO_H00, EXYNOS5420_GPIO_Y70, 0),
1492         GPIO_ENTRY('x', EXYNOS5420_GPIO_X00, EXYNOS5420_GPIO_C00, 0),
1493         GPIO_ENTRY('c', EXYNOS5420_GPIO_C00, EXYNOS5420_GPIO_D10, 0),
1494         GPIO_ENTRY('d', EXYNOS5420_GPIO_D10, EXYNOS5420_GPIO_Y00, 010),
1495         GPIO_ENTRY('y', EXYNOS5420_GPIO_Y00, EXYNOS5420_GPIO_E00, 0),
1496         GPIO_ENTRY('e', EXYNOS5420_GPIO_E00, EXYNOS5420_GPIO_F00, 0),
1497         GPIO_ENTRY('f', EXYNOS5420_GPIO_F00, EXYNOS5420_GPIO_G00, 0),
1498         GPIO_ENTRY('g', EXYNOS5420_GPIO_G00, EXYNOS5420_GPIO_J40, 0),
1499         GPIO_ENTRY('j', EXYNOS5420_GPIO_J40, EXYNOS5420_GPIO_Z0, 040),
1500         GPIO_ENTRY('z', EXYNOS5420_GPIO_Z0, EXYNOS5420_GPIO_MAX_PORT, 0),
1501         { 0 }
1502 };
1503
1504 void gpio_cfg_pin(int gpio, int cfg);
1505 void gpio_set_pull(int gpio, int mode);
1506 void gpio_set_drv(int gpio, int mode);
1507 void gpio_set_rate(int gpio, int mode);
1508 int s5p_gpio_get_pin(unsigned gpio);
1509 #endif
1510
1511 /* Pin configurations */
1512 #define S5P_GPIO_INPUT  0x0
1513 #define S5P_GPIO_OUTPUT 0x1
1514 #define S5P_GPIO_IRQ    0xf
1515 #define S5P_GPIO_FUNC(x)        (x)
1516
1517 /* Pull mode */
1518 #define S5P_GPIO_PULL_NONE      0x0
1519 #define S5P_GPIO_PULL_DOWN      0x1
1520 #define S5P_GPIO_PULL_UP        0x3
1521
1522 /* Drive Strength level */
1523 #define S5P_GPIO_DRV_1X 0x0
1524 #define S5P_GPIO_DRV_3X 0x1
1525 #define S5P_GPIO_DRV_2X 0x2
1526 #define S5P_GPIO_DRV_4X 0x3
1527 #define S5P_GPIO_DRV_FAST       0x0
1528 #define S5P_GPIO_DRV_SLOW       0x1
1529 #endif