summaryrefslogtreecommitdiff
path: root/nuttx/configs/sam4l-xplained
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/configs/sam4l-xplained')
-rw-r--r--nuttx/configs/sam4l-xplained/src/sam_buttons.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/nuttx/configs/sam4l-xplained/src/sam_buttons.c b/nuttx/configs/sam4l-xplained/src/sam_buttons.c
index 13401d3ac..f0e7459fe 100644
--- a/nuttx/configs/sam4l-xplained/src/sam_buttons.c
+++ b/nuttx/configs/sam4l-xplained/src/sam_buttons.c
@@ -142,11 +142,24 @@ xcpt_t board_button_irq(int id, xcpt_t irqhandler)
oldhandler = *g_irqsw0;
*g_irqsw0 = irqhandler;
- /* Configure the interrupt */
+ /* Are we attaching or detaching? */
+
+ if (irqhandler != NULL)
+ {
+ /* Configure the interrupt */
+
+ sam_gpioirq(IRQ_SW0);
+ (void)irq_attach(IRQ_SW0, irqhandler);
+ sam_gpioirqenable(IRQ_SW0);
+ }
+ else
+ {
+ /* Detach and disable the interrupt */
+
+ (void)irq_detach(IRQ_SW0)
+ sam_gpioirqdisable(IRQ_SW0);
+ }
- sam_gpioirq(IRQ_SW0);
- (void)irq_attach(IRQ_SW0, irqhandler);
- sam_gpioirqenable(IRQ_SW0);
irqrestore(flags);
}