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