xref: /openbmc/u-boot/arch/arm/include/asm/arch-tegra20/gpio.h (revision 150c24936b70ce36e11069038ba8e955704cab3a)
100a2749dSAllen Martin /*
200a2749dSAllen Martin  * Copyright (c) 2011, Google Inc. All rights reserved.
300a2749dSAllen Martin  * See file CREDITS for list of people who contributed to this
400a2749dSAllen Martin  * project.
500a2749dSAllen Martin  * Portions Copyright 2011-2012 NVIDIA Corporation
600a2749dSAllen Martin  *
700a2749dSAllen Martin  * This program is free software; you can redistribute it and/or
800a2749dSAllen Martin  * modify it under the terms of the GNU General Public License as
900a2749dSAllen Martin  * published by the Free Software Foundation; either version 2 of
1000a2749dSAllen Martin  * the License, or (at your option) any later version.
1100a2749dSAllen Martin  *
1200a2749dSAllen Martin  * This program is distributed in the hope that it will be useful,
1300a2749dSAllen Martin  * but WITHOUT ANY WARRANTY; without even the implied warranty of
1400a2749dSAllen Martin  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1500a2749dSAllen Martin  * GNU General Public License for more details.
1600a2749dSAllen Martin  *
1700a2749dSAllen Martin  * You should have received a copy of the GNU General Public License
1800a2749dSAllen Martin  * along with this program; if not, write to the Free Software
1900a2749dSAllen Martin  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2000a2749dSAllen Martin  * MA 02111-1307 USA
2100a2749dSAllen Martin  */
2200a2749dSAllen Martin 
23*150c2493STom Warren #ifndef _TEGRA20_GPIO_H_
24*150c2493STom Warren #define _TEGRA20_GPIO_H_
2500a2749dSAllen Martin 
2600a2749dSAllen Martin /*
2700a2749dSAllen Martin  * The Tegra 2x GPIO controller has 224 GPIOs arranged in 7 banks of 4 ports,
2800a2749dSAllen Martin  * each with 8 GPIOs.
2900a2749dSAllen Martin  */
3000a2749dSAllen Martin #define TEGRA_GPIO_PORTS	4	/* number of ports per bank */
3100a2749dSAllen Martin #define TEGRA_GPIO_BANKS	7	/* number of banks */
32*150c2493STom Warren 
33*150c2493STom Warren #include <asm/arch-tegra/gpio.h>
3400a2749dSAllen Martin 
3500a2749dSAllen Martin /* GPIO Controller registers for a single bank */
3600a2749dSAllen Martin struct gpio_ctlr_bank {
3700a2749dSAllen Martin 	uint gpio_config[TEGRA_GPIO_PORTS];
3800a2749dSAllen Martin 	uint gpio_dir_out[TEGRA_GPIO_PORTS];
3900a2749dSAllen Martin 	uint gpio_out[TEGRA_GPIO_PORTS];
4000a2749dSAllen Martin 	uint gpio_in[TEGRA_GPIO_PORTS];
4100a2749dSAllen Martin 	uint gpio_int_status[TEGRA_GPIO_PORTS];
4200a2749dSAllen Martin 	uint gpio_int_enable[TEGRA_GPIO_PORTS];
4300a2749dSAllen Martin 	uint gpio_int_level[TEGRA_GPIO_PORTS];
4400a2749dSAllen Martin 	uint gpio_int_clear[TEGRA_GPIO_PORTS];
4500a2749dSAllen Martin };
4600a2749dSAllen Martin 
4700a2749dSAllen Martin struct gpio_ctlr {
4800a2749dSAllen Martin 	struct gpio_ctlr_bank gpio_bank[TEGRA_GPIO_BANKS];
4900a2749dSAllen Martin };
5000a2749dSAllen Martin 
5100a2749dSAllen Martin enum gpio_pin {
5200a2749dSAllen Martin 	GPIO_PA0 = 0,	/* pin 0 */
5300a2749dSAllen Martin 	GPIO_PA1,
5400a2749dSAllen Martin 	GPIO_PA2,
5500a2749dSAllen Martin 	GPIO_PA3,
5600a2749dSAllen Martin 	GPIO_PA4,
5700a2749dSAllen Martin 	GPIO_PA5,
5800a2749dSAllen Martin 	GPIO_PA6,
5900a2749dSAllen Martin 	GPIO_PA7,
6000a2749dSAllen Martin 	GPIO_PB0,	/* pin 8 */
6100a2749dSAllen Martin 	GPIO_PB1,
6200a2749dSAllen Martin 	GPIO_PB2,
6300a2749dSAllen Martin 	GPIO_PB3,
6400a2749dSAllen Martin 	GPIO_PB4,
6500a2749dSAllen Martin 	GPIO_PB5,
6600a2749dSAllen Martin 	GPIO_PB6,
6700a2749dSAllen Martin 	GPIO_PB7,
6800a2749dSAllen Martin 	GPIO_PC0,	/* pin 16 */
6900a2749dSAllen Martin 	GPIO_PC1,
7000a2749dSAllen Martin 	GPIO_PC2,
7100a2749dSAllen Martin 	GPIO_PC3,
7200a2749dSAllen Martin 	GPIO_PC4,
7300a2749dSAllen Martin 	GPIO_PC5,
7400a2749dSAllen Martin 	GPIO_PC6,
7500a2749dSAllen Martin 	GPIO_PC7,
7600a2749dSAllen Martin 	GPIO_PD0,	/* pin 24 */
7700a2749dSAllen Martin 	GPIO_PD1,
7800a2749dSAllen Martin 	GPIO_PD2,
7900a2749dSAllen Martin 	GPIO_PD3,
8000a2749dSAllen Martin 	GPIO_PD4,
8100a2749dSAllen Martin 	GPIO_PD5,
8200a2749dSAllen Martin 	GPIO_PD6,
8300a2749dSAllen Martin 	GPIO_PD7,
8400a2749dSAllen Martin 	GPIO_PE0,	/* pin 32 */
8500a2749dSAllen Martin 	GPIO_PE1,
8600a2749dSAllen Martin 	GPIO_PE2,
8700a2749dSAllen Martin 	GPIO_PE3,
8800a2749dSAllen Martin 	GPIO_PE4,
8900a2749dSAllen Martin 	GPIO_PE5,
9000a2749dSAllen Martin 	GPIO_PE6,
9100a2749dSAllen Martin 	GPIO_PE7,
9200a2749dSAllen Martin 	GPIO_PF0,	/* pin 40 */
9300a2749dSAllen Martin 	GPIO_PF1,
9400a2749dSAllen Martin 	GPIO_PF2,
9500a2749dSAllen Martin 	GPIO_PF3,
9600a2749dSAllen Martin 	GPIO_PF4,
9700a2749dSAllen Martin 	GPIO_PF5,
9800a2749dSAllen Martin 	GPIO_PF6,
9900a2749dSAllen Martin 	GPIO_PF7,
10000a2749dSAllen Martin 	GPIO_PG0,	/* pin 48 */
10100a2749dSAllen Martin 	GPIO_PG1,
10200a2749dSAllen Martin 	GPIO_PG2,
10300a2749dSAllen Martin 	GPIO_PG3,
10400a2749dSAllen Martin 	GPIO_PG4,
10500a2749dSAllen Martin 	GPIO_PG5,
10600a2749dSAllen Martin 	GPIO_PG6,
10700a2749dSAllen Martin 	GPIO_PG7,
10800a2749dSAllen Martin 	GPIO_PH0,	/* pin 56 */
10900a2749dSAllen Martin 	GPIO_PH1,
11000a2749dSAllen Martin 	GPIO_PH2,
11100a2749dSAllen Martin 	GPIO_PH3,
11200a2749dSAllen Martin 	GPIO_PH4,
11300a2749dSAllen Martin 	GPIO_PH5,
11400a2749dSAllen Martin 	GPIO_PH6,
11500a2749dSAllen Martin 	GPIO_PH7,
11600a2749dSAllen Martin 	GPIO_PI0,	/* pin 64 */
11700a2749dSAllen Martin 	GPIO_PI1,
11800a2749dSAllen Martin 	GPIO_PI2,
11900a2749dSAllen Martin 	GPIO_PI3,
12000a2749dSAllen Martin 	GPIO_PI4,
12100a2749dSAllen Martin 	GPIO_PI5,
12200a2749dSAllen Martin 	GPIO_PI6,
12300a2749dSAllen Martin 	GPIO_PI7,
12400a2749dSAllen Martin 	GPIO_PJ0,	/* pin 72 */
12500a2749dSAllen Martin 	GPIO_PJ1,
12600a2749dSAllen Martin 	GPIO_PJ2,
12700a2749dSAllen Martin 	GPIO_PJ3,
12800a2749dSAllen Martin 	GPIO_PJ4,
12900a2749dSAllen Martin 	GPIO_PJ5,
13000a2749dSAllen Martin 	GPIO_PJ6,
13100a2749dSAllen Martin 	GPIO_PJ7,
13200a2749dSAllen Martin 	GPIO_PK0,	/* pin 80 */
13300a2749dSAllen Martin 	GPIO_PK1,
13400a2749dSAllen Martin 	GPIO_PK2,
13500a2749dSAllen Martin 	GPIO_PK3,
13600a2749dSAllen Martin 	GPIO_PK4,
13700a2749dSAllen Martin 	GPIO_PK5,
13800a2749dSAllen Martin 	GPIO_PK6,
13900a2749dSAllen Martin 	GPIO_PK7,
14000a2749dSAllen Martin 	GPIO_PL0,	/* pin 88 */
14100a2749dSAllen Martin 	GPIO_PL1,
14200a2749dSAllen Martin 	GPIO_PL2,
14300a2749dSAllen Martin 	GPIO_PL3,
14400a2749dSAllen Martin 	GPIO_PL4,
14500a2749dSAllen Martin 	GPIO_PL5,
14600a2749dSAllen Martin 	GPIO_PL6,
14700a2749dSAllen Martin 	GPIO_PL7,
14800a2749dSAllen Martin 	GPIO_PM0,	/* pin 96 */
14900a2749dSAllen Martin 	GPIO_PM1,
15000a2749dSAllen Martin 	GPIO_PM2,
15100a2749dSAllen Martin 	GPIO_PM3,
15200a2749dSAllen Martin 	GPIO_PM4,
15300a2749dSAllen Martin 	GPIO_PM5,
15400a2749dSAllen Martin 	GPIO_PM6,
15500a2749dSAllen Martin 	GPIO_PM7,
15600a2749dSAllen Martin 	GPIO_PN0,	/* pin 104 */
15700a2749dSAllen Martin 	GPIO_PN1,
15800a2749dSAllen Martin 	GPIO_PN2,
15900a2749dSAllen Martin 	GPIO_PN3,
16000a2749dSAllen Martin 	GPIO_PN4,
16100a2749dSAllen Martin 	GPIO_PN5,
16200a2749dSAllen Martin 	GPIO_PN6,
16300a2749dSAllen Martin 	GPIO_PN7,
16400a2749dSAllen Martin 	GPIO_PO0,	/* pin 112 */
16500a2749dSAllen Martin 	GPIO_PO1,
16600a2749dSAllen Martin 	GPIO_PO2,
16700a2749dSAllen Martin 	GPIO_PO3,
16800a2749dSAllen Martin 	GPIO_PO4,
16900a2749dSAllen Martin 	GPIO_PO5,
17000a2749dSAllen Martin 	GPIO_PO6,
17100a2749dSAllen Martin 	GPIO_PO7,
17200a2749dSAllen Martin 	GPIO_PP0,	/* pin 120 */
17300a2749dSAllen Martin 	GPIO_PP1,
17400a2749dSAllen Martin 	GPIO_PP2,
17500a2749dSAllen Martin 	GPIO_PP3,
17600a2749dSAllen Martin 	GPIO_PP4,
17700a2749dSAllen Martin 	GPIO_PP5,
17800a2749dSAllen Martin 	GPIO_PP6,
17900a2749dSAllen Martin 	GPIO_PP7,
18000a2749dSAllen Martin 	GPIO_PQ0,	/* pin 128 */
18100a2749dSAllen Martin 	GPIO_PQ1,
18200a2749dSAllen Martin 	GPIO_PQ2,
18300a2749dSAllen Martin 	GPIO_PQ3,
18400a2749dSAllen Martin 	GPIO_PQ4,
18500a2749dSAllen Martin 	GPIO_PQ5,
18600a2749dSAllen Martin 	GPIO_PQ6,
18700a2749dSAllen Martin 	GPIO_PQ7,
18800a2749dSAllen Martin 	GPIO_PR0,	/* pin 136 */
18900a2749dSAllen Martin 	GPIO_PR1,
19000a2749dSAllen Martin 	GPIO_PR2,
19100a2749dSAllen Martin 	GPIO_PR3,
19200a2749dSAllen Martin 	GPIO_PR4,
19300a2749dSAllen Martin 	GPIO_PR5,
19400a2749dSAllen Martin 	GPIO_PR6,
19500a2749dSAllen Martin 	GPIO_PR7,
19600a2749dSAllen Martin 	GPIO_PS0,	/* pin 144 */
19700a2749dSAllen Martin 	GPIO_PS1,
19800a2749dSAllen Martin 	GPIO_PS2,
19900a2749dSAllen Martin 	GPIO_PS3,
20000a2749dSAllen Martin 	GPIO_PS4,
20100a2749dSAllen Martin 	GPIO_PS5,
20200a2749dSAllen Martin 	GPIO_PS6,
20300a2749dSAllen Martin 	GPIO_PS7,
20400a2749dSAllen Martin 	GPIO_PT0,	/* pin 152 */
20500a2749dSAllen Martin 	GPIO_PT1,
20600a2749dSAllen Martin 	GPIO_PT2,
20700a2749dSAllen Martin 	GPIO_PT3,
20800a2749dSAllen Martin 	GPIO_PT4,
20900a2749dSAllen Martin 	GPIO_PT5,
21000a2749dSAllen Martin 	GPIO_PT6,
21100a2749dSAllen Martin 	GPIO_PT7,
21200a2749dSAllen Martin 	GPIO_PU0,	/* pin 160 */
21300a2749dSAllen Martin 	GPIO_PU1,
21400a2749dSAllen Martin 	GPIO_PU2,
21500a2749dSAllen Martin 	GPIO_PU3,
21600a2749dSAllen Martin 	GPIO_PU4,
21700a2749dSAllen Martin 	GPIO_PU5,
21800a2749dSAllen Martin 	GPIO_PU6,
21900a2749dSAllen Martin 	GPIO_PU7,
22000a2749dSAllen Martin 	GPIO_PV0,	/* pin 168 */
22100a2749dSAllen Martin 	GPIO_PV1,
22200a2749dSAllen Martin 	GPIO_PV2,
22300a2749dSAllen Martin 	GPIO_PV3,
22400a2749dSAllen Martin 	GPIO_PV4,
22500a2749dSAllen Martin 	GPIO_PV5,
22600a2749dSAllen Martin 	GPIO_PV6,
22700a2749dSAllen Martin 	GPIO_PV7,
22800a2749dSAllen Martin 	GPIO_PW0,	/* pin 176 */
22900a2749dSAllen Martin 	GPIO_PW1,
23000a2749dSAllen Martin 	GPIO_PW2,
23100a2749dSAllen Martin 	GPIO_PW3,
23200a2749dSAllen Martin 	GPIO_PW4,
23300a2749dSAllen Martin 	GPIO_PW5,
23400a2749dSAllen Martin 	GPIO_PW6,
23500a2749dSAllen Martin 	GPIO_PW7,
23600a2749dSAllen Martin 	GPIO_PX0,	/* pin 184 */
23700a2749dSAllen Martin 	GPIO_PX1,
23800a2749dSAllen Martin 	GPIO_PX2,
23900a2749dSAllen Martin 	GPIO_PX3,
24000a2749dSAllen Martin 	GPIO_PX4,
24100a2749dSAllen Martin 	GPIO_PX5,
24200a2749dSAllen Martin 	GPIO_PX6,
24300a2749dSAllen Martin 	GPIO_PX7,
24400a2749dSAllen Martin 	GPIO_PY0,	/* pin 192 */
24500a2749dSAllen Martin 	GPIO_PY1,
24600a2749dSAllen Martin 	GPIO_PY2,
24700a2749dSAllen Martin 	GPIO_PY3,
24800a2749dSAllen Martin 	GPIO_PY4,
24900a2749dSAllen Martin 	GPIO_PY5,
25000a2749dSAllen Martin 	GPIO_PY6,
25100a2749dSAllen Martin 	GPIO_PY7,
25200a2749dSAllen Martin 	GPIO_PZ0,	/* pin 200 */
25300a2749dSAllen Martin 	GPIO_PZ1,
25400a2749dSAllen Martin 	GPIO_PZ2,
25500a2749dSAllen Martin 	GPIO_PZ3,
25600a2749dSAllen Martin 	GPIO_PZ4,
25700a2749dSAllen Martin 	GPIO_PZ5,
25800a2749dSAllen Martin 	GPIO_PZ6,
25900a2749dSAllen Martin 	GPIO_PZ7,
26000a2749dSAllen Martin 	GPIO_PAA0,	/* pin 208 */
26100a2749dSAllen Martin 	GPIO_PAA1,
26200a2749dSAllen Martin 	GPIO_PAA2,
26300a2749dSAllen Martin 	GPIO_PAA3,
26400a2749dSAllen Martin 	GPIO_PAA4,
26500a2749dSAllen Martin 	GPIO_PAA5,
26600a2749dSAllen Martin 	GPIO_PAA6,
26700a2749dSAllen Martin 	GPIO_PAA7,
26800a2749dSAllen Martin 	GPIO_PBB0,	/* pin 216 */
26900a2749dSAllen Martin 	GPIO_PBB1,
27000a2749dSAllen Martin 	GPIO_PBB2,
27100a2749dSAllen Martin 	GPIO_PBB3,
27200a2749dSAllen Martin 	GPIO_PBB4,
27300a2749dSAllen Martin 	GPIO_PBB5,
27400a2749dSAllen Martin 	GPIO_PBB6,
27500a2749dSAllen Martin 	GPIO_PBB7,	/* pin 223 */
27600a2749dSAllen Martin };
27700a2749dSAllen Martin 
278*150c2493STom Warren #endif	/* TEGRA20_GPIO_H_ */
279