diff --git a/cpu/cc2538/periph/gpio.c b/cpu/cc2538/periph/gpio.c index f9196ed0b6e56fd5841e922200f7b9472a9f7dd0..ad2934f4a98ee8d204e9c369bee754d61f0066b3 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 */