summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-03-10 08:12:35 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-03-10 08:12:35 -0600
commit5d6b2cc6c28dbb8ff7b79657c07e0090af9e467b (patch)
tree685b6d19cde3c39102d6342e57d5eedf2f0c3fcd
parent4fe89c2eb6d5895da7f3017f7f44e48e7892b3b9 (diff)
downloadnuttx-5d6b2cc6c28dbb8ff7b79657c07e0090af9e467b.tar.gz
nuttx-5d6b2cc6c28dbb8ff7b79657c07e0090af9e467b.tar.bz2
nuttx-5d6b2cc6c28dbb8ff7b79657c07e0090af9e467b.zip
Add support for TM4C GPIOs
-rwxr-xr-xnuttx/Documentation/NuttXCCodingStandard.html13
-rw-r--r--nuttx/TODO30
-rw-r--r--nuttx/arch/arm/src/tiva/chip/tiva_gpio.h280
-rw-r--r--nuttx/arch/arm/src/tiva/tiva_dumpgpio.c36
-rw-r--r--nuttx/arch/arm/src/tiva/tiva_gpio.c18
-rw-r--r--nuttx/arch/arm/src/tiva/tiva_gpio.h6
6 files changed, 341 insertions, 42 deletions
diff --git a/nuttx/Documentation/NuttXCCodingStandard.html b/nuttx/Documentation/NuttXCCodingStandard.html
index 946c63763..0693efc50 100755
--- a/nuttx/Documentation/NuttXCCodingStandard.html
+++ b/nuttx/Documentation/NuttXCCodingStandard.html
@@ -12,7 +12,7 @@
<h1><big><font color="#3c34ec">
<i>NuttX C Coding Standard</i>
</font></big></h1>
- <p>Last Updated: February 6, 2014</p>
+ <p>Last Updated: March 9, 2014</p>
</td>
</tr>
</table>
@@ -1747,7 +1747,7 @@ ptr = (FAR struct somestruct_s *)value;
</li>
<li>
<b>Braces in column 1</b>
- The opening and close braces of the compound statement mst be placed in column one.
+ The opening and close braces of the compound statement must be placed in column one.
</li>
<li>
<b>First definition or statement in column 3</b>.
@@ -1755,9 +1755,18 @@ ptr = (FAR struct somestruct_s *)value;
Standards for statements are covered in the <a href="#statements">following paragaraph</a>
</li>
<li>
+ <b>Local variables first</b>.
+ Because NuttX conforms to the older C89 standard, all variables that have scope over the entire compound statement must be defined at the beginning of the compound statement.
+ A single blank line must follow the local variable definitions.
+ </li>
+ <li>
<b>Long functions are discouraged</b>.
As a rule of thumb, the length of a function should be limited so that it would fit on a single page (if you were to print the source code).
</li>
+ <li>
+ <b>Space after the function boady</b>
+ A one (and only one) blank line must follow the closing right brace of the function body.
+ </li>
</ul>
<h2><a name="retvalues">Returned Values</a></h2>
diff --git a/nuttx/TODO b/nuttx/TODO
index b780cca39..84b6e8030 100644
--- a/nuttx/TODO
+++ b/nuttx/TODO
@@ -22,7 +22,7 @@ nuttx/
(5) Graphics subystem (graphics/)
(1) Pascal add-on (pcode/)
(1) Documentation (Documentation/)
- (6) Build system / Toolchains
+ (5) Build system / Toolchains
(5) Linux/Cywgin simulation (arch/sim)
(4) ARM (arch/arm/)
(1) ARM/C5471 (arch/arm/src/c5471/)
@@ -1402,34 +1402,6 @@ o Build system
Status: Open
Priority: Low.
- Title: kconfig-mconf NOT AVAILABLE IN NATIVE WINDOWS BUILD
- Description: NuttX is migrating to the use of the kconfig-frontends kconfig-mconf
- tool for all configurations. In NuttX 6.24, support for native
- Windows builds was added. However, thekconfig- mconf tool does not
- build to run natively under Windows.
-
- Some effort was spent trying to get a clean kconfig-mconf build under
- Windows. This is documented in the message thread beginning
- here: http://tech.groups.yahoo.com/group/nuttx/message/2900.
- The build was successfully completed using: MinGW-GCC, MSYS,
- additional Windows libraries, and additional MSYS libraries
- (MSYS is a variant of Cygwin so, presumably, Cygwin could
- have been used as well). However, on final testing, it was
- found that there are problems with text and numeric entry:
- http://tech.groups.yahoo.com/group/nuttx/message/2953. This
- was considered a show stopper and the changes were not checked
- in.
-
- Options: (1) Use kconfigs-conf (not kconfig-mconf). confis the text-only
- configuration tool, (2) fix kconfig-mconf, (3) write another variant
- of the configuration tool for windows, or (4) do all configuration
- under Cygwin or MSYS. I am doing (4) now, but this is very
- awkward because I have to set the apps path to ../apps (vs
- ..\apps) and CONFIG_WINDOWS_NATIVE=n for the 'make menuconfig'
- to run error free under windows. Very awkward!
- Status: Open, there are some workarounds, but none are good.
- Priority: High
-
o Linux/Cywgin simulation (arch/sim)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/nuttx/arch/arm/src/tiva/chip/tiva_gpio.h b/nuttx/arch/arm/src/tiva/chip/tiva_gpio.h
index f8fcca93b..8ad870663 100644
--- a/nuttx/arch/arm/src/tiva/chip/tiva_gpio.h
+++ b/nuttx/arch/arm/src/tiva/chip/tiva_gpio.h
@@ -70,7 +70,7 @@
#define TIVA_GPIO_LOCK_OFFSET 0x520 /* GPIO Lock */
#define TIVA_GPIO_CR_OFFSET 0x524 /* GPIO Commit */
-#ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIO_AMSEL_OFFSET 0x528 /* GPIO Analog Mode Select */
# define TIVA_GPIO_PCTL_OFFSET 0x52c /* GPIO Port Control */
# define TIVA_GPIO_ADCCTL_OFFSET 0x530 /* GPIO ADC Control */
@@ -115,7 +115,7 @@
# define TIVA_GPIOA_LOCK (TIVA_GPIOA_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOA_CR (TIVA_GPIOA_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOA_AMSEL (TIVA_GPIOA_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOA_PCTL (TIVA_GPIOA_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOA_ADCCTL (TIVA_GPIOA_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -158,7 +158,7 @@
# define TIVA_GPIOB_LOCK (TIVA_GPIOB_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOB_CR (TIVA_GPIOB_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOB_AMSEL (TIVA_GPIOB_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOB_PCTL (TIVA_GPIOB_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOB_ADCCTL (TIVA_GPIOB_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -201,7 +201,7 @@
# define TIVA_GPIOC_LOCK (TIVA_GPIOC_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOC_CR (TIVA_GPIOC_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOC_AMSEL (TIVA_GPIOC_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOC_PCTL (TIVA_GPIOC_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOC_ADCCTL (TIVA_GPIOC_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -244,7 +244,7 @@
# define TIVA_GPIOD_LOCK (TIVA_GPIOD_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOD_CR (TIVA_GPIOD_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOD_AMSEL (TIVA_GPIOD_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOD_PCTL (TIVA_GPIOD_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOD_ADCCTL (TIVA_GPIOD_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -287,7 +287,7 @@
# define TIVA_GPIOE_LOCK (TIVA_GPIOE_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOE_CR (TIVA_GPIOE_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOE_AMSEL (TIVA_GPIOE_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOE_PCTL (TIVA_GPIOE_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOE_ADCCTL (TIVA_GPIOE_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -330,7 +330,7 @@
# define TIVA_GPIOF_LOCK (TIVA_GPIOF_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOF_CR (TIVA_GPIOF_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOF_AMSEL (TIVA_GPIOF_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOF_PCTL (TIVA_GPIOF_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOF_ADCCTL (TIVA_GPIOF_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -373,7 +373,7 @@
# define TIVA_GPIOG_LOCK (TIVA_GPIOG_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOG_CR (TIVA_GPIOG_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOG_AMSEL (TIVA_GPIOG_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOG_PCTL (TIVA_GPIOG_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOG_ADCCTL (TIVA_GPIOG_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -416,7 +416,7 @@
# define TIVA_GPIOH_LOCK (TIVA_GPIOH_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOH_CR (TIVA_GPIOH_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOH_AMSEL (TIVA_GPIOH_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOH_PCTL (TIVA_GPIOH_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOH_ADCCTL (TIVA_GPIOH_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -459,7 +459,7 @@
# define TIVA_GPIOJ_LOCK (TIVA_GPIOJ_BASE + TIVA_GPIO_LOCK_OFFSET)
# define TIVA_GPIOJ_CR (TIVA_GPIOJ_BASE + TIVA_GPIO_CR_OFFSET)
-# ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define TIVA_GPIOJ_AMSEL (TIVA_GPIOJ_BASE + TIVA_GPIO_AMSEL_OFFSET)
# define TIVA_GPIOJ_PCTL (TIVA_GPIOJ_BASE + TIVA_GPIO_PCTL_OFFSET)
# define TIVA_GPIOJ_ADCCTL (TIVA_GPIOJ_BASE + TIVA_GPIO_ADCCTL_OFFSET)
@@ -479,11 +479,269 @@
# define TIVA_GPIOJ_PCELLID2 (TIVA_GPIOJ_BASE + TIVA_GPIO_PCELLID2_OFFSET)
# define TIVA_GPIOJ_PCELLID3 (TIVA_GPIOJ_BASE + TIVA_GPIO_PCELLID3_OFFSET)
+#elif TIVA_NPORTS > 9
+
+# define TIVA_GPIOK_DATA (TIVA_GPIOK_BASE + TIVA_GPIO_DATA_OFFSET)
+# define TIVA_GPIOK_DIR (TIVA_GPIOK_BASE + TIVA_GPIO_DIR_OFFSET)
+# define TIVA_GPIOK_IS (TIVA_GPIOK_BASE + TIVA_GPIO_IS_OFFSET)
+# define TIVA_GPIOK_IBE (TIVA_GPIOK_BASE + TIVA_GPIO_IBE_OFFSET)
+# define TIVA_GPIOK_IEV (TIVA_GPIOK_BASE + TIVA_GPIO_IEV_OFFSET)
+# define TIVA_GPIOK_IM (TIVA_GPIOK_BASE + TIVA_GPIO_IM_OFFSET)
+# define TIVA_GPIOK_RIS (TIVA_GPIOK_BASE + TIVA_GPIO_RIS_OFFSET)
+# define TIVA_GPIOK_MIS (TIVA_GPIOK_BASE + TIVA_GPIO_MIS_OFFSET)
+# define TIVA_GPIOK_ICR (TIVA_GPIOK_BASE + TIVA_GPIO_ICR_OFFSET)
+# define TIVA_GPIOK_AFSEL (TIVA_GPIOK_BASE + TIVA_GPIO_AFSEL_OFFSET)
+# define TIVA_GPIOK_DR2R (TIVA_GPIOK_BASE + TIVA_GPIO_DR2R_OFFSET)
+# define TIVA_GPIOK_DR4R (TIVA_GPIOK_BASE + TIVA_GPIO_DR4R_OFFSET)
+# define TIVA_GPIOK_DR8R (TIVA_GPIOK_BASE + TIVA_GPIO_DR8R_OFFSET)
+# define TIVA_GPIOK_ODR (TIVA_GPIOK_BASE + TIVA_GPIO_ODR_OFFSET)
+# define TIVA_GPIOK_PUR (TIVA_GPIOK_BASE + TIVA_GPIO_PUR_OFFSET)
+# define TIVA_GPIOK_PDR (TIVA_GPIOK_BASE + TIVA_GPIO_PDR_OFFSET)
+# define TIVA_GPIOK_SLR (TIVA_GPIOK_BASE + TIVA_GPIO_SLR_OFFSET)
+# define TIVA_GPIOK_DEN (TIVA_GPIOK_BASE + TIVA_GPIO_DEN_OFFSET)
+# define TIVA_GPIOK_LOCK (TIVA_GPIOK_BASE + TIVA_GPIO_LOCK_OFFSET)
+# define TIVA_GPIOK_CR (TIVA_GPIOK_BASE + TIVA_GPIO_CR_OFFSET)
+
+#if defined(LM4F) || defined(TM4C)
+# define TIVA_GPIOK_AMSEL (TIVA_GPIOK_BASE + TIVA_GPIO_AMSEL_OFFSET)
+# define TIVA_GPIOK_PCTL (TIVA_GPIOK_BASE + TIVA_GPIO_PCTL_OFFSET)
+# define TIVA_GPIOK_ADCCTL (TIVA_GPIOK_BASE + TIVA_GPIO_ADCCTL_OFFSET)
+# define TIVA_GPIOK_DMACTL (TIVA_GPIOK_BASE + TIVA_GPIO_DMACTL_OFFSET)
+# endif
+
+# define TIVA_GPIOK_PERIPHID4 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID4_OFFSET)
+# define TIVA_GPIOK_PERIPHID5 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID5_OFFSET)
+# define TIVA_GPIOK_PERIPHID6 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID6_OFFSET)
+# define TIVA_GPIOK_PERIPHID7 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID7_OFFSET)
+# define TIVA_GPIOK_PERIPHID0 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID0_OFFSET)
+# define TIVA_GPIOK_PERIPHID1 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID1_OFFSET)
+# define TIVA_GPIOK_PERIPHID2 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID2_OFFSET)
+# define TIVA_GPIOK_PERIPHID3 (TIVA_GPIOK_BASE + TIVA_GPIO_PERIPHID3_OFFSET)
+# define TIVA_GPIOK_PCELLID0 (TIVA_GPIOK_BASE + TIVA_GPIO_PCELLID0_OFFSET)
+# define TIVA_GPIOK_PCELLID1 (TIVA_GPIOK_BASE + TIVA_GPIO_PCELLID1_OFFSET)
+# define TIVA_GPIOK_PCELLID2 (TIVA_GPIOK_BASE + TIVA_GPIO_PCELLID2_OFFSET)
+# define TIVA_GPIOK_PCELLID3 (TIVA_GPIOK_BASE + TIVA_GPIO_PCELLID3_OFFSET)
+
+#elif TIVA_NPORTS > 10
+
+# define TIVA_GPIOL_DATA (TIVA_GPIOL_BASE + TIVA_GPIO_DATA_OFFSET)
+# define TIVA_GPIOL_DIR (TIVA_GPIOL_BASE + TIVA_GPIO_DIR_OFFSET)
+# define TIVA_GPIOL_IS (TIVA_GPIOL_BASE + TIVA_GPIO_IS_OFFSET)
+# define TIVA_GPIOL_IBE (TIVA_GPIOL_BASE + TIVA_GPIO_IBE_OFFSET)
+# define TIVA_GPIOL_IEV (TIVA_GPIOL_BASE + TIVA_GPIO_IEV_OFFSET)
+# define TIVA_GPIOL_IM (TIVA_GPIOL_BASE + TIVA_GPIO_IM_OFFSET)
+# define TIVA_GPIOL_RIS (TIVA_GPIOL_BASE + TIVA_GPIO_RIS_OFFSET)
+# define TIVA_GPIOL_MIS (TIVA_GPIOL_BASE + TIVA_GPIO_MIS_OFFSET)
+# define TIVA_GPIOL_ICR (TIVA_GPIOL_BASE + TIVA_GPIO_ICR_OFFSET)
+# define TIVA_GPIOL_AFSEL (TIVA_GPIOL_BASE + TIVA_GPIO_AFSEL_OFFSET)
+# define TIVA_GPIOL_DR2R (TIVA_GPIOL_BASE + TIVA_GPIO_DR2R_OFFSET)
+# define TIVA_GPIOL_DR4R (TIVA_GPIOL_BASE + TIVA_GPIO_DR4R_OFFSET)
+# define TIVA_GPIOL_DR8R (TIVA_GPIOL_BASE + TIVA_GPIO_DR8R_OFFSET)
+# define TIVA_GPIOL_ODR (TIVA_GPIOL_BASE + TIVA_GPIO_ODR_OFFSET)
+# define TIVA_GPIOL_PUR (TIVA_GPIOL_BASE + TIVA_GPIO_PUR_OFFSET)
+# define TIVA_GPIOL_PDR (TIVA_GPIOL_BASE + TIVA_GPIO_PDR_OFFSET)
+# define TIVA_GPIOL_SLR (TIVA_GPIOL_BASE + TIVA_GPIO_SLR_OFFSET)
+# define TIVA_GPIOL_DEN (TIVA_GPIOL_BASE + TIVA_GPIO_DEN_OFFSET)
+# define TIVA_GPIOL_LOCK (TIVA_GPIOL_BASE + TIVA_GPIO_LOCK_OFFSET)
+# define TIVA_GPIOL_CR (TIVA_GPIOL_BASE + TIVA_GPIO_CR_OFFSET)
+
+#if defined(LM4F) || defined(TM4C)
+# define TIVA_GPIOL_AMSEL (TIVA_GPIOL_BASE + TIVA_GPIO_AMSEL_OFFSET)
+# define TIVA_GPIOL_PCTL (TIVA_GPIOL_BASE + TIVA_GPIO_PCTL_OFFSET)
+# define TIVA_GPIOL_ADCCTL (TIVA_GPIOL_BASE + TIVA_GPIO_ADCCTL_OFFSET)
+# define TIVA_GPIOL_DMACTL (TIVA_GPIOL_BASE + TIVA_GPIO_DMACTL_OFFSET)
+# endif
+
+# define TIVA_GPIOL_PERIPHID4 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID4_OFFSET)
+# define TIVA_GPIOL_PERIPHID5 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID5_OFFSET)
+# define TIVA_GPIOL_PERIPHID6 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID6_OFFSET)
+# define TIVA_GPIOL_PERIPHID7 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID7_OFFSET)
+# define TIVA_GPIOL_PERIPHID0 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID0_OFFSET)
+# define TIVA_GPIOL_PERIPHID1 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID1_OFFSET)
+# define TIVA_GPIOL_PERIPHID2 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID2_OFFSET)
+# define TIVA_GPIOL_PERIPHID3 (TIVA_GPIOL_BASE + TIVA_GPIO_PERIPHID3_OFFSET)
+# define TIVA_GPIOL_PCELLID0 (TIVA_GPIOL_BASE + TIVA_GPIO_PCELLID0_OFFSET)
+# define TIVA_GPIOL_PCELLID1 (TIVA_GPIOL_BASE + TIVA_GPIO_PCELLID1_OFFSET)
+# define TIVA_GPIOL_PCELLID2 (TIVA_GPIOL_BASE + TIVA_GPIO_PCELLID2_OFFSET)
+# define TIVA_GPIOL_PCELLID3 (TIVA_GPIOL_BASE + TIVA_GPIO_PCELLID3_OFFSET)
+
+#elif TIVA_NPORTS > 11
+
+# define TIVA_GPIOM_DATA (TIVA_GPIOM_BASE + TIVA_GPIO_DATA_OFFSET)
+# define TIVA_GPIOM_DIR (TIVA_GPIOM_BASE + TIVA_GPIO_DIR_OFFSET)
+# define TIVA_GPIOM_IS (TIVA_GPIOM_BASE + TIVA_GPIO_IS_OFFSET)
+# define TIVA_GPIOM_IBE (TIVA_GPIOM_BASE + TIVA_GPIO_IBE_OFFSET)
+# define TIVA_GPIOM_IEV (TIVA_GPIOM_BASE + TIVA_GPIO_IEV_OFFSET)
+# define TIVA_GPIOM_IM (TIVA_GPIOM_BASE + TIVA_GPIO_IM_OFFSET)
+# define TIVA_GPIOM_RIS (TIVA_GPIOM_BASE + TIVA_GPIO_RIS_OFFSET)
+# define TIVA_GPIOM_MIS (TIVA_GPIOM_BASE + TIVA_GPIO_MIS_OFFSET)
+# define TIVA_GPIOM_ICR (TIVA_GPIOM_BASE + TIVA_GPIO_ICR_OFFSET)
+# define TIVA_GPIOM_AFSEL (TIVA_GPIOM_BASE + TIVA_GPIO_AFSEL_OFFSET)
+# define TIVA_GPIOM_DR2R (TIVA_GPIOM_BASE + TIVA_GPIO_DR2R_OFFSET)
+# define TIVA_GPIOM_DR4R (TIVA_GPIOM_BASE + TIVA_GPIO_DR4R_OFFSET)
+# define TIVA_GPIOM_DR8R (TIVA_GPIOM_BASE + TIVA_GPIO_DR8R_OFFSET)
+# define TIVA_GPIOM_ODR (TIVA_GPIOM_BASE + TIVA_GPIO_ODR_OFFSET)
+# define TIVA_GPIOM_PUR (TIVA_GPIOM_BASE + TIVA_GPIO_PUR_OFFSET)
+# define TIVA_GPIOM_PDR (TIVA_GPIOM_BASE + TIVA_GPIO_PDR_OFFSET)
+# define TIVA_GPIOM_SLR (TIVA_GPIOM_BASE + TIVA_GPIO_SLR_OFFSET)
+# define TIVA_GPIOM_DEN (TIVA_GPIOM_BASE + TIVA_GPIO_DEN_OFFSET)
+# define TIVA_GPIOM_LOCK (TIVA_GPIOM_BASE + TIVA_GPIO_LOCK_OFFSET)
+# define TIVA_GPIOM_CR (TIVA_GPIOM_BASE + TIVA_GPIO_CR_OFFSET)
+
+#if defined(LM4F) || defined(TM4C)
+# define TIVA_GPIOM_AMSEL (TIVA_GPIOM_BASE + TIVA_GPIO_AMSEL_OFFSET)
+# define TIVA_GPIOM_PCTL (TIVA_GPIOM_BASE + TIVA_GPIO_PCTL_OFFSET)
+# define TIVA_GPIOM_ADCCTL (TIVA_GPIOM_BASE + TIVA_GPIO_ADCCTL_OFFSET)
+# define TIVA_GPIOM_DMACTL (TIVA_GPIOM_BASE + TIVA_GPIO_DMACTL_OFFSET)
+# endif
+
+# define TIVA_GPIOM_PERIPHID4 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID4_OFFSET)
+# define TIVA_GPIOM_PERIPHID5 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID5_OFFSET)
+# define TIVA_GPIOM_PERIPHID6 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID6_OFFSET)
+# define TIVA_GPIOM_PERIPHID7 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID7_OFFSET)
+# define TIVA_GPIOM_PERIPHID0 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID0_OFFSET)
+# define TIVA_GPIOM_PERIPHID1 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID1_OFFSET)
+# define TIVA_GPIOM_PERIPHID2 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID2_OFFSET)
+# define TIVA_GPIOM_PERIPHID3 (TIVA_GPIOM_BASE + TIVA_GPIO_PERIPHID3_OFFSET)
+# define TIVA_GPIOM_PCELLID0 (TIVA_GPIOM_BASE + TIVA_GPIO_PCELLID0_OFFSET)
+# define TIVA_GPIOM_PCELLID1 (TIVA_GPIOM_BASE + TIVA_GPIO_PCELLID1_OFFSET)
+# define TIVA_GPIOM_PCELLID2 (TIVA_GPIOM_BASE + TIVA_GPIO_PCELLID2_OFFSET)
+# define TIVA_GPIOM_PCELLID3 (TIVA_GPIOM_BASE + TIVA_GPIO_PCELLID3_OFFSET)
+
+#elif TIVA_NPORTS > 12
+
+# define TIVA_GPION_DATA (TIVA_GPION_BASE + TIVA_GPIO_DATA_OFFSET)
+# define TIVA_GPION_DIR (TIVA_GPION_BASE + TIVA_GPIO_DIR_OFFSET)
+# define TIVA_GPION_IS (TIVA_GPION_BASE + TIVA_GPIO_IS_OFFSET)
+# define TIVA_GPION_IBE (TIVA_GPION_BASE + TIVA_GPIO_IBE_OFFSET)
+# define TIVA_GPION_IEV (TIVA_GPION_BASE + TIVA_GPIO_IEV_OFFSET)
+# define TIVA_GPION_IM (TIVA_GPION_BASE + TIVA_GPIO_IM_OFFSET)
+# define TIVA_GPION_RIS (TIVA_GPION_BASE + TIVA_GPIO_RIS_OFFSET)
+# define TIVA_GPION_MIS (TIVA_GPION_BASE + TIVA_GPIO_MIS_OFFSET)
+# define TIVA_GPION_ICR (TIVA_GPION_BASE + TIVA_GPIO_ICR_OFFSET)
+# define TIVA_GPION_AFSEL (TIVA_GPION_BASE + TIVA_GPIO_AFSEL_OFFSET)
+# define TIVA_GPION_DR2R (TIVA_GPION_BASE + TIVA_GPIO_DR2R_OFFSET)
+# define TIVA_GPION_DR4R (TIVA_GPION_BASE + TIVA_GPIO_DR4R_OFFSET)
+# define TIVA_GPION_DR8R (TIVA_GPION_BASE + TIVA_GPIO_DR8R_OFFSET)
+# define TIVA_GPION_ODR (TIVA_GPION_BASE + TIVA_GPIO_ODR_OFFSET)
+# define TIVA_GPION_PUR (TIVA_GPION_BASE + TIVA_GPIO_PUR_OFFSET)
+# define TIVA_GPION_PDR (TIVA_GPION_BASE + TIVA_GPIO_PDR_OFFSET)
+# define TIVA_GPION_SLR (TIVA_GPION_BASE + TIVA_GPIO_SLR_OFFSET)
+# define TIVA_GPION_DEN (TIVA_GPION_BASE + TIVA_GPIO_DEN_OFFSET)
+# define TIVA_GPION_LOCK (TIVA_GPION_BASE + TIVA_GPIO_LOCK_OFFSET)
+# define TIVA_GPION_CR (TIVA_GPION_BASE + TIVA_GPIO_CR_OFFSET)
+
+#if defined(LM4F) || defined(TM4C)
+# define TIVA_GPION_AMSEL (TIVA_GPION_BASE + TIVA_GPIO_AMSEL_OFFSET)
+# define TIVA_GPION_PCTL (TIVA_GPION_BASE + TIVA_GPIO_PCTL_OFFSET)
+# define TIVA_GPION_ADCCTL (TIVA_GPION_BASE + TIVA_GPIO_ADCCTL_OFFSET)
+# define TIVA_GPION_DMACTL (TIVA_GPION_BASE + TIVA_GPIO_DMACTL_OFFSET)
+# endif
+
+# define TIVA_GPION_PERIPHID4 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID4_OFFSET)
+# define TIVA_GPION_PERIPHID5 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID5_OFFSET)
+# define TIVA_GPION_PERIPHID6 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID6_OFFSET)
+# define TIVA_GPION_PERIPHID7 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID7_OFFSET)
+# define TIVA_GPION_PERIPHID0 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID0_OFFSET)
+# define TIVA_GPION_PERIPHID1 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID1_OFFSET)
+# define TIVA_GPION_PERIPHID2 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID2_OFFSET)
+# define TIVA_GPION_PERIPHID3 (TIVA_GPION_BASE + TIVA_GPIO_PERIPHID3_OFFSET)
+# define TIVA_GPION_PCELLID0 (TIVA_GPION_BASE + TIVA_GPIO_PCELLID0_OFFSET)
+# define TIVA_GPION_PCELLID1 (TIVA_GPION_BASE + TIVA_GPIO_PCELLID1_OFFSET)
+# define TIVA_GPION_PCELLID2 (TIVA_GPION_BASE + TIVA_GPIO_PCELLID2_OFFSET)
+# define TIVA_GPION_PCELLID3 (TIVA_GPION_BASE + TIVA_GPIO_PCELLID3_OFFSET)
+
+#elif TIVA_NPORTS > 13
+
+# define TIVA_GPIOP_DATA (TIVA_GPIOP_BASE + TIVA_GPIO_DATA_OFFSET)
+# define TIVA_GPIOP_DIR (TIVA_GPIOP_BASE + TIVA_GPIO_DIR_OFFSET)
+# define TIVA_GPIOP_IS (TIVA_GPIOP_BASE + TIVA_GPIO_IS_OFFSET)
+# define TIVA_GPIOP_IBE (TIVA_GPIOP_BASE + TIVA_GPIO_IBE_OFFSET)
+# define TIVA_GPIOP_IEV (TIVA_GPIOP_BASE + TIVA_GPIO_IEV_OFFSET)
+# define TIVA_GPIOP_IM (TIVA_GPIOP_BASE + TIVA_GPIO_IM_OFFSET)
+# define TIVA_GPIOP_RIS (TIVA_GPIOP_BASE + TIVA_GPIO_RIS_OFFSET)
+# define TIVA_GPIOP_MIS (TIVA_GPIOP_BASE + TIVA_GPIO_MIS_OFFSET)
+# define TIVA_GPIOP_ICR (TIVA_GPIOP_BASE + TIVA_GPIO_ICR_OFFSET)
+# define TIVA_GPIOP_AFSEL (TIVA_GPIOP_BASE + TIVA_GPIO_AFSEL_OFFSET)
+# define TIVA_GPIOP_DR2R (TIVA_GPIOP_BASE + TIVA_GPIO_DR2R_OFFSET)
+# define TIVA_GPIOP_DR4R (TIVA_GPIOP_BASE + TIVA_GPIO_DR4R_OFFSET)
+# define TIVA_GPIOP_DR8R (TIVA_GPIOP_BASE + TIVA_GPIO_DR8R_OFFSET)
+# define TIVA_GPIOP_ODR (TIVA_GPIOP_BASE + TIVA_GPIO_ODR_OFFSET)
+# define TIVA_GPIOP_PUR (TIVA_GPIOP_BASE + TIVA_GPIO_PUR_OFFSET)
+# define TIVA_GPIOP_PDR (TIVA_GPIOP_BASE + TIVA_GPIO_PDR_OFFSET)
+# define TIVA_GPIOP_SLR (TIVA_GPIOP_BASE + TIVA_GPIO_SLR_OFFSET)
+# define TIVA_GPIOP_DEN (TIVA_GPIOP_BASE + TIVA_GPIO_DEN_OFFSET)
+# define TIVA_GPIOP_LOCK (TIVA_GPIOP_BASE + TIVA_GPIO_LOCK_OFFSET)
+# define TIVA_GPIOP_CR (TIVA_GPIOP_BASE + TIVA_GPIO_CR_OFFSET)
+
+#if defined(LM4F) || defined(TM4C)
+# define TIVA_GPIOP_AMSEL (TIVA_GPIOP_BASE + TIVA_GPIO_AMSEL_OFFSET)
+# define TIVA_GPIOP_PCTL (TIVA_GPIOP_BASE + TIVA_GPIO_PCTL_OFFSET)
+# define TIVA_GPIOP_ADCCTL (TIVA_GPIOP_BASE + TIVA_GPIO_ADCCTL_OFFSET)
+# define TIVA_GPIOP_DMACTL (TIVA_GPIOP_BASE + TIVA_GPIO_DMACTL_OFFSET)
+# endif
+
+# define TIVA_GPIOP_PERIPHID4 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID4_OFFSET)
+# define TIVA_GPIOP_PERIPHID5 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID5_OFFSET)
+# define TIVA_GPIOP_PERIPHID6 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID6_OFFSET)
+# define TIVA_GPIOP_PERIPHID7 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID7_OFFSET)
+# define TIVA_GPIOP_PERIPHID0 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID0_OFFSET)
+# define TIVA_GPIOP_PERIPHID1 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID1_OFFSET)
+# define TIVA_GPIOP_PERIPHID2 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID2_OFFSET)
+# define TIVA_GPIOP_PERIPHID3 (TIVA_GPIOP_BASE + TIVA_GPIO_PERIPHID3_OFFSET)
+# define TIVA_GPIOP_PCELLID0 (TIVA_GPIOP_BASE + TIVA_GPIO_PCELLID0_OFFSET)
+# define TIVA_GPIOP_PCELLID1 (TIVA_GPIOP_BASE + TIVA_GPIO_PCELLID1_OFFSET)
+# define TIVA_GPIOP_PCELLID2 (TIVA_GPIOP_BASE + TIVA_GPIO_PCELLID2_OFFSET)
+# define TIVA_GPIOP_PCELLID3 (TIVA_GPIOP_BASE + TIVA_GPIO_PCELLID3_OFFSET)
+
+#elif TIVA_NPORTS > 14
+
+# define TIVA_GPIOQ_DATA (TIVA_GPIOQ_BASE + TIVA_GPIO_DATA_OFFSET)
+# define TIVA_GPIOQ_DIR (TIVA_GPIOQ_BASE + TIVA_GPIO_DIR_OFFSET)
+# define TIVA_GPIOQ_IS (TIVA_GPIOQ_BASE + TIVA_GPIO_IS_OFFSET)
+# define TIVA_GPIOQ_IBE (TIVA_GPIOQ_BASE + TIVA_GPIO_IBE_OFFSET)
+# define TIVA_GPIOQ_IEV (TIVA_GPIOQ_BASE + TIVA_GPIO_IEV_OFFSET)
+# define TIVA_GPIOQ_IM (TIVA_GPIOQ_BASE + TIVA_GPIO_IM_OFFSET)
+# define TIVA_GPIOQ_RIS (TIVA_GPIOQ_BASE + TIVA_GPIO_RIS_OFFSET)
+# define TIVA_GPIOQ_MIS (TIVA_GPIOQ_BASE + TIVA_GPIO_MIS_OFFSET)
+# define TIVA_GPIOQ_ICR (TIVA_GPIOQ_BASE + TIVA_GPIO_ICR_OFFSET)
+# define TIVA_GPIOQ_AFSEL (TIVA_GPIOQ_BASE + TIVA_GPIO_AFSEL_OFFSET)
+# define TIVA_GPIOQ_DR2R (TIVA_GPIOQ_BASE + TIVA_GPIO_DR2R_OFFSET)
+# define TIVA_GPIOQ_DR4R (TIVA_GPIOQ_BASE + TIVA_GPIO_DR4R_OFFSET)
+# define TIVA_GPIOQ_DR8R (TIVA_GPIOQ_BASE + TIVA_GPIO_DR8R_OFFSET)
+# define TIVA_GPIOQ_ODR (TIVA_GPIOQ_BASE + TIVA_GPIO_ODR_OFFSET)
+# define TIVA_GPIOQ_PUR (TIVA_GPIOQ_BASE + TIVA_GPIO_PUR_OFFSET)
+# define TIVA_GPIOQ_PDR (TIVA_GPIOQ_BASE + TIVA_GPIO_PDR_OFFSET)
+# define TIVA_GPIOQ_SLR (TIVA_GPIOQ_BASE + TIVA_GPIO_SLR_OFFSET)
+# define TIVA_GPIOQ_DEN (TIVA_GPIOQ_BASE + TIVA_GPIO_DEN_OFFSET)
+# define TIVA_GPIOQ_LOCK (TIVA_GPIOQ_BASE + TIVA_GPIO_LOCK_OFFSET)
+# define TIVA_GPIOQ_CR (TIVA_GPIOQ_BASE + TIVA_GPIO_CR_OFFSET)
+
+#if defined(LM4F) || defined(TM4C)
+# define TIVA_GPIOQ_AMSEL (TIVA_GPIOQ_BASE + TIVA_GPIO_AMSEL_OFFSET)
+# define TIVA_GPIOQ_PCTL (TIVA_GPIOQ_BASE + TIVA_GPIO_PCTL_OFFSET)
+# define TIVA_GPIOQ_ADCCTL (TIVA_GPIOQ_BASE + TIVA_GPIO_ADCCTL_OFFSET)
+# define TIVA_GPIOQ_DMACTL (TIVA_GPIOQ_BASE + TIVA_GPIO_DMACTL_OFFSET)
+# endif
+
+# define TIVA_GPIOQ_PERIPHID4 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID4_OFFSET)
+# define TIVA_GPIOQ_PERIPHID5 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID5_OFFSET)
+# define TIVA_GPIOQ_PERIPHID6 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID6_OFFSET)
+# define TIVA_GPIOQ_PERIPHID7 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID7_OFFSET)
+# define TIVA_GPIOQ_PERIPHID0 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID0_OFFSET)
+# define TIVA_GPIOQ_PERIPHID1 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID1_OFFSET)
+# define TIVA_GPIOQ_PERIPHID2 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID2_OFFSET)
+# define TIVA_GPIOQ_PERIPHID3 (TIVA_GPIOQ_BASE + TIVA_GPIO_PERIPHID3_OFFSET)
+# define TIVA_GPIOQ_PCELLID0 (TIVA_GPIOQ_BASE + TIVA_GPIO_PCELLID0_OFFSET)
+# define TIVA_GPIOQ_PCELLID1 (TIVA_GPIOQ_BASE + TIVA_GPIO_PCELLID1_OFFSET)
+# define TIVA_GPIOQ_PCELLID2 (TIVA_GPIOQ_BASE + TIVA_GPIO_PCELLID2_OFFSET)
+# define TIVA_GPIOQ_PCELLID3 (TIVA_GPIOQ_BASE + TIVA_GPIO_PCELLID3_OFFSET)
+
#endif /* TIVA_NPORTS */
/* GPIO Register Bitfield Definitions ***********************************************/
-#ifdef LM4F
+#if defined(LM4F) || defined(TM4C)
# define GPIO_PCTL_PMC_SHIFT(n) ((n) << 2)
# define GPIO_PCTL_PMC_MASK(n) (15 << GPIO_PCTL_PMC_SHIFT(n))
diff --git a/nuttx/arch/arm/src/tiva/tiva_dumpgpio.c b/nuttx/arch/arm/src/tiva/tiva_dumpgpio.c
index 40a182be1..d6c562e1e 100644
--- a/nuttx/arch/arm/src/tiva/tiva_dumpgpio.c
+++ b/nuttx/arch/arm/src/tiva/tiva_dumpgpio.c
@@ -89,6 +89,24 @@ static const uintptr_t g_gpiobase[TIVA_NPORTS] =
#if TIVA_NPORTS > 8
, TIVA_GPIOJ_BASE
#endif
+#if TIVA_NPORTS > 9
+ , TIVA_GPIOK_BASE
+#endif
+#if TIVA_NPORTS > 10
+ , TIVA_GPIOL_BASE
+#endif
+#if TIVA_NPORTS > 11
+ , TIVA_GPIOM_BASE
+#endif
+#if TIVA_NPORTS > 12
+ , TIVA_GPION_BASE
+#endif
+#if TIVA_NPORTS > 13
+ , TIVA_GPIOP_BASE
+#endif
+#if TIVA_NPORTS > 14
+ , TIVA_GPIOQ_BASE
+#endif
};
static const char g_portchar[TIVA_NPORTS] =
@@ -120,6 +138,24 @@ static const char g_portchar[TIVA_NPORTS] =
#if TIVA_NPORTS > 8
, 'J'
#endif
+#if TIVA_NPORTS > 9
+ , 'K'
+#endif
+#if TIVA_NPORTS > 10
+ , 'L'
+#endif
+#if TIVA_NPORTS > 11
+ , 'M'
+#endif
+#if TIVA_NPORTS > 12
+ , 'N'
+#endif
+#if TIVA_NPORTS > 13
+ , 'P'
+#endif
+#if TIVA_NPORTS > 14
+ , 'Q'
+#endif
};
/****************************************************************************
diff --git a/nuttx/arch/arm/src/tiva/tiva_gpio.c b/nuttx/arch/arm/src/tiva/tiva_gpio.c
index c8964ac26..f9c477ccb 100644
--- a/nuttx/arch/arm/src/tiva/tiva_gpio.c
+++ b/nuttx/arch/arm/src/tiva/tiva_gpio.c
@@ -175,6 +175,24 @@ static const uintptr_t g_gpiobase[TIVA_NPORTS] =
#if TIVA_NPORTS > 8
, TIVA_GPIOJ_BASE
#endif
+#if TIVA_NPORTS > 9
+ , TIVA_GPIOK_BASE
+#endif
+#if TIVA_NPORTS > 10
+ , TIVA_GPIOL_BASE
+#endif
+#if TIVA_NPORTS > 11
+ , TIVA_GPIOM_BASE
+#endif
+#if TIVA_NPORTS > 12
+ , TIVA_GPION_BASE
+#endif
+#if TIVA_NPORTS > 13
+ , TIVA_GPIOP_BASE
+#endif
+#if TIVA_NPORTS > 14
+ , TIVA_GPIOQ_BASE
+#endif
};
/****************************************************************************
diff --git a/nuttx/arch/arm/src/tiva/tiva_gpio.h b/nuttx/arch/arm/src/tiva/tiva_gpio.h
index 44928c9af..a0f46d8f6 100644
--- a/nuttx/arch/arm/src/tiva/tiva_gpio.h
+++ b/nuttx/arch/arm/src/tiva/tiva_gpio.h
@@ -167,6 +167,12 @@
# define GPIO_PORTG (6 << GPIO_PORT_SHIFT) /* GPIOG */
# define GPIO_PORTH (7 << GPIO_PORT_SHIFT) /* GPIOH */
# define GPIO_PORTJ (8 << GPIO_PORT_SHIFT) /* GPIOJ */
+# define GPIO_PORTK (9 << GPIO_PORT_SHIFT) /* GPIOK */
+# define GPIO_PORTL (10 << GPIO_PORT_SHIFT) /* GPIOL */
+# define GPIO_PORTM (11 << GPIO_PORT_SHIFT) /* GPIOM */
+# define GPIO_PORTN (12 << GPIO_PORT_SHIFT) /* GPION */
+# define GPIO_PORTP (13 << GPIO_PORT_SHIFT) /* GPIOP */
+# define GPIO_PORTQ (14 << GPIO_PORT_SHIFT) /* GPIOQ */
/* This identifies the pin number in the port:
* .... .... .... .... .... .... .... .BBB