summaryrefslogtreecommitdiff
path: root/nuttx/configs/avr32dev1/src/up_buttons.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/configs/avr32dev1/src/up_buttons.c')
-rwxr-xr-xnuttx/configs/avr32dev1/src/up_buttons.c65
1 files changed, 35 insertions, 30 deletions
diff --git a/nuttx/configs/avr32dev1/src/up_buttons.c b/nuttx/configs/avr32dev1/src/up_buttons.c
index 37434d656..b891d8698 100755
--- a/nuttx/configs/avr32dev1/src/up_buttons.c
+++ b/nuttx/configs/avr32dev1/src/up_buttons.c
@@ -38,7 +38,9 @@
****************************************************************************/
#include <nuttx/config.h>
+#include "at91uc3_config.h"
+#include <sys/types.h>
#include <stdint.h>
#include <nuttx/irq.h>
@@ -59,9 +61,6 @@
* Private Data
****************************************************************************/
-static xcpt_t g_irqbutton1;
-static xcpt_t g_irqbutton2;
-
/****************************************************************************
* Private Functions
****************************************************************************/
@@ -89,7 +88,7 @@ uint8_t up_buttons(void)
uint8_t retval;
retval = at91uc3_gpioread(PINMUX_GPIO_BUTTON1) ? 0 : BUTTON1;
- retval |= sat91uc3_gpioread(PINMUX_GPIO_BUTTON2) ? 0 : BUTTON2;
+ retval |= at91uc3_gpioread(PINMUX_GPIO_BUTTON2) ? 0 : BUTTON2;
return retval;
}
@@ -98,30 +97,33 @@ uint8_t up_buttons(void)
* Name: up_irqbutton1
****************************************************************************/
-#ifdef CONFIG_GPIOB_IRQ
+#ifdef CONFIG_AVR32_GPIOIRQ
xcpt_t up_irqbutton1(xcpt_t irqhandler)
{
+#ifdef CONFIG_AVR32DEV_BUTTON1_IRQ
xcpt_t oldhandler;
- irqstate_t flags;
-
- /* Disable interrupts until we are done */
-
- flags = irqsave();
- /* Get the old button interrupt handler and save the new one */
+ /* Attach the handler */
- oldhandler = g_irqbutton1;
- g_irqbutton1 = irqhandler;
+ gpio_irqattach(GPIO_BUTTON1_IRQ, irqhandler, &oldhandler);
- /* Configure and enable the interrupt */
+ /* Enable/disable the interrupt */
-#warning "Missing Logic"
-
- irqrestore(flags);
+ if (irqhandler)
+ {
+ gpio_irqenable(GPIO_BUTTON1_IRQ);
+ }
+ else
+ {
+ gpio_irqdisable(GPIO_BUTTON1_IRQ);
+ }
/* Return the old button handler (so that it can be restored) */
return oldhandler;
+#else
+ return NULL;
+#endif
}
#endif
@@ -129,30 +131,33 @@ xcpt_t up_irqbutton1(xcpt_t irqhandler)
* Name: up_irqbutton2
****************************************************************************/
-#ifdef CONFIG_GPIOB_IRQ
+#ifdef CONFIG_AVR32_GPIOIRQ
xcpt_t up_irqbutton2(xcpt_t irqhandler)
{
+#ifdef CONFIG_AVR32DEV_BUTTON2_IRQ
xcpt_t oldhandler;
- irqstate_t flags;
- /* Disable interrupts until we are done */
+ /* Attach the handler */
- flags = irqsave();
+ gpio_irqattach(GPIO_BUTTON2_IRQ, irqhandler, &oldhandler);
- /* Get the old button interrupt handler and save the new one */
+ /* Enable/disable the interrupt */
- oldhandler = g_irqbutton2;
- g_irqbutton2 = irqhandler;
-
- /* Configure and enable the interrupt */
-
-#warning "Missing Logic"
-
- irqrestore(flags);
+ if (irqhandler)
+ {
+ gpio_irqenable(GPIO_BUTTON2_IRQ);
+ }
+ else
+ {
+ gpio_irqdisable(GPIO_BUTTON2_IRQ);
+ }
/* Return the old button handler (so that it can be restored) */
return oldhandler;
+#else
+ return NULL;
+#endif
}
#endif