Merge branch 'next' of git://github.com/kernelslacker/cpufreq
[pandora-kernel.git] / arch / arm / mach-u300 / include / mach / gpio-u300.h
1 /*
2  * Copyright (C) 2007-2011 ST-Ericsson AB
3  * License terms: GNU General Public License (GPL) version 2
4  * GPIO block resgister definitions and inline macros for
5  * U300 GPIO COH 901 335 or COH 901 571/3
6  * Author: Linus Walleij <linus.walleij@stericsson.com>
7  */
8
9 #ifndef __MACH_U300_GPIO_U300_H
10 #define __MACH_U300_GPIO_U300_H
11
12 /*
13  * Individual pin assignments for the B26/S26. Notice that the
14  * actual usage of these pins depends on the PAD MUX settings, that
15  * is why the same number can potentially appear several times.
16  * In the reference design each pin is only used for one purpose.
17  * These were determined by inspecting the B26/S26 schematic:
18  * 2/1911-ROA 128 1603
19  */
20 #ifdef CONFIG_MACH_U300_BS2X
21 #define U300_GPIO_PIN_UART_RX           0
22 #define U300_GPIO_PIN_UART_TX           1
23 #define U300_GPIO_PIN_GPIO02            2  /* Unrouted */
24 #define U300_GPIO_PIN_GPIO03            3  /* Unrouted */
25 #define U300_GPIO_PIN_CAM_SLEEP         4
26 #define U300_GPIO_PIN_CAM_REG_EN        5
27 #define U300_GPIO_PIN_GPIO06            6  /* Unrouted */
28 #define U300_GPIO_PIN_GPIO07            7  /* Unrouted */
29
30 #define U300_GPIO_PIN_GPIO08            8  /* Service point SP2321 */
31 #define U300_GPIO_PIN_GPIO09            9  /* Service point SP2322 */
32 #define U300_GPIO_PIN_PHFSENSE          10 /* Headphone jack sensing */
33 #define U300_GPIO_PIN_MMC_CLKRET        11 /* Clock return from MMC/SD card */
34 #define U300_GPIO_PIN_MMC_CD            12 /* MMC Card insertion detection */
35 #define U300_GPIO_PIN_FLIPSENSE         13 /* Mechanical flip sensing */
36 #define U300_GPIO_PIN_GPIO14            14 /* DSP JTAG Port RTCK */
37 #define U300_GPIO_PIN_GPIO15            15 /* Unrouted */
38
39 #define U300_GPIO_PIN_GPIO16            16 /* Unrouted */
40 #define U300_GPIO_PIN_GPIO17            17 /* Unrouted */
41 #define U300_GPIO_PIN_GPIO18            18 /* Unrouted */
42 #define U300_GPIO_PIN_GPIO19            19 /* Unrouted */
43 #define U300_GPIO_PIN_GPIO20            20 /* Unrouted */
44 #define U300_GPIO_PIN_GPIO21            21 /* Unrouted */
45 #define U300_GPIO_PIN_GPIO22            22 /* Unrouted */
46 #define U300_GPIO_PIN_GPIO23            23 /* Unrouted */
47 #endif
48
49 /*
50  * Individual pin assignments for the B330/S330 and B365/S365.
51  * Notice that the actual usage of these pins depends on the
52  * PAD MUX settings, that is why the same number can potentially
53  * appear several times. In the reference design each pin is only
54  * used for one purpose. These were determined by inspecting the
55  * S365 schematic.
56  */
57 #if defined(CONFIG_MACH_U300_BS330) || defined(CONFIG_MACH_U300_BS365) || \
58     defined(CONFIG_MACH_U300_BS335)
59 #define U300_GPIO_PIN_UART_RX           0
60 #define U300_GPIO_PIN_UART_TX           1
61 #define U300_GPIO_PIN_UART_CTS          2
62 #define U300_GPIO_PIN_UART_RTS          3
63 #define U300_GPIO_PIN_CAM_MAIN_STANDBY  4 /* Camera MAIN standby */
64 #define U300_GPIO_PIN_GPIO05            5 /* Unrouted */
65 #define U300_GPIO_PIN_MS_CD             6 /* Memory Stick Card insertion */
66 #define U300_GPIO_PIN_GPIO07            7 /* Test point TP2430 */
67
68 #define U300_GPIO_PIN_GPIO08            8 /* Test point TP2437 */
69 #define U300_GPIO_PIN_GPIO09            9 /* Test point TP2431 */
70 #define U300_GPIO_PIN_GPIO10            10 /* Test point TP2432 */
71 #define U300_GPIO_PIN_MMC_CLKRET        11 /* Clock return from MMC/SD card */
72 #define U300_GPIO_PIN_MMC_CD            12 /* MMC Card insertion detection */
73 #define U300_GPIO_PIN_CAM_SUB_STANDBY   13 /* Camera SUB standby */
74 #define U300_GPIO_PIN_GPIO14            14 /* Test point TP2436 */
75 #define U300_GPIO_PIN_GPIO15            15 /* Unrouted */
76
77 #define U300_GPIO_PIN_GPIO16            16 /* Test point TP2438 */
78 #define U300_GPIO_PIN_PHFSENSE          17 /* Headphone jack sensing */
79 #define U300_GPIO_PIN_GPIO18            18 /* Test point TP2439 */
80 #define U300_GPIO_PIN_GPIO19            19 /* Routed somewhere */
81 #define U300_GPIO_PIN_GPIO20            20 /* Unrouted */
82 #define U300_GPIO_PIN_GPIO21            21 /* Unrouted */
83 #define U300_GPIO_PIN_GPIO22            22 /* Unrouted */
84 #define U300_GPIO_PIN_GPIO23            23 /* Unrouted */
85
86 #define U300_GPIO_PIN_GPIO24            24 /* Unrouted */
87 #define U300_GPIO_PIN_GPIO25            25 /* Unrouted */
88 #define U300_GPIO_PIN_GPIO26            26 /* Unrouted */
89 #define U300_GPIO_PIN_GPIO27            27 /* Unrouted */
90 #define U300_GPIO_PIN_GPIO28            28 /* Unrouted */
91 #define U300_GPIO_PIN_GPIO29            29 /* Unrouted */
92 #define U300_GPIO_PIN_GPIO30            30 /* Unrouted */
93 #define U300_GPIO_PIN_GPIO31            31 /* Unrouted */
94
95 #define U300_GPIO_PIN_GPIO32            32 /* Unrouted */
96 #define U300_GPIO_PIN_GPIO33            33 /* Unrouted */
97 #define U300_GPIO_PIN_GPIO34            34 /* Unrouted */
98 #define U300_GPIO_PIN_GPIO35            35 /* Unrouted */
99 #define U300_GPIO_PIN_GPIO36            36 /* Unrouted */
100 #define U300_GPIO_PIN_GPIO37            37 /* Unrouted */
101 #define U300_GPIO_PIN_GPIO38            38 /* Unrouted */
102 #define U300_GPIO_PIN_GPIO39            39 /* Unrouted */
103
104 #ifdef CONFIG_MACH_U300_BS335
105
106 #define U300_GPIO_PIN_GPIO40            40 /* Unrouted */
107 #define U300_GPIO_PIN_GPIO41            41 /* Unrouted */
108 #define U300_GPIO_PIN_GPIO42            42 /* Unrouted */
109 #define U300_GPIO_PIN_GPIO43            43 /* Unrouted */
110 #define U300_GPIO_PIN_GPIO44            44 /* Unrouted */
111 #define U300_GPIO_PIN_GPIO45            45 /* Unrouted */
112 #define U300_GPIO_PIN_GPIO46            46 /* Unrouted */
113 #define U300_GPIO_PIN_GPIO47            47 /* Unrouted */
114
115 #define U300_GPIO_PIN_GPIO48            48 /* Unrouted */
116 #define U300_GPIO_PIN_GPIO49            49 /* Unrouted */
117 #define U300_GPIO_PIN_GPIO50            50 /* Unrouted */
118 #define U300_GPIO_PIN_GPIO51            51 /* Unrouted */
119 #define U300_GPIO_PIN_GPIO52            52 /* Unrouted */
120 #define U300_GPIO_PIN_GPIO53            53 /* Unrouted */
121 #define U300_GPIO_PIN_GPIO54            54 /* Unrouted */
122 #define U300_GPIO_PIN_GPIO55            55 /* Unrouted */
123 #endif
124
125 #endif
126
127 /**
128  * enum u300_gpio_variant - the type of U300 GPIO employed
129  */
130 enum u300_gpio_variant {
131         U300_GPIO_COH901335,
132         U300_GPIO_COH901571_3_BS335,
133         U300_GPIO_COH901571_3_BS365,
134 };
135
136 /**
137  * struct u300_gpio_platform - U300 GPIO platform data
138  * @variant: IP block variant
139  * @ports: number of GPIO block ports
140  * @gpio_base: first GPIO number for this block (use a free range)
141  * @gpio_irq_base: first GPIO IRQ number for this block (use a free range)
142  */
143 struct u300_gpio_platform {
144         enum u300_gpio_variant variant;
145         u8 ports;
146         int gpio_base;
147         int gpio_irq_base;
148 };
149
150 #endif /* __MACH_U300_GPIO_U300_H */