From b4af009efe88581c9f1dd027f81d8e9a4d37b52c Mon Sep 17 00:00:00 2001
From: Angus Gratton <gus@projectgus.com>
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 <esp/gpio.h>
+
+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);
+}
+