From b4af009efe88581c9f1dd027f81d8e9a4d37b52c Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Tue, 1 Dec 2015 09:56:40 +1100 Subject: [PATCH] Add esp_gpio.c, including gpio_enable() function Fix build broken since 812c2fef (unclear why previous commits didn't break?) --- core/esp_gpio.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 core/esp_gpio.c diff --git a/core/esp_gpio.c b/core/esp_gpio.c new file mode 100644 index 0000000..23ddf22 --- /dev/null +++ b/core/esp_gpio.c @@ -0,0 +1,39 @@ +/* GPIO management functions + * + * Part of esp-open-rtos + * Copyright (C) 2015 Angus Gratton + * BSD Licensed as described in the file LICENSE + */ +#include + +void gpio_enable(const uint8_t gpio_num, const gpio_direction_t direction) +{ + uint32_t iomux_flags; + + switch(direction) { + case GPIO_INPUT: + iomux_flags = 0; + break; + case GPIO_OUTPUT: + iomux_flags = IOMUX_PIN_OUTPUT_ENABLE; + break; + case GPIO_OUT_OPEN_DRAIN: + iomux_flags = IOMUX_PIN_OUTPUT_ENABLE; + break; + case GPIO_INPUT_PULLUP: + iomux_flags = IOMUX_PIN_PULLUP; + break; + default: + return; /* Invalid direction flag */ + } + iomux_set_gpio_function(gpio_num, iomux_flags); + if(direction == GPIO_OUT_OPEN_DRAIN) + GPIO.CONF[gpio_num] |= GPIO_CONF_OPEN_DRAIN; + else + GPIO.CONF[gpio_num] &= ~GPIO_CONF_OPEN_DRAIN; + if (iomux_flags & IOMUX_PIN_OUTPUT_ENABLE) + GPIO.ENABLE_OUT_SET = BIT(gpio_num); + else + GPIO.ENABLE_OUT_CLEAR = BIT(gpio_num); +} +