1 /*
2  * Copyright (c) 2010-2012, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms and conditions of the GNU General Public License,
6  * version 2, as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11  * more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef _TEGRA30_GPIO_H_
18 #define _TEGRA30_GPIO_H_
19 
20 /*
21  * The Tegra 3x GPIO controller has 246 GPIOS in 8 banks of 4 ports,
22  * each with 8 GPIOs.
23  */
24 #define TEGRA_GPIO_PORTS	4	/* number of ports per bank */
25 #define TEGRA_GPIO_BANKS	8	/* number of banks */
26 
27 #include <asm/arch-tegra/gpio.h>
28 
29 /* GPIO Controller registers for a single bank */
30 struct gpio_ctlr_bank {
31 	uint gpio_config[TEGRA_GPIO_PORTS];
32 	uint gpio_dir_out[TEGRA_GPIO_PORTS];
33 	uint gpio_out[TEGRA_GPIO_PORTS];
34 	uint gpio_in[TEGRA_GPIO_PORTS];
35 	uint gpio_int_status[TEGRA_GPIO_PORTS];
36 	uint gpio_int_enable[TEGRA_GPIO_PORTS];
37 	uint gpio_int_level[TEGRA_GPIO_PORTS];
38 	uint gpio_int_clear[TEGRA_GPIO_PORTS];
39 	uint gpio_masked_config[TEGRA_GPIO_PORTS];
40 	uint gpio_masked_dir_out[TEGRA_GPIO_PORTS];
41 	uint gpio_masked_out[TEGRA_GPIO_PORTS];
42 	uint gpio_masked_in[TEGRA_GPIO_PORTS];
43 	uint gpio_masked_int_status[TEGRA_GPIO_PORTS];
44 	uint gpio_masked_int_enable[TEGRA_GPIO_PORTS];
45 	uint gpio_masked_int_level[TEGRA_GPIO_PORTS];
46 	uint gpio_masked_int_clear[TEGRA_GPIO_PORTS];
47 };
48 
49 struct gpio_ctlr {
50 	struct gpio_ctlr_bank gpio_bank[TEGRA_GPIO_BANKS];
51 };
52 
53 enum gpio_pin {
54 	GPIO_PA0 = 0,	/* pin 0 */
55 	GPIO_PA1,
56 	GPIO_PA2,
57 	GPIO_PA3,
58 	GPIO_PA4,
59 	GPIO_PA5,
60 	GPIO_PA6,
61 	GPIO_PA7,
62 	GPIO_PB0,	/* pin 8 */
63 	GPIO_PB1,
64 	GPIO_PB2,
65 	GPIO_PB3,
66 	GPIO_PB4,
67 	GPIO_PB5,
68 	GPIO_PB6,
69 	GPIO_PB7,
70 	GPIO_PC0,	/* pin 16 */
71 	GPIO_PC1,
72 	GPIO_PC2,
73 	GPIO_PC3,
74 	GPIO_PC4,
75 	GPIO_PC5,
76 	GPIO_PC6,
77 	GPIO_PC7,
78 	GPIO_PD0,	/* pin 24 */
79 	GPIO_PD1,
80 	GPIO_PD2,
81 	GPIO_PD3,
82 	GPIO_PD4,
83 	GPIO_PD5,
84 	GPIO_PD6,
85 	GPIO_PD7,
86 	GPIO_PE0,	/* pin 32 */
87 	GPIO_PE1,
88 	GPIO_PE2,
89 	GPIO_PE3,
90 	GPIO_PE4,
91 	GPIO_PE5,
92 	GPIO_PE6,
93 	GPIO_PE7,
94 	GPIO_PF0,	/* pin 40 */
95 	GPIO_PF1,
96 	GPIO_PF2,
97 	GPIO_PF3,
98 	GPIO_PF4,
99 	GPIO_PF5,
100 	GPIO_PF6,
101 	GPIO_PF7,
102 	GPIO_PG0,	/* pin 48 */
103 	GPIO_PG1,
104 	GPIO_PG2,
105 	GPIO_PG3,
106 	GPIO_PG4,
107 	GPIO_PG5,
108 	GPIO_PG6,
109 	GPIO_PG7,
110 	GPIO_PH0,	/* pin 56 */
111 	GPIO_PH1,
112 	GPIO_PH2,
113 	GPIO_PH3,
114 	GPIO_PH4,
115 	GPIO_PH5,
116 	GPIO_PH6,
117 	GPIO_PH7,
118 	GPIO_PI0,	/* pin 64 */
119 	GPIO_PI1,
120 	GPIO_PI2,
121 	GPIO_PI3,
122 	GPIO_PI4,
123 	GPIO_PI5,
124 	GPIO_PI6,
125 	GPIO_PI7,
126 	GPIO_PJ0,	/* pin 72 */
127 	GPIO_PJ1,
128 	GPIO_PJ2,
129 	GPIO_PJ3,
130 	GPIO_PJ4,
131 	GPIO_PJ5,
132 	GPIO_PJ6,
133 	GPIO_PJ7,
134 	GPIO_PK0,	/* pin 80 */
135 	GPIO_PK1,
136 	GPIO_PK2,
137 	GPIO_PK3,
138 	GPIO_PK4,
139 	GPIO_PK5,
140 	GPIO_PK6,
141 	GPIO_PK7,
142 	GPIO_PL0,	/* pin 88 */
143 	GPIO_PL1,
144 	GPIO_PL2,
145 	GPIO_PL3,
146 	GPIO_PL4,
147 	GPIO_PL5,
148 	GPIO_PL6,
149 	GPIO_PL7,
150 	GPIO_PM0,	/* pin 96 */
151 	GPIO_PM1,
152 	GPIO_PM2,
153 	GPIO_PM3,
154 	GPIO_PM4,
155 	GPIO_PM5,
156 	GPIO_PM6,
157 	GPIO_PM7,
158 	GPIO_PN0,	/* pin 104 */
159 	GPIO_PN1,
160 	GPIO_PN2,
161 	GPIO_PN3,
162 	GPIO_PN4,
163 	GPIO_PN5,
164 	GPIO_PN6,
165 	GPIO_PN7,
166 	GPIO_PO0,	/* pin 112 */
167 	GPIO_PO1,
168 	GPIO_PO2,
169 	GPIO_PO3,
170 	GPIO_PO4,
171 	GPIO_PO5,
172 	GPIO_PO6,
173 	GPIO_PO7,
174 	GPIO_PP0,	/* pin 120 */
175 	GPIO_PP1,
176 	GPIO_PP2,
177 	GPIO_PP3,
178 	GPIO_PP4,
179 	GPIO_PP5,
180 	GPIO_PP6,
181 	GPIO_PP7,
182 	GPIO_PQ0,	/* pin 128 */
183 	GPIO_PQ1,
184 	GPIO_PQ2,
185 	GPIO_PQ3,
186 	GPIO_PQ4,
187 	GPIO_PQ5,
188 	GPIO_PQ6,
189 	GPIO_PQ7,
190 	GPIO_PR0,	/* pin 136 */
191 	GPIO_PR1,
192 	GPIO_PR2,
193 	GPIO_PR3,
194 	GPIO_PR4,
195 	GPIO_PR5,
196 	GPIO_PR6,
197 	GPIO_PR7,
198 	GPIO_PS0,	/* pin 144 */
199 	GPIO_PS1,
200 	GPIO_PS2,
201 	GPIO_PS3,
202 	GPIO_PS4,
203 	GPIO_PS5,
204 	GPIO_PS6,
205 	GPIO_PS7,
206 	GPIO_PT0,	/* pin 152 */
207 	GPIO_PT1,
208 	GPIO_PT2,
209 	GPIO_PT3,
210 	GPIO_PT4,
211 	GPIO_PT5,
212 	GPIO_PT6,
213 	GPIO_PT7,
214 	GPIO_PU0,	/* pin 160 */
215 	GPIO_PU1,
216 	GPIO_PU2,
217 	GPIO_PU3,
218 	GPIO_PU4,
219 	GPIO_PU5,
220 	GPIO_PU6,
221 	GPIO_PU7,
222 	GPIO_PV0,	/* pin 168 */
223 	GPIO_PV1,
224 	GPIO_PV2,
225 	GPIO_PV3,
226 	GPIO_PV4,
227 	GPIO_PV5,
228 	GPIO_PV6,
229 	GPIO_PV7,
230 	GPIO_PW0,	/* pin 176 */
231 	GPIO_PW1,
232 	GPIO_PW2,
233 	GPIO_PW3,
234 	GPIO_PW4,
235 	GPIO_PW5,
236 	GPIO_PW6,
237 	GPIO_PW7,
238 	GPIO_PX0,	/* pin 184 */
239 	GPIO_PX1,
240 	GPIO_PX2,
241 	GPIO_PX3,
242 	GPIO_PX4,
243 	GPIO_PX5,
244 	GPIO_PX6,
245 	GPIO_PX7,
246 	GPIO_PY0,	/* pin 192 */
247 	GPIO_PY1,
248 	GPIO_PY2,
249 	GPIO_PY3,
250 	GPIO_PY4,
251 	GPIO_PY5,
252 	GPIO_PY6,
253 	GPIO_PY7,
254 	GPIO_PZ0,	/* pin 200 */
255 	GPIO_PZ1,
256 	GPIO_PZ2,
257 	GPIO_PZ3,
258 	GPIO_PZ4,
259 	GPIO_PZ5,
260 	GPIO_PZ6,
261 	GPIO_PZ7,
262 	GPIO_PAA0,	/* pin 208 */
263 	GPIO_PAA1,
264 	GPIO_PAA2,
265 	GPIO_PAA3,
266 	GPIO_PAA4,
267 	GPIO_PAA5,
268 	GPIO_PAA6,
269 	GPIO_PAA7,
270 	GPIO_PBB0,	/* pin 216 */
271 	GPIO_PBB1,
272 	GPIO_PBB2,
273 	GPIO_PBB3,
274 	GPIO_PBB4,
275 	GPIO_PBB5,
276 	GPIO_PBB6,
277 	GPIO_PBB7,
278 	GPIO_PCC0,	/* pin 224 */
279 	GPIO_PCC1,
280 	GPIO_PCC2,
281 	GPIO_PCC3,
282 	GPIO_PCC4,
283 	GPIO_PCC5,
284 	GPIO_PCC6,
285 	GPIO_PCC7,
286 	GPIO_PDD0,	/* pin 232 */
287 	GPIO_PDD1,
288 	GPIO_PDD2,
289 	GPIO_PDD3,
290 	GPIO_PDD4,
291 	GPIO_PDD5,
292 	GPIO_PDD6,
293 	GPIO_PDD7,
294 	GPIO_PEE0,	/* pin 240 */
295 	GPIO_PEE1,
296 	GPIO_PEE2,
297 	GPIO_PEE3,
298 	GPIO_PEE4,
299 	GPIO_PEE5,
300 	GPIO_PEE6,
301 	GPIO_PEE7,	/* pin 247 */
302 };
303 
304 #endif	/* _TEGRA30_GPIO_H_ */
305