summaryrefslogtreecommitdiffstats
path: root/libopencm3/include/libopencm3/lpc43xx/gpio.h
diff options
context:
space:
mode:
Diffstat (limited to 'libopencm3/include/libopencm3/lpc43xx/gpio.h')
-rw-r--r--libopencm3/include/libopencm3/lpc43xx/gpio.h784
1 files changed, 784 insertions, 0 deletions
diff --git a/libopencm3/include/libopencm3/lpc43xx/gpio.h b/libopencm3/include/libopencm3/lpc43xx/gpio.h
new file mode 100644
index 0000000..6747470
--- /dev/null
+++ b/libopencm3/include/libopencm3/lpc43xx/gpio.h
@@ -0,0 +1,784 @@
+/** @defgroup gpio_defines General Purpose I/O Defines
+
+@brief <b>Defined Constants and Types for the LPC43xx General Purpose I/O</b>
+
+@ingroup LPC43xx_defines
+
+@version 1.0.0
+
+@author @htmlonly &copy; @endhtmlonly 2012 Michael Ossmann <mike@ossmann.com>
+
+@date 10 March 2013
+
+LGPL License Terms @ref lgpl_license
+ */
+/*
+ * This file is part of the libopencm3 project.
+ *
+ * Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
+ * Copyright (C) 2012 Michael Ossmann <mike@ossmann.com>
+ *
+ * This library is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef LPC43XX_GPIO_H
+#define LPC43XX_GPIO_H
+
+/**@{*/
+
+#include <libopencm3/cm3/common.h>
+#include <libopencm3/lpc43xx/memorymap.h>
+
+/* --- Convenience macros -------------------------------------------------- */
+
+/* GPIO port base addresses (for convenience) */
+#define GPIO0 (GPIO_PORT_BASE + 0x2000)
+#define GPIO1 (GPIO_PORT_BASE + 0x2004)
+#define GPIO2 (GPIO_PORT_BASE + 0x2008)
+#define GPIO3 (GPIO_PORT_BASE + 0x200C)
+#define GPIO4 (GPIO_PORT_BASE + 0x2010)
+#define GPIO5 (GPIO_PORT_BASE + 0x2014)
+#define GPIO6 (GPIO_PORT_BASE + 0x2018)
+#define GPIO7 (GPIO_PORT_BASE + 0x201C)
+
+/* GPIO number definitions (for convenience) */
+#define GPIOPIN0 (1 << 0)
+#define GPIOPIN1 (1 << 1)
+#define GPIOPIN2 (1 << 2)
+#define GPIOPIN3 (1 << 3)
+#define GPIOPIN4 (1 << 4)
+#define GPIOPIN5 (1 << 5)
+#define GPIOPIN6 (1 << 6)
+#define GPIOPIN7 (1 << 7)
+#define GPIOPIN8 (1 << 8)
+#define GPIOPIN9 (1 << 9)
+#define GPIOPIN10 (1 << 10)
+#define GPIOPIN11 (1 << 11)
+#define GPIOPIN12 (1 << 12)
+#define GPIOPIN13 (1 << 13)
+#define GPIOPIN14 (1 << 14)
+#define GPIOPIN15 (1 << 15)
+#define GPIOPIN16 (1 << 16)
+#define GPIOPIN17 (1 << 17)
+#define GPIOPIN18 (1 << 18)
+#define GPIOPIN19 (1 << 19)
+#define GPIOPIN20 (1 << 20)
+#define GPIOPIN21 (1 << 21)
+#define GPIOPIN22 (1 << 22)
+#define GPIOPIN23 (1 << 23)
+#define GPIOPIN24 (1 << 24)
+#define GPIOPIN25 (1 << 25)
+#define GPIOPIN26 (1 << 26)
+#define GPIOPIN27 (1 << 27)
+#define GPIOPIN28 (1 << 28)
+#define GPIOPIN29 (1 << 29)
+#define GPIOPIN30 (1 << 30)
+#define GPIOPIN31 (1 << 31)
+
+/* --- GPIO registers ------------------------------------------------------ */
+
+/* GPIO pin interrupts */
+
+/* Pin Interrupt Mode register */
+#define GPIO_PIN_INTERRUPT_ISEL MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x000)
+
+/* Pin interrupt level (rising edge) interrupt enable register */
+#define GPIO_PIN_INTERRUPT_IENR MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x004)
+
+/* Pin interrupt level (rising edge) interrupt set register */
+#define GPIO_PIN_INTERRUPT_SIENR MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x008)
+
+/* Pin interrupt level (rising edge interrupt) clear register */
+#define GPIO_PIN_INTERRUPT_CIENR MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x00C)
+
+/* Pin interrupt active level (falling edge) interrupt enable register */
+#define GPIO_PIN_INTERRUPT_IENF MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x010)
+
+/* Pin interrupt active level (falling edge) interrupt set register */
+#define GPIO_PIN_INTERRUPT_SIENF MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x014)
+
+/* Pin interrupt active level (falling edge) interrupt clear register */
+#define GPIO_PIN_INTERRUPT_CIENF MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x018)
+
+/* Pin interrupt rising edge register */
+#define GPIO_PIN_INTERRUPT_RISE MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x01C)
+
+/* Pin interrupt falling edge register */
+#define GPIO_PIN_INTERRUPT_FALL MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x020)
+
+/* Pin interrupt status register */
+#define GPIO_PIN_INTERRUPT_IST MMIO32(GPIO_PIN_INTERRUPT_BASE + 0x024)
+
+/* GPIO GROUP0 interrupt */
+
+/* GPIO grouped interrupt control register */
+#define GPIO_GROUP0_INTERRUPT_CTRL \
+ MMIO32(GPIO_GROUP0_INTERRUPT_BASE + 0x000)
+
+/* GPIO grouped interrupt port [0..7] polarity register */
+#define GPIO_GROUP0_INTERRUPT_PORT_POL(x) \
+ MMIO32(GPIO_GROUP0_INTERRUPT_BASE + 0x020 + ((x)*4))
+
+/* GPIO grouped interrupt port [0..7] enable register */
+#define GPIO_GROUP0_INTERRUPT_PORT_ENA(x) \
+ MMIO32(GPIO_GROUP0_INTERRUPT_BASE + 0x040 + ((x)*4))
+
+/* GPIO GROUP1 interrupt */
+
+/* GPIO grouped interrupt control register */
+#define GPIO_GROUP1_INTERRUPT_CTRL \
+ MMIO32(GPIO_GROUP1_INTERRUPT_BASE + 0x000)
+
+/* GPIO grouped interrupt port [0..7] polarity register */
+#define GPIO_GROUP1_INTERRUPT_PORT_POL(x) \
+ MMIO32(GPIO_GROUP1_INTERRUPT_BASE + 0x020 + ((x)*4))
+
+/* GPIO grouped interrupt port [0..7] enable register */
+#define GPIO_GROUP1_INTERRUPT_PORT_ENA(x) \
+ MMIO32(GPIO_GROUP1_INTERRUPT_BASE + 0x040 + ((x)*4))
+
+/* Byte pin registers port 0; pins PIO0_0 to PIO0_31 (R/W) */
+#define GPIO_B0 (GPIO_PORT_BASE + 0x0000)
+#define GPIO_B1 (GPIO_PORT_BASE + 0x0001)
+#define GPIO_B2 (GPIO_PORT_BASE + 0x0002)
+#define GPIO_B3 (GPIO_PORT_BASE + 0x0003)
+#define GPIO_B4 (GPIO_PORT_BASE + 0x0004)
+#define GPIO_B5 (GPIO_PORT_BASE + 0x0005)
+#define GPIO_B6 (GPIO_PORT_BASE + 0x0006)
+#define GPIO_B7 (GPIO_PORT_BASE + 0x0007)
+#define GPIO_B8 (GPIO_PORT_BASE + 0x0008)
+#define GPIO_B9 (GPIO_PORT_BASE + 0x0009)
+#define GPIO_B10 (GPIO_PORT_BASE + 0x000A)
+#define GPIO_B11 (GPIO_PORT_BASE + 0x000B)
+#define GPIO_B12 (GPIO_PORT_BASE + 0x000C)
+#define GPIO_B13 (GPIO_PORT_BASE + 0x000D)
+#define GPIO_B14 (GPIO_PORT_BASE + 0x000E)
+#define GPIO_B15 (GPIO_PORT_BASE + 0x000F)
+#define GPIO_B16 (GPIO_PORT_BASE + 0x0010)
+#define GPIO_B17 (GPIO_PORT_BASE + 0x0011)
+#define GPIO_B18 (GPIO_PORT_BASE + 0x0012)
+#define GPIO_B19 (GPIO_PORT_BASE + 0x0013)
+#define GPIO_B20 (GPIO_PORT_BASE + 0x0014)
+#define GPIO_B21 (GPIO_PORT_BASE + 0x0015)
+#define GPIO_B22 (GPIO_PORT_BASE + 0x0016)
+#define GPIO_B23 (GPIO_PORT_BASE + 0x0017)
+#define GPIO_B24 (GPIO_PORT_BASE + 0x0018)
+#define GPIO_B25 (GPIO_PORT_BASE + 0x0019)
+#define GPIO_B26 (GPIO_PORT_BASE + 0x001A)
+#define GPIO_B27 (GPIO_PORT_BASE + 0x001B)
+#define GPIO_B28 (GPIO_PORT_BASE + 0x001C)
+#define GPIO_B29 (GPIO_PORT_BASE + 0x001D)
+#define GPIO_B30 (GPIO_PORT_BASE + 0x001E)
+#define GPIO_B31 (GPIO_PORT_BASE + 0x001F)
+
+/* Byte pin registers port 1 (R/W) */
+#define GPIO_B32 (GPIO_PORT_BASE + 0x0020)
+#define GPIO_B33 (GPIO_PORT_BASE + 0x0021)
+#define GPIO_B34 (GPIO_PORT_BASE + 0x0022)
+#define GPIO_B35 (GPIO_PORT_BASE + 0x0023)
+#define GPIO_B36 (GPIO_PORT_BASE + 0x0024)
+#define GPIO_B37 (GPIO_PORT_BASE + 0x0025)
+#define GPIO_B38 (GPIO_PORT_BASE + 0x0026)
+#define GPIO_B39 (GPIO_PORT_BASE + 0x0027)
+#define GPIO_B40 (GPIO_PORT_BASE + 0x0028)
+#define GPIO_B41 (GPIO_PORT_BASE + 0x0029)
+#define GPIO_B42 (GPIO_PORT_BASE + 0x002A)
+#define GPIO_B43 (GPIO_PORT_BASE + 0x002B)
+#define GPIO_B44 (GPIO_PORT_BASE + 0x002C)
+#define GPIO_B45 (GPIO_PORT_BASE + 0x002D)
+#define GPIO_B46 (GPIO_PORT_BASE + 0x002E)
+#define GPIO_B47 (GPIO_PORT_BASE + 0x002F)
+#define GPIO_B48 (GPIO_PORT_BASE + 0x0030)
+#define GPIO_B49 (GPIO_PORT_BASE + 0x0031)
+#define GPIO_B50 (GPIO_PORT_BASE + 0x0032)
+#define GPIO_B51 (GPIO_PORT_BASE + 0x0033)
+#define GPIO_B52 (GPIO_PORT_BASE + 0x0034)
+#define GPIO_B53 (GPIO_PORT_BASE + 0x0035)
+#define GPIO_B54 (GPIO_PORT_BASE + 0x0036)
+#define GPIO_B55 (GPIO_PORT_BASE + 0x0037)
+#define GPIO_B56 (GPIO_PORT_BASE + 0x0038)
+#define GPIO_B57 (GPIO_PORT_BASE + 0x0039)
+#define GPIO_B58 (GPIO_PORT_BASE + 0x003A)
+#define GPIO_B59 (GPIO_PORT_BASE + 0x003B)
+#define GPIO_B60 (GPIO_PORT_BASE + 0x003C)
+#define GPIO_B61 (GPIO_PORT_BASE + 0x003D)
+#define GPIO_B62 (GPIO_PORT_BASE + 0x003E)
+#define GPIO_B63 (GPIO_PORT_BASE + 0x003F)
+
+/* Byte pin registers port 2 (R/W) */
+#define GPIO_B64 (GPIO_PORT_BASE + 0x0040)
+#define GPIO_B65 (GPIO_PORT_BASE + 0x0041)
+#define GPIO_B66 (GPIO_PORT_BASE + 0x0042)
+#define GPIO_B67 (GPIO_PORT_BASE + 0x0043)
+#define GPIO_B68 (GPIO_PORT_BASE + 0x0044)
+#define GPIO_B69 (GPIO_PORT_BASE + 0x0045)
+#define GPIO_B70 (GPIO_PORT_BASE + 0x0046)
+#define GPIO_B71 (GPIO_PORT_BASE + 0x0047)
+#define GPIO_B72 (GPIO_PORT_BASE + 0x0048)
+#define GPIO_B73 (GPIO_PORT_BASE + 0x0049)
+#define GPIO_B74 (GPIO_PORT_BASE + 0x004A)
+#define GPIO_B75 (GPIO_PORT_BASE + 0x004B)
+#define GPIO_B76 (GPIO_PORT_BASE + 0x004C)
+#define GPIO_B77 (GPIO_PORT_BASE + 0x004D)
+#define GPIO_B78 (GPIO_PORT_BASE + 0x004E)
+#define GPIO_B79 (GPIO_PORT_BASE + 0x004F)
+#define GPIO_B80 (GPIO_PORT_BASE + 0x0050)
+#define GPIO_B81 (GPIO_PORT_BASE + 0x0051)
+#define GPIO_B82 (GPIO_PORT_BASE + 0x0052)
+#define GPIO_B83 (GPIO_PORT_BASE + 0x0053)
+#define GPIO_B84 (GPIO_PORT_BASE + 0x0054)
+#define GPIO_B85 (GPIO_PORT_BASE + 0x0055)
+#define GPIO_B86 (GPIO_PORT_BASE + 0x0056)
+#define GPIO_B87 (GPIO_PORT_BASE + 0x0057)
+#define GPIO_B88 (GPIO_PORT_BASE + 0x0058)
+#define GPIO_B89 (GPIO_PORT_BASE + 0x0059)
+#define GPIO_B90 (GPIO_PORT_BASE + 0x005A)
+#define GPIO_B91 (GPIO_PORT_BASE + 0x005B)
+#define GPIO_B92 (GPIO_PORT_BASE + 0x005C)
+#define GPIO_B93 (GPIO_PORT_BASE + 0x005D)
+#define GPIO_B94 (GPIO_PORT_BASE + 0x005E)
+#define GPIO_B95 (GPIO_PORT_BASE + 0x005F)
+
+/* Byte pin registers port 3 (R/W) */
+#define GPIO_B96 (GPIO_PORT_BASE + 0x0060)
+#define GPIO_B97 (GPIO_PORT_BASE + 0x0061)
+#define GPIO_B98 (GPIO_PORT_BASE + 0x0062)
+#define GPIO_B99 (GPIO_PORT_BASE + 0x0063)
+#define GPIO_B100 (GPIO_PORT_BASE + 0x0064)
+#define GPIO_B101 (GPIO_PORT_BASE + 0x0065)
+#define GPIO_B102 (GPIO_PORT_BASE + 0x0066)
+#define GPIO_B103 (GPIO_PORT_BASE + 0x0067)
+#define GPIO_B104 (GPIO_PORT_BASE + 0x0068)
+#define GPIO_B105 (GPIO_PORT_BASE + 0x0069)
+#define GPIO_B106 (GPIO_PORT_BASE + 0x006A)
+#define GPIO_B107 (GPIO_PORT_BASE + 0x006B)
+#define GPIO_B108 (GPIO_PORT_BASE + 0x006C)
+#define GPIO_B109 (GPIO_PORT_BASE + 0x006D)
+#define GPIO_B110 (GPIO_PORT_BASE + 0x006E)
+#define GPIO_B111 (GPIO_PORT_BASE + 0x006F)
+#define GPIO_B112 (GPIO_PORT_BASE + 0x0070)
+#define GPIO_B113 (GPIO_PORT_BASE + 0x0071)
+#define GPIO_B114 (GPIO_PORT_BASE + 0x0072)
+#define GPIO_B115 (GPIO_PORT_BASE + 0x0073)
+#define GPIO_B116 (GPIO_PORT_BASE + 0x0074)
+#define GPIO_B117 (GPIO_PORT_BASE + 0x0075)
+#define GPIO_B118 (GPIO_PORT_BASE + 0x0076)
+#define GPIO_B119 (GPIO_PORT_BASE + 0x0077)
+#define GPIO_B120 (GPIO_PORT_BASE + 0x0078)
+#define GPIO_B121 (GPIO_PORT_BASE + 0x0079)
+#define GPIO_B122 (GPIO_PORT_BASE + 0x007A)
+#define GPIO_B123 (GPIO_PORT_BASE + 0x007B)
+#define GPIO_B124 (GPIO_PORT_BASE + 0x007C)
+#define GPIO_B125 (GPIO_PORT_BASE + 0x007D)
+#define GPIO_B126 (GPIO_PORT_BASE + 0x007E)
+#define GPIO_B127 (GPIO_PORT_BASE + 0x007F)
+
+/* Byte pin registers port 4 (R/W) */
+#define GPIO_B128 (GPIO_PORT_BASE + 0x0080)
+#define GPIO_B129 (GPIO_PORT_BASE + 0x0081)
+#define GPIO_B130 (GPIO_PORT_BASE + 0x0082)
+#define GPIO_B131 (GPIO_PORT_BASE + 0x0083)
+#define GPIO_B132 (GPIO_PORT_BASE + 0x0084)
+#define GPIO_B133 (GPIO_PORT_BASE + 0x0085)
+#define GPIO_B134 (GPIO_PORT_BASE + 0x0086)
+#define GPIO_B135 (GPIO_PORT_BASE + 0x0087)
+#define GPIO_B136 (GPIO_PORT_BASE + 0x0088)
+#define GPIO_B137 (GPIO_PORT_BASE + 0x0089)
+#define GPIO_B138 (GPIO_PORT_BASE + 0x008A)
+#define GPIO_B139 (GPIO_PORT_BASE + 0x008B)
+#define GPIO_B140 (GPIO_PORT_BASE + 0x008C)
+#define GPIO_B141 (GPIO_PORT_BASE + 0x008D)
+#define GPIO_B142 (GPIO_PORT_BASE + 0x008E)
+#define GPIO_B143 (GPIO_PORT_BASE + 0x008F)
+#define GPIO_B144 (GPIO_PORT_BASE + 0x0090)
+#define GPIO_B145 (GPIO_PORT_BASE + 0x0091)
+#define GPIO_B146 (GPIO_PORT_BASE + 0x0092)
+#define GPIO_B147 (GPIO_PORT_BASE + 0x0093)
+#define GPIO_B148 (GPIO_PORT_BASE + 0x0094)
+#define GPIO_B149 (GPIO_PORT_BASE + 0x0095)
+#define GPIO_B150 (GPIO_PORT_BASE + 0x0096)
+#define GPIO_B151 (GPIO_PORT_BASE + 0x0097)
+#define GPIO_B152 (GPIO_PORT_BASE + 0x0098)
+#define GPIO_B153 (GPIO_PORT_BASE + 0x0099)
+#define GPIO_B154 (GPIO_PORT_BASE + 0x009A)
+#define GPIO_B155 (GPIO_PORT_BASE + 0x009B)
+#define GPIO_B156 (GPIO_PORT_BASE + 0x009C)
+#define GPIO_B157 (GPIO_PORT_BASE + 0x009D)
+#define GPIO_B158 (GPIO_PORT_BASE + 0x009E)
+#define GPIO_B159 (GPIO_PORT_BASE + 0x009F)
+
+/* Byte pin registers port 5 (R/W) */
+#define GPIO_B160 (GPIO_PORT_BASE + 0x00A0)
+#define GPIO_B161 (GPIO_PORT_BASE + 0x00A1)
+#define GPIO_B162 (GPIO_PORT_BASE + 0x00A2)
+#define GPIO_B163 (GPIO_PORT_BASE + 0x00A3)
+#define GPIO_B164 (GPIO_PORT_BASE + 0x00A4)
+#define GPIO_B165 (GPIO_PORT_BASE + 0x00A5)
+#define GPIO_B166 (GPIO_PORT_BASE + 0x00A6)
+#define GPIO_B167 (GPIO_PORT_BASE + 0x00A7)
+#define GPIO_B168 (GPIO_PORT_BASE + 0x00A8)
+#define GPIO_B169 (GPIO_PORT_BASE + 0x00A9)
+#define GPIO_B170 (GPIO_PORT_BASE + 0x00AA)
+#define GPIO_B171 (GPIO_PORT_BASE + 0x00AB)
+#define GPIO_B172 (GPIO_PORT_BASE + 0x00AC)
+#define GPIO_B173 (GPIO_PORT_BASE + 0x00AD)
+#define GPIO_B174 (GPIO_PORT_BASE + 0x00AE)
+#define GPIO_B175 (GPIO_PORT_BASE + 0x00AF)
+#define GPIO_B176 (GPIO_PORT_BASE + 0x00B0)
+#define GPIO_B177 (GPIO_PORT_BASE + 0x00B1)
+#define GPIO_B178 (GPIO_PORT_BASE + 0x00B2)
+#define GPIO_B179 (GPIO_PORT_BASE + 0x00B3)
+#define GPIO_B180 (GPIO_PORT_BASE + 0x00B4)
+#define GPIO_B181 (GPIO_PORT_BASE + 0x00B5)
+#define GPIO_B182 (GPIO_PORT_BASE + 0x00B6)
+#define GPIO_B183 (GPIO_PORT_BASE + 0x00B7)
+#define GPIO_B184 (GPIO_PORT_BASE + 0x00B8)
+#define GPIO_B185 (GPIO_PORT_BASE + 0x00B9)
+#define GPIO_B186 (GPIO_PORT_BASE + 0x00BA)
+#define GPIO_B187 (GPIO_PORT_BASE + 0x00BB)
+#define GPIO_B188 (GPIO_PORT_BASE + 0x00BC)
+#define GPIO_B189 (GPIO_PORT_BASE + 0x00BD)
+#define GPIO_B190 (GPIO_PORT_BASE + 0x00BE)
+#define GPIO_B191 (GPIO_PORT_BASE + 0x00BF)
+
+/* Byte pin registers port 6 (R/W) */
+#define GPIO_B192 (GPIO_PORT_BASE + 0x00C0)
+#define GPIO_B193 (GPIO_PORT_BASE + 0x00C1)
+#define GPIO_B194 (GPIO_PORT_BASE + 0x00C2)
+#define GPIO_B195 (GPIO_PORT_BASE + 0x00C3)
+#define GPIO_B196 (GPIO_PORT_BASE + 0x00C4)
+#define GPIO_B197 (GPIO_PORT_BASE + 0x00C5)
+#define GPIO_B198 (GPIO_PORT_BASE + 0x00C6)
+#define GPIO_B199 (GPIO_PORT_BASE + 0x00C7)
+#define GPIO_B200 (GPIO_PORT_BASE + 0x00C8)
+#define GPIO_B201 (GPIO_PORT_BASE + 0x00C9)
+#define GPIO_B202 (GPIO_PORT_BASE + 0x00CA)
+#define GPIO_B203 (GPIO_PORT_BASE + 0x00CB)
+#define GPIO_B204 (GPIO_PORT_BASE + 0x00CC)
+#define GPIO_B205 (GPIO_PORT_BASE + 0x00CD)
+#define GPIO_B206 (GPIO_PORT_BASE + 0x00CE)
+#define GPIO_B207 (GPIO_PORT_BASE + 0x00CF)
+#define GPIO_B208 (GPIO_PORT_BASE + 0x00D0)
+#define GPIO_B209 (GPIO_PORT_BASE + 0x00D1)
+#define GPIO_B210 (GPIO_PORT_BASE + 0x00D2)
+#define GPIO_B211 (GPIO_PORT_BASE + 0x00D3)
+#define GPIO_B212 (GPIO_PORT_BASE + 0x00D4)
+#define GPIO_B213 (GPIO_PORT_BASE + 0x00D5)
+#define GPIO_B214 (GPIO_PORT_BASE + 0x00D6)
+#define GPIO_B215 (GPIO_PORT_BASE + 0x00D7)
+#define GPIO_B216 (GPIO_PORT_BASE + 0x00D8)
+#define GPIO_B217 (GPIO_PORT_BASE + 0x00D9)
+#define GPIO_B218 (GPIO_PORT_BASE + 0x00DA)
+#define GPIO_B219 (GPIO_PORT_BASE + 0x00DB)
+#define GPIO_B220 (GPIO_PORT_BASE + 0x00DC)
+#define GPIO_B221 (GPIO_PORT_BASE + 0x00DD)
+#define GPIO_B222 (GPIO_PORT_BASE + 0x00DE)
+#define GPIO_B223 (GPIO_PORT_BASE + 0x00DF)
+
+/* Byte pin registers port 7 (R/W) */
+#define GPIO_B224 (GPIO_PORT_BASE + 0x00E0)
+#define GPIO_B225 (GPIO_PORT_BASE + 0x00E1)
+#define GPIO_B226 (GPIO_PORT_BASE + 0x00E2)
+#define GPIO_B227 (GPIO_PORT_BASE + 0x00E3)
+#define GPIO_B228 (GPIO_PORT_BASE + 0x00E4)
+#define GPIO_B229 (GPIO_PORT_BASE + 0x00E5)
+#define GPIO_B230 (GPIO_PORT_BASE + 0x00E6)
+#define GPIO_B231 (GPIO_PORT_BASE + 0x00E7)
+#define GPIO_B232 (GPIO_PORT_BASE + 0x00E8)
+#define GPIO_B233 (GPIO_PORT_BASE + 0x00E9)
+#define GPIO_B234 (GPIO_PORT_BASE + 0x00EA)
+#define GPIO_B235 (GPIO_PORT_BASE + 0x00EB)
+#define GPIO_B236 (GPIO_PORT_BASE + 0x00EC)
+#define GPIO_B237 (GPIO_PORT_BASE + 0x00ED)
+#define GPIO_B238 (GPIO_PORT_BASE + 0x00EE)
+#define GPIO_B239 (GPIO_PORT_BASE + 0x00EF)
+#define GPIO_B240 (GPIO_PORT_BASE + 0x00F0)
+#define GPIO_B241 (GPIO_PORT_BASE + 0x00F1)
+#define GPIO_B242 (GPIO_PORT_BASE + 0x00F2)
+#define GPIO_B243 (GPIO_PORT_BASE + 0x00F3)
+#define GPIO_B244 (GPIO_PORT_BASE + 0x00F4)
+#define GPIO_B245 (GPIO_PORT_BASE + 0x00F5)
+#define GPIO_B246 (GPIO_PORT_BASE + 0x00F6)
+#define GPIO_B247 (GPIO_PORT_BASE + 0x00F7)
+#define GPIO_B248 (GPIO_PORT_BASE + 0x00F8)
+#define GPIO_B249 (GPIO_PORT_BASE + 0x00F9)
+#define GPIO_B250 (GPIO_PORT_BASE + 0x00FA)
+#define GPIO_B251 (GPIO_PORT_BASE + 0x00FB)
+#define GPIO_B252 (GPIO_PORT_BASE + 0x00FC)
+#define GPIO_B253 (GPIO_PORT_BASE + 0x00FD)
+#define GPIO_B254 (GPIO_PORT_BASE + 0x00FE)
+#define GPIO_B255 (GPIO_PORT_BASE + 0x00FF)
+
+/* Word pin registers port 0 (R/W) */
+#define GPIO_W0 (GPIO_PORT_BASE + 0x1000)
+#define GPIO_W1 (GPIO_PORT_BASE + 0x1004)
+#define GPIO_W2 (GPIO_PORT_BASE + 0x1008)
+#define GPIO_W3 (GPIO_PORT_BASE + 0x100C)
+#define GPIO_W4 (GPIO_PORT_BASE + 0x1010)
+#define GPIO_W5 (GPIO_PORT_BASE + 0x1014)
+#define GPIO_W6 (GPIO_PORT_BASE + 0x1018)
+#define GPIO_W7 (GPIO_PORT_BASE + 0x101C)
+#define GPIO_W8 (GPIO_PORT_BASE + 0x1020)
+#define GPIO_W9 (GPIO_PORT_BASE + 0x1024)
+#define GPIO_W10 (GPIO_PORT_BASE + 0x1028)
+#define GPIO_W11 (GPIO_PORT_BASE + 0x102C)
+#define GPIO_W12 (GPIO_PORT_BASE + 0x1030)
+#define GPIO_W13 (GPIO_PORT_BASE + 0x1034)
+#define GPIO_W14 (GPIO_PORT_BASE + 0x1038)
+#define GPIO_W15 (GPIO_PORT_BASE + 0x103C)
+#define GPIO_W16 (GPIO_PORT_BASE + 0x1040)
+#define GPIO_W17 (GPIO_PORT_BASE + 0x1044)
+#define GPIO_W18 (GPIO_PORT_BASE + 0x1048)
+#define GPIO_W19 (GPIO_PORT_BASE + 0x104C)
+#define GPIO_W20 (GPIO_PORT_BASE + 0x1050)
+#define GPIO_W21 (GPIO_PORT_BASE + 0x1054)
+#define GPIO_W22 (GPIO_PORT_BASE + 0x1058)
+#define GPIO_W23 (GPIO_PORT_BASE + 0x105C)
+#define GPIO_W24 (GPIO_PORT_BASE + 0x1060)
+#define GPIO_W25 (GPIO_PORT_BASE + 0x1064)
+#define GPIO_W26 (GPIO_PORT_BASE + 0x1068)
+#define GPIO_W27 (GPIO_PORT_BASE + 0x106C)
+#define GPIO_W28 (GPIO_PORT_BASE + 0x1070)
+#define GPIO_W29 (GPIO_PORT_BASE + 0x1074)
+#define GPIO_W30 (GPIO_PORT_BASE + 0x1078)
+#define GPIO_W31 (GPIO_PORT_BASE + 0x107C)
+
+/* Word pin registers port 1 (R/W) */
+#define GPIO_W32 (GPIO_PORT_BASE + 0x1080)
+#define GPIO_W33 (GPIO_PORT_BASE + 0x1084)
+#define GPIO_W34 (GPIO_PORT_BASE + 0x1088)
+#define GPIO_W35 (GPIO_PORT_BASE + 0x108C)
+#define GPIO_W36 (GPIO_PORT_BASE + 0x1090)
+#define GPIO_W37 (GPIO_PORT_BASE + 0x1094)
+#define GPIO_W38 (GPIO_PORT_BASE + 0x1098)
+#define GPIO_W39 (GPIO_PORT_BASE + 0x109C)
+#define GPIO_W40 (GPIO_PORT_BASE + 0x10A0)
+#define GPIO_W41 (GPIO_PORT_BASE + 0x10A4)
+#define GPIO_W42 (GPIO_PORT_BASE + 0x10A8)
+#define GPIO_W43 (GPIO_PORT_BASE + 0x10AC)
+#define GPIO_W44 (GPIO_PORT_BASE + 0x10B0)
+#define GPIO_W45 (GPIO_PORT_BASE + 0x10B4)
+#define GPIO_W46 (GPIO_PORT_BASE + 0x10B8)
+#define GPIO_W47 (GPIO_PORT_BASE + 0x10BC)
+#define GPIO_W48 (GPIO_PORT_BASE + 0x10C0)
+#define GPIO_W49 (GPIO_PORT_BASE + 0x10C4)
+#define GPIO_W50 (GPIO_PORT_BASE + 0x10C8)
+#define GPIO_W51 (GPIO_PORT_BASE + 0x10CC)
+#define GPIO_W52 (GPIO_PORT_BASE + 0x10D0)
+#define GPIO_W53 (GPIO_PORT_BASE + 0x10D4)
+#define GPIO_W54 (GPIO_PORT_BASE + 0x10D8)
+#define GPIO_W55 (GPIO_PORT_BASE + 0x10DC)
+#define GPIO_W56 (GPIO_PORT_BASE + 0x10E0)
+#define GPIO_W57 (GPIO_PORT_BASE + 0x10E4)
+#define GPIO_W58 (GPIO_PORT_BASE + 0x10E8)
+#define GPIO_W59 (GPIO_PORT_BASE + 0x10EC)
+#define GPIO_W60 (GPIO_PORT_BASE + 0x10F0)
+#define GPIO_W61 (GPIO_PORT_BASE + 0x10F4)
+#define GPIO_W62 (GPIO_PORT_BASE + 0x10F8)
+#define GPIO_W63 (GPIO_PORT_BASE + 0x10FC)
+
+/* Word pin registers port 2 (R/W) */
+#define GPIO_W64 (GPIO_PORT_BASE + 0x1100)
+#define GPIO_W65 (GPIO_PORT_BASE + 0x1104)
+#define GPIO_W66 (GPIO_PORT_BASE + 0x1108)
+#define GPIO_W67 (GPIO_PORT_BASE + 0x110C)
+#define GPIO_W68 (GPIO_PORT_BASE + 0x1110)
+#define GPIO_W69 (GPIO_PORT_BASE + 0x1114)
+#define GPIO_W70 (GPIO_PORT_BASE + 0x1118)
+#define GPIO_W71 (GPIO_PORT_BASE + 0x111C)
+#define GPIO_W72 (GPIO_PORT_BASE + 0x1120)
+#define GPIO_W73 (GPIO_PORT_BASE + 0x1124)
+#define GPIO_W74 (GPIO_PORT_BASE + 0x1128)
+#define GPIO_W75 (GPIO_PORT_BASE + 0x112C)
+#define GPIO_W76 (GPIO_PORT_BASE + 0x1130)
+#define GPIO_W77 (GPIO_PORT_BASE + 0x1134)
+#define GPIO_W78 (GPIO_PORT_BASE + 0x1138)
+#define GPIO_W79 (GPIO_PORT_BASE + 0x113C)
+#define GPIO_W80 (GPIO_PORT_BASE + 0x1140)
+#define GPIO_W81 (GPIO_PORT_BASE + 0x1144)
+#define GPIO_W82 (GPIO_PORT_BASE + 0x1148)
+#define GPIO_W83 (GPIO_PORT_BASE + 0x114C)
+#define GPIO_W84 (GPIO_PORT_BASE + 0x1150)
+#define GPIO_W85 (GPIO_PORT_BASE + 0x1154)
+#define GPIO_W86 (GPIO_PORT_BASE + 0x1158)
+#define GPIO_W87 (GPIO_PORT_BASE + 0x115C)
+#define GPIO_W88 (GPIO_PORT_BASE + 0x1160)
+#define GPIO_W89 (GPIO_PORT_BASE + 0x1164)
+#define GPIO_W90 (GPIO_PORT_BASE + 0x1168)
+#define GPIO_W91 (GPIO_PORT_BASE + 0x116C)
+#define GPIO_W92 (GPIO_PORT_BASE + 0x1170)
+#define GPIO_W93 (GPIO_PORT_BASE + 0x1174)
+#define GPIO_W94 (GPIO_PORT_BASE + 0x1178)
+#define GPIO_W95 (GPIO_PORT_BASE + 0x117C)
+
+/* Word pin registers port 3 (R/W) */
+#define GPIO_W96 (GPIO_PORT_BASE + 0x1180)
+#define GPIO_W97 (GPIO_PORT_BASE + 0x1184)
+#define GPIO_W98 (GPIO_PORT_BASE + 0x1188)
+#define GPIO_W99 (GPIO_PORT_BASE + 0x118C)
+#define GPIO_W100 (GPIO_PORT_BASE + 0x1190)
+#define GPIO_W101 (GPIO_PORT_BASE + 0x1194)
+#define GPIO_W102 (GPIO_PORT_BASE + 0x1198)
+#define GPIO_W103 (GPIO_PORT_BASE + 0x119C)
+#define GPIO_W104 (GPIO_PORT_BASE + 0x11A0)
+#define GPIO_W105 (GPIO_PORT_BASE + 0x11A4)
+#define GPIO_W106 (GPIO_PORT_BASE + 0x11A8)
+#define GPIO_W107 (GPIO_PORT_BASE + 0x11AC)
+#define GPIO_W108 (GPIO_PORT_BASE + 0x11B0)
+#define GPIO_W109 (GPIO_PORT_BASE + 0x11B4)
+#define GPIO_W110 (GPIO_PORT_BASE + 0x11B8)
+#define GPIO_W111 (GPIO_PORT_BASE + 0x11BC)
+#define GPIO_W112 (GPIO_PORT_BASE + 0x11C0)
+#define GPIO_W113 (GPIO_PORT_BASE + 0x11C4)
+#define GPIO_W114 (GPIO_PORT_BASE + 0x11C8)
+#define GPIO_W115 (GPIO_PORT_BASE + 0x11CC)
+#define GPIO_W116 (GPIO_PORT_BASE + 0x11D0)
+#define GPIO_W117 (GPIO_PORT_BASE + 0x11D4)
+#define GPIO_W118 (GPIO_PORT_BASE + 0x11D8)
+#define GPIO_W119 (GPIO_PORT_BASE + 0x11DC)
+#define GPIO_W120 (GPIO_PORT_BASE + 0x11E0)
+#define GPIO_W121 (GPIO_PORT_BASE + 0x11E4)
+#define GPIO_W122 (GPIO_PORT_BASE + 0x11E8)
+#define GPIO_W123 (GPIO_PORT_BASE + 0x11EC)
+#define GPIO_W124 (GPIO_PORT_BASE + 0x11F0)
+#define GPIO_W125 (GPIO_PORT_BASE + 0x11F4)
+#define GPIO_W126 (GPIO_PORT_BASE + 0x11F8)
+#define GPIO_W127 (GPIO_PORT_BASE + 0x11FC)
+
+/* Word pin registers port 4 (R/W) */
+#define GPIO_W128 (GPIO_PORT_BASE + 0x1200)
+#define GPIO_W129 (GPIO_PORT_BASE + 0x1204)
+#define GPIO_W130 (GPIO_PORT_BASE + 0x1208)
+#define GPIO_W131 (GPIO_PORT_BASE + 0x120C)
+#define GPIO_W132 (GPIO_PORT_BASE + 0x1210)
+#define GPIO_W133 (GPIO_PORT_BASE + 0x1214)
+#define GPIO_W134 (GPIO_PORT_BASE + 0x1218)
+#define GPIO_W135 (GPIO_PORT_BASE + 0x121C)
+#define GPIO_W136 (GPIO_PORT_BASE + 0x1220)
+#define GPIO_W137 (GPIO_PORT_BASE + 0x1224)
+#define GPIO_W138 (GPIO_PORT_BASE + 0x1228)
+#define GPIO_W139 (GPIO_PORT_BASE + 0x122C)
+#define GPIO_W140 (GPIO_PORT_BASE + 0x1230)
+#define GPIO_W141 (GPIO_PORT_BASE + 0x1234)
+#define GPIO_W142 (GPIO_PORT_BASE + 0x1238)
+#define GPIO_W143 (GPIO_PORT_BASE + 0x123C)
+#define GPIO_W144 (GPIO_PORT_BASE + 0x1240)
+#define GPIO_W145 (GPIO_PORT_BASE + 0x1244)
+#define GPIO_W146 (GPIO_PORT_BASE + 0x1248)
+#define GPIO_W147 (GPIO_PORT_BASE + 0x124C)
+#define GPIO_W148 (GPIO_PORT_BASE + 0x1250)
+#define GPIO_W149 (GPIO_PORT_BASE + 0x1254)
+#define GPIO_W150 (GPIO_PORT_BASE + 0x1258)
+#define GPIO_W151 (GPIO_PORT_BASE + 0x125C)
+#define GPIO_W152 (GPIO_PORT_BASE + 0x1260)
+#define GPIO_W153 (GPIO_PORT_BASE + 0x1264)
+#define GPIO_W154 (GPIO_PORT_BASE + 0x1268)
+#define GPIO_W155 (GPIO_PORT_BASE + 0x126C)
+#define GPIO_W156 (GPIO_PORT_BASE + 0x1270)
+#define GPIO_W157 (GPIO_PORT_BASE + 0x1274)
+#define GPIO_W158 (GPIO_PORT_BASE + 0x1278)
+#define GPIO_W159 (GPIO_PORT_BASE + 0x127C)
+
+/* Word pin registers port 5 (R/W) */
+#define GPIO_W160 (GPIO_PORT_BASE + 0x1280)
+#define GPIO_W161 (GPIO_PORT_BASE + 0x1284)
+#define GPIO_W162 (GPIO_PORT_BASE + 0x1288)
+#define GPIO_W163 (GPIO_PORT_BASE + 0x128C)
+#define GPIO_W164 (GPIO_PORT_BASE + 0x1290)
+#define GPIO_W165 (GPIO_PORT_BASE + 0x1294)
+#define GPIO_W166 (GPIO_PORT_BASE + 0x1298)
+#define GPIO_W167 (GPIO_PORT_BASE + 0x129C)
+#define GPIO_W168 (GPIO_PORT_BASE + 0x12A0)
+#define GPIO_W169 (GPIO_PORT_BASE + 0x12A4)
+#define GPIO_W170 (GPIO_PORT_BASE + 0x12A8)
+#define GPIO_W171 (GPIO_PORT_BASE + 0x12AC)
+#define GPIO_W172 (GPIO_PORT_BASE + 0x12B0)
+#define GPIO_W173 (GPIO_PORT_BASE + 0x12B4)
+#define GPIO_W174 (GPIO_PORT_BASE + 0x12B8)
+#define GPIO_W175 (GPIO_PORT_BASE + 0x12BC)
+#define GPIO_W176 (GPIO_PORT_BASE + 0x12C0)
+#define GPIO_W177 (GPIO_PORT_BASE + 0x12C4)
+#define GPIO_W178 (GPIO_PORT_BASE + 0x12C8)
+#define GPIO_W179 (GPIO_PORT_BASE + 0x12CC)
+#define GPIO_W180 (GPIO_PORT_BASE + 0x12D0)
+#define GPIO_W181 (GPIO_PORT_BASE + 0x12D4)
+#define GPIO_W182 (GPIO_PORT_BASE + 0x12D8)
+#define GPIO_W183 (GPIO_PORT_BASE + 0x12DC)
+#define GPIO_W184 (GPIO_PORT_BASE + 0x12E0)
+#define GPIO_W185 (GPIO_PORT_BASE + 0x12E4)
+#define GPIO_W186 (GPIO_PORT_BASE + 0x12E8)
+#define GPIO_W187 (GPIO_PORT_BASE + 0x12EC)
+#define GPIO_W188 (GPIO_PORT_BASE + 0x12F0)
+#define GPIO_W189 (GPIO_PORT_BASE + 0x12F4)
+#define GPIO_W190 (GPIO_PORT_BASE + 0x12F8)
+#define GPIO_W191 (GPIO_PORT_BASE + 0x12FC)
+
+/* Word pin registers port 6 (R/W) */
+#define GPIO_W192 (GPIO_PORT_BASE + 0x1300)
+#define GPIO_W193 (GPIO_PORT_BASE + 0x1304)
+#define GPIO_W194 (GPIO_PORT_BASE + 0x1308)
+#define GPIO_W195 (GPIO_PORT_BASE + 0x130C)
+#define GPIO_W196 (GPIO_PORT_BASE + 0x1310)
+#define GPIO_W197 (GPIO_PORT_BASE + 0x1314)
+#define GPIO_W198 (GPIO_PORT_BASE + 0x1318)
+#define GPIO_W199 (GPIO_PORT_BASE + 0x131C)
+#define GPIO_W200 (GPIO_PORT_BASE + 0x1320)
+#define GPIO_W201 (GPIO_PORT_BASE + 0x1324)
+#define GPIO_W202 (GPIO_PORT_BASE + 0x1328)
+#define GPIO_W203 (GPIO_PORT_BASE + 0x132C)
+#define GPIO_W204 (GPIO_PORT_BASE + 0x1330)
+#define GPIO_W205 (GPIO_PORT_BASE + 0x1334)
+#define GPIO_W206 (GPIO_PORT_BASE + 0x1338)
+#define GPIO_W207 (GPIO_PORT_BASE + 0x133C)
+#define GPIO_W208 (GPIO_PORT_BASE + 0x1340)
+#define GPIO_W209 (GPIO_PORT_BASE + 0x1344)
+#define GPIO_W210 (GPIO_PORT_BASE + 0x1348)
+#define GPIO_W211 (GPIO_PORT_BASE + 0x134C)
+#define GPIO_W212 (GPIO_PORT_BASE + 0x1350)
+#define GPIO_W213 (GPIO_PORT_BASE + 0x1354)
+#define GPIO_W214 (GPIO_PORT_BASE + 0x1358)
+#define GPIO_W215 (GPIO_PORT_BASE + 0x135C)
+#define GPIO_W216 (GPIO_PORT_BASE + 0x1360)
+#define GPIO_W217 (GPIO_PORT_BASE + 0x1364)
+#define GPIO_W218 (GPIO_PORT_BASE + 0x1368)
+#define GPIO_W219 (GPIO_PORT_BASE + 0x136C)
+#define GPIO_W220 (GPIO_PORT_BASE + 0x1370)
+#define GPIO_W221 (GPIO_PORT_BASE + 0x1374)
+#define GPIO_W222 (GPIO_PORT_BASE + 0x1378)
+#define GPIO_W223 (GPIO_PORT_BASE + 0x137C)
+
+/* Word pin registers port 7 (R/W) */
+#define GPIO_W224 (GPIO_PORT_BASE + 0x1380)
+#define GPIO_W225 (GPIO_PORT_BASE + 0x1384)
+#define GPIO_W226 (GPIO_PORT_BASE + 0x1388)
+#define GPIO_W227 (GPIO_PORT_BASE + 0x138C)
+#define GPIO_W228 (GPIO_PORT_BASE + 0x1390)
+#define GPIO_W229 (GPIO_PORT_BASE + 0x1394)
+#define GPIO_W230 (GPIO_PORT_BASE + 0x1398)
+#define GPIO_W231 (GPIO_PORT_BASE + 0x139C)
+#define GPIO_W232 (GPIO_PORT_BASE + 0x13A0)
+#define GPIO_W233 (GPIO_PORT_BASE + 0x13A4)
+#define GPIO_W234 (GPIO_PORT_BASE + 0x13A8)
+#define GPIO_W235 (GPIO_PORT_BASE + 0x13AC)
+#define GPIO_W236 (GPIO_PORT_BASE + 0x13B0)
+#define GPIO_W237 (GPIO_PORT_BASE + 0x13B4)
+#define GPIO_W238 (GPIO_PORT_BASE + 0x13B8)
+#define GPIO_W239 (GPIO_PORT_BASE + 0x13BC)
+#define GPIO_W240 (GPIO_PORT_BASE + 0x13C0)
+#define GPIO_W241 (GPIO_PORT_BASE + 0x13C4)
+#define GPIO_W242 (GPIO_PORT_BASE + 0x13C8)
+#define GPIO_W243 (GPIO_PORT_BASE + 0x13CC)
+#define GPIO_W244 (GPIO_PORT_BASE + 0x13D0)
+#define GPIO_W245 (GPIO_PORT_BASE + 0x13D4)
+#define GPIO_W246 (GPIO_PORT_BASE + 0x13D8)
+#define GPIO_W247 (GPIO_PORT_BASE + 0x13DC)
+#define GPIO_W248 (GPIO_PORT_BASE + 0x13E0)
+#define GPIO_W249 (GPIO_PORT_BASE + 0x13E4)
+#define GPIO_W250 (GPIO_PORT_BASE + 0x13E8)
+#define GPIO_W251 (GPIO_PORT_BASE + 0x13EC)
+#define GPIO_W252 (GPIO_PORT_BASE + 0x13F0)
+#define GPIO_W253 (GPIO_PORT_BASE + 0x13F4)
+#define GPIO_W254 (GPIO_PORT_BASE + 0x13F8)
+#define GPIO_W255 (GPIO_PORT_BASE + 0x13FC)
+
+/* GPIO data direction register (GPIOn_DIR) */
+#define GPIO_DIR(port) MMIO32(port + 0x00)
+#define GPIO0_DIR GPIO_DIR(GPIO0)
+#define GPIO1_DIR GPIO_DIR(GPIO1)
+#define GPIO2_DIR GPIO_DIR(GPIO2)
+#define GPIO3_DIR GPIO_DIR(GPIO3)
+#define GPIO4_DIR GPIO_DIR(GPIO4)
+#define GPIO5_DIR GPIO_DIR(GPIO5)
+#define GPIO6_DIR GPIO_DIR(GPIO6)
+#define GPIO7_DIR GPIO_DIR(GPIO7)
+
+/* GPIO fast mask register (GPIOn_MASK) */
+#define GPIO_MASK(port) MMIO32(port + 0x80)
+#define GPIO0_MASK GPIO_MASK(GPIO0)
+#define GPIO1_MASK GPIO_MASK(GPIO1)
+#define GPIO2_MASK GPIO_MASK(GPIO2)
+#define GPIO3_MASK GPIO_MASK(GPIO3)
+#define GPIO4_MASK GPIO_MASK(GPIO4)
+#define GPIO5_MASK GPIO_MASK(GPIO5)
+#define GPIO6_MASK GPIO_MASK(GPIO6)
+#define GPIO7_MASK GPIO_MASK(GPIO7)
+
+/* GPIO port pin value register (GPIOn_PIN) */
+#define GPIO_PIN(port) MMIO32(port + 0x100)
+#define GPIO0_PIN GPIO_PIN(GPIO0)
+#define GPIO1_PIN GPIO_PIN(GPIO1)
+#define GPIO2_PIN GPIO_PIN(GPIO2)
+#define GPIO3_PIN GPIO_PIN(GPIO3)
+#define GPIO4_PIN GPIO_PIN(GPIO4)
+#define GPIO5_PIN GPIO_PIN(GPIO5)
+#define GPIO6_PIN GPIO_PIN(GPIO6)
+#define GPIO7_PIN GPIO_PIN(GPIO7)
+
+/* GPIO port masked pin value register (GPIOn_MPIN) */
+#define GPIO_MPIN(port) MMIO32(port + 0x180)
+#define GPIO0_MPIN GPIO_MPIN(GPIO0)
+#define GPIO1_MPIN GPIO_MPIN(GPIO1)
+#define GPIO2_MPIN GPIO_MPIN(GPIO2)
+#define GPIO3_MPIN GPIO_MPIN(GPIO3)
+#define GPIO4_MPIN GPIO_MPIN(GPIO4)
+#define GPIO5_MPIN GPIO_MPIN(GPIO5)
+#define GPIO6_MPIN GPIO_MPIN(GPIO6)
+#define GPIO7_MPIN GPIO_MPIN(GPIO7)
+
+/* GPIO port output set register (GPIOn_SET) */
+#define GPIO_SET(port) MMIO32(port + 0x200)
+#define GPIO0_SET GPIO_SET(GPIO0)
+#define GPIO1_SET GPIO_SET(GPIO1)
+#define GPIO2_SET GPIO_SET(GPIO2)
+#define GPIO3_SET GPIO_SET(GPIO3)
+#define GPIO4_SET GPIO_SET(GPIO4)
+#define GPIO5_SET GPIO_SET(GPIO5)
+#define GPIO6_SET GPIO_SET(GPIO6)
+#define GPIO7_SET GPIO_SET(GPIO7)
+
+/* GPIO port output clear register (GPIOn_CLR) */
+#define GPIO_CLR(port) MMIO32(port + 0x280)
+#define GPIO0_CLR GPIO_CLR(GPIO0)
+#define GPIO1_CLR GPIO_CLR(GPIO1)
+#define GPIO2_CLR GPIO_CLR(GPIO2)
+#define GPIO3_CLR GPIO_CLR(GPIO3)
+#define GPIO4_CLR GPIO_CLR(GPIO4)
+#define GPIO5_CLR GPIO_CLR(GPIO5)
+#define GPIO6_CLR GPIO_CLR(GPIO6)
+#define GPIO7_CLR GPIO_CLR(GPIO7)
+
+/* GPIO port toggle register (GPIOn_NOT) */
+#define GPIO_NOT(port) MMIO32(port + 0x300)
+#define GPIO0_NOT GPIO_NOT(GPIO0)
+#define GPIO1_NOT GPIO_NOT(GPIO1)
+#define GPIO2_NOT GPIO_NOT(GPIO2)
+#define GPIO3_NOT GPIO_NOT(GPIO3)
+#define GPIO4_NOT GPIO_NOT(GPIO4)
+#define GPIO5_NOT GPIO_NOT(GPIO5)
+#define GPIO6_NOT GPIO_NOT(GPIO6)
+#define GPIO7_NOT GPIO_NOT(GPIO7)
+
+/* TODO interrupts */
+
+BEGIN_DECLS
+
+void gpio_set(uint32_t gpioport, uint32_t gpios);
+void gpio_clear(uint32_t gpioport, uint32_t gpios);
+void gpio_toggle(uint32_t gpioport, uint32_t gpios);
+
+END_DECLS
+
+/**@}*/
+
+#endif