From 36d88c2c405527891ed957425bb8c7fbc285ef80 Mon Sep 17 00:00:00 2001
From: Hauke Petersen <hauke.petersen@fu-berlin.de>
Date: Fri, 21 Sep 2018 08:16:37 +0200
Subject: [PATCH] cpu/cc2538/gpio: use gpio_irq feature

---
 cpu/cc2538/periph/gpio.c | 64 +++++++++++++++++++++-------------------
 1 file changed, 34 insertions(+), 30 deletions(-)

diff --git a/cpu/cc2538/periph/gpio.c b/cpu/cc2538/periph/gpio.c
index f9196ed0b6..ad2934f4a9 100644
--- a/cpu/cc2538/periph/gpio.c
+++ b/cpu/cc2538/periph/gpio.c
@@ -31,7 +31,9 @@
 
 #define MODE_NOTSUP         (0xff)
 
+#ifdef MODULE_PERIPH_GPIO_IRQ
 static gpio_isr_ctx_t isr_ctx[4][8];
+#endif
 
 /**
  * @brief Access GPIO low-level device
@@ -118,6 +120,37 @@ int gpio_init(gpio_t pin, gpio_mode_t mode)
     return 0;
 }
 
+int gpio_read(gpio_t pin)
+{
+    return (int)(gpio(pin)->DATA & _pin_mask(pin));
+}
+
+void gpio_set(gpio_t pin)
+{
+    gpio(pin)->DATA |= _pin_mask(pin);
+}
+
+void gpio_clear(gpio_t pin)
+{
+    gpio(pin)->DATA &= ~_pin_mask(pin);
+}
+
+void gpio_toggle(gpio_t pin)
+{
+    gpio(pin)->DATA ^= _pin_mask(pin);
+}
+
+void gpio_write(gpio_t pin, int value)
+{
+    if (value) {
+        gpio(pin)->DATA |= _pin_mask(pin);
+    }
+    else {
+        gpio(pin)->DATA &= ~_pin_mask(pin);
+    }
+}
+
+#ifdef MODULE_PERIPH_GPIO_IRQ
 int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank,
                   gpio_cb_t cb, void *arg)
 {
@@ -173,36 +206,6 @@ void gpio_irq_disable(gpio_t pin)
     gpio(pin)->IE &= ~_pin_mask(pin);
 }
 
-int gpio_read(gpio_t pin)
-{
-    return (int)(gpio(pin)->DATA & _pin_mask(pin));
-}
-
-void gpio_set(gpio_t pin)
-{
-    gpio(pin)->DATA |= _pin_mask(pin);
-}
-
-void gpio_clear(gpio_t pin)
-{
-    gpio(pin)->DATA &= ~_pin_mask(pin);
-}
-
-void gpio_toggle(gpio_t pin)
-{
-    gpio(pin)->DATA ^= _pin_mask(pin);
-}
-
-void gpio_write(gpio_t pin, int value)
-{
-    if (value) {
-        gpio(pin)->DATA |= _pin_mask(pin);
-    }
-    else {
-        gpio(pin)->DATA &= ~_pin_mask(pin);
-    }
-}
-
 static inline void handle_isr(uint8_t port_num)
 {
     cc2538_gpio_t *port  = ((cc2538_gpio_t *)GPIO_BASE) + port_num;
@@ -242,6 +245,7 @@ void isr_gpiod(void)
 {
     handle_isr(3);
 }
+#endif
 
 /* CC2538 specific add-on GPIO functions */
 
-- 
GitLab