gpio.h 4.8 KB

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