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