summaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/include/lm3s/irq.h
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-05-14 20:50:43 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-05-14 20:50:43 +0000
commit6ef9860d17c1a56a82e225c2dd3828a3e36d890a (patch)
treef477f6a8cf1e152801f1e863b322de1378bf53cf /nuttx/arch/arm/include/lm3s/irq.h
parentee00fd9d222a61ca9a36197a0bd618f4ac36e7fd (diff)
downloadnuttx-6ef9860d17c1a56a82e225c2dd3828a3e36d890a.tar.gz
nuttx-6ef9860d17c1a56a82e225c2dd3828a3e36d890a.tar.bz2
nuttx-6ef9860d17c1a56a82e225c2dd3828a3e36d890a.zip
Add GPIO IRQ logic
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1779 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/include/lm3s/irq.h')
-rw-r--r--nuttx/arch/arm/include/lm3s/irq.h150
1 files changed, 150 insertions, 0 deletions
diff --git a/nuttx/arch/arm/include/lm3s/irq.h b/nuttx/arch/arm/include/lm3s/irq.h
index 6714c909a..68df2e4b6 100644
--- a/nuttx/arch/arm/include/lm3s/irq.h
+++ b/nuttx/arch/arm/include/lm3s/irq.h
@@ -46,6 +46,7 @@
#include <nuttx/config.h>
#include <sys/types.h>
+#include <nuttx/irq.h>
/************************************************************************************
* Definitions
@@ -121,6 +122,124 @@
#define NR_IRQS (60) /* Really only 43 */
+/* GPIO IRQs -- Note that support for individual GPIO ports can
+ * be disabled in order to reduce the size of the implemenation.
+ */
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOA_IRQS
+# define LM3S_IRQ_GPIOA_0 (NR_IRQS + 0)
+# define LM3S_IRQ_GPIOA_1 (NR_IRQS + 1)
+# define LM3S_IRQ_GPIOA_2 (NR_IRQS + 2)
+# define LM3S_IRQ_GPIOA_3 (NR_IRQS + 3)
+# define LM3S_IRQ_GPIOA_4 (NR_IRQS + 4)
+# define LM3S_IRQ_GPIOA_5 (NR_IRQS + 5)
+# define LM3S_IRQ_GPIOA_6 (NR_IRQS + 6)
+# define LM3S_IRQ_GPIOA_7 (NR_IRQS + 7)
+# define _NGPIOAIRQS (NR_IRQS + 8)
+#else
+# define _NGPIOAIRQS NR_IRQS
+#endif
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOB_IRQS
+# define LM3S_IRQ_GPIOB_0 (_NGPIOAIRQS + 0)
+# define LM3S_IRQ_GPIOB_1 (_NGPIOAIRQS + 1)
+# define LM3S_IRQ_GPIOB_2 (_NGPIOAIRQS + 2)
+# define LM3S_IRQ_GPIOB_3 (_NGPIOAIRQS + 3)
+# define LM3S_IRQ_GPIOB_4 (_NGPIOAIRQS + 4)
+# define LM3S_IRQ_GPIOB_5 (_NGPIOAIRQS + 5)
+# define LM3S_IRQ_GPIOB_6 (_NGPIOAIRQS + 6)
+# define LM3S_IRQ_GPIOB_7 (_NGPIOAIRQS + 7)
+# define _NGPIOBIRQS (_NGPIOAIRQS + 8)
+#else
+# define _NGPIOBIRQS _NGPIOAIRQS
+#endif
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOC_IRQS
+# define LM3S_IRQ_GPIOC_0 (_NGPIOBIRQS + 0)
+# define LM3S_IRQ_GPIOC_1 (_NGPIOBIRQS + 1)
+# define LM3S_IRQ_GPIOC_2 (_NGPIOBIRQS + 2)
+# define LM3S_IRQ_GPIOC_3 (_NGPIOBIRQS + 3)
+# define LM3S_IRQ_GPIOC_4 (_NGPIOBIRQS + 4)
+# define LM3S_IRQ_GPIOC_5 (_NGPIOBIRQS + 5)
+# define LM3S_IRQ_GPIOC_6 (_NGPIOBIRQS + 6)
+# define LM3S_IRQ_GPIOC_7 (_NGPIOBIRQS + 7)
+# define _NGPIOCIRQS (_NGPIOBIRQS + 8)
+#else
+# define _NGPIOCIRQS _NGPIOBIRQS
+#endif
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOD_IRQS
+# define LM3S_IRQ_GPIOD_0 (_NGPIOCIRQS + 0)
+# define LM3S_IRQ_GPIOD_1 (_NGPIOCIRQS + 1)
+# define LM3S_IRQ_GPIOD_2 (_NGPIOCIRQS + 2)
+# define LM3S_IRQ_GPIOD_3 (_NGPIOCIRQS + 3)
+# define LM3S_IRQ_GPIOD_4 (_NGPIOCIRQS + 4)
+# define LM3S_IRQ_GPIOD_5 (_NGPIOCIRQS + 5)
+# define LM3S_IRQ_GPIOD_6 (_NGPIOCIRQS + 6)
+# define LM3S_IRQ_GPIOD_7 (_NGPIOCIRQS + 7)
+# define _NGPIODIRQS (_NGPIOCIRQS + 8)
+#else
+# define _NGPIODIRQS _NGPIOCIRQS
+#endif
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOE_IRQS
+# define LM3S_IRQ_GPIOE_0 (_NGPIODIRQS + 0)
+# define LM3S_IRQ_GPIOE_1 (_NGPIODIRQS + 1)
+# define LM3S_IRQ_GPIOE_2 (_NGPIODIRQS + 2)
+# define LM3S_IRQ_GPIOE_3 (_NGPIODIRQS + 3)
+# define LM3S_IRQ_GPIOE_4 (_NGPIODIRQS + 4)
+# define LM3S_IRQ_GPIOE_5 (_NGPIODIRQS + 5)
+# define LM3S_IRQ_GPIOE_6 (_NGPIODIRQS + 6)
+# define LM3S_IRQ_GPIOE_7 (_NGPIODIRQS + 7)
+# define _NGPIOEIRQS (_NGPIODIRQS + 8)
+#else
+# define _NGPIOEIRQS _NGPIODIRQS
+#endif
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOF_IRQS
+# define LM3S_IRQ_GPIOF_0 (_NGPIOEIRQS + 0)
+# define LM3S_IRQ_GPIOF_1 (_NGPIOEIRQS + 1)
+# define LM3S_IRQ_GPIOF_2 (_NGPIOEIRQS + 2)
+# define LM3S_IRQ_GPIOF_3 (_NGPIOEIRQS + 3)
+# define LM3S_IRQ_GPIOF_4 (_NGPIOEIRQS + 4)
+# define LM3S_IRQ_GPIOF_5 (_NGPIOEIRQS + 5)
+# define LM3S_IRQ_GPIOF_6 (_NGPIOEIRQS + 6)
+# define LM3S_IRQ_GPIOF_7 (_NGPIOEIRQS + 7)
+# define _NGPIOFIRQS (_NGPIOEIRQS + 8)
+#else
+# define _NGPIOFIRQS _NGPIOEIRQS
+#endif
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOG_IRQS
+# define LM3S_IRQ_GPIOG_0 (_NGPIOFIRQS + 0)
+# define LM3S_IRQ_GPIOG_1 (_NGPIOFIRQS + 1)
+# define LM3S_IRQ_GPIOG_2 (_NGPIOFIRQS + 2)
+# define LM3S_IRQ_GPIOG_3 (_NGPIOFIRQS + 3)
+# define LM3S_IRQ_GPIOG_4 (_NGPIOFIRQS + 4)
+# define LM3S_IRQ_GPIOG_5 (_NGPIOFIRQS + 5)
+# define LM3S_IRQ_GPIOG_6 (_NGPIOFIRQS + 6)
+# define LM3S_IRQ_GPIOG_7 (_NGPIOFIRQS + 7)
+# define _NGPIOGIRQS (_NGPIOFIRQS + 8)
+#else
+# define _NGPIOGIRQS _NGPIOFIRQS
+#endif
+
+#ifndef CONFIG_LM3S_DISABLE_GPIOH_IRQS
+# define LM3S_IRQ_GPIOH_0 (_NGPIOGIRQS + 0)
+# define LM3S_IRQ_GPIOH_1 (_NGPIOGIRQS + 1)
+# define LM3S_IRQ_GPIOH_2 (_NGPIOGIRQS + 2)
+# define LM3S_IRQ_GPIOH_3 (_NGPIOGIRQS + 3)
+# define LM3S_IRQ_GPIOH_4 (_NGPIOGIRQS + 4)
+# define LM3S_IRQ_GPIOH_5 (_NGPIOGIRQS + 5)
+# define LM3S_IRQ_GPIOH_6 (_NGPIOGIRQS + 6)
+# define LM3S_IRQ_GPIOH_7 (_NGPIOGIRQS + 7)
+# define _NGPIOHIRQS (_NGPIOGIRQS + 8)
+#else
+# define _NGPIOHIRQS _NGPIOGIRQS
+#endif
+
+#define NR_GPIO_IRQS (_NGPIOHIRQS - NR_IRQS)
+
/************************************************************************************
* Public Types
************************************************************************************/
@@ -141,6 +260,37 @@ extern "C" {
* Public Functions
************************************************************************************/
+/****************************************************************************
+ * Name: gpio_irqattach
+ *
+ * Description:
+ * Attach the interrupt handler 'isr' to the GPIO IRQ 'irq'
+ *
+ ****************************************************************************/
+
+EXTERN int gpio_irqattach(int irq, xcpt_t isr);
+#define gpio_irqdetach(isr) gpio_irqattach(isr, NULL)
+
+/****************************************************************************
+ * Name: gpio_irqenable
+ *
+ * Description:
+ * Enable the GPIO IRQ specified by 'irq'
+ *
+ ****************************************************************************/
+
+EXTERN void gpio_irqenable(int irq);
+
+/****************************************************************************
+ * Name: gpio_irqdisable
+ *
+ * Description:
+ * Disable the GPIO IRQ specified by 'irq'
+ *
+ ****************************************************************************/
+
+EXTERN void gpio_irqdisable(int irq);
+
#undef EXTERN
#ifdef __cplusplus
}