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 */ 36 struct 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 47 struct 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 56 enum 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 287 void gpio_info(void); 288 289 #define gpio_status() gpio_info() 290 #endif /* TEGRA_GPIO_H_ */ 291