From 46b849ab49b88ef1516b9c3b07859f54ed347676 Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Thu, 22 Jun 2017 16:39:09 +1000
Subject: [PATCH] esp8266: Move mp_hal_pin_open_drain from esp_mphal.c to
 machine_pin.c.

It belongs with the other pin config functions in machine_pin.c.  Also,
esp_mphal.c is put in iRAM so this change saves about 300 bytes of iRAM
(and mp_hal_pin_open_drain is not a time critical function so doesn't
need to be in iRAM).
---
 esp8266/esp_mphal.c   | 22 ----------------------
 esp8266/machine_pin.c | 22 ++++++++++++++++++++++
 2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/esp8266/esp_mphal.c b/esp8266/esp_mphal.c
index 7ecc7776a..55f9a5894 100644
--- a/esp8266/esp_mphal.c
+++ b/esp8266/esp_mphal.c
@@ -208,28 +208,6 @@ void mp_hal_signal_dupterm_input(void) {
     system_os_post(DUPTERM_TASK_ID, 0, 0);
 }
 
-void mp_hal_pin_open_drain(mp_hal_pin_obj_t pin_id) {
-    const pyb_pin_obj_t *pin = &pyb_pin_obj[pin_id];
-
-    if (pin->phys_port == 16) {
-        // configure GPIO16 as input with output register holding 0
-        WRITE_PERI_REG(PAD_XPD_DCDC_CONF, (READ_PERI_REG(PAD_XPD_DCDC_CONF) & 0xffffffbc) | 1);
-        WRITE_PERI_REG(RTC_GPIO_CONF, READ_PERI_REG(RTC_GPIO_CONF) & ~1);
-        WRITE_PERI_REG(RTC_GPIO_ENABLE, (READ_PERI_REG(RTC_GPIO_ENABLE) & ~1)); // input
-        WRITE_PERI_REG(RTC_GPIO_OUT, (READ_PERI_REG(RTC_GPIO_OUT) & ~1)); // out=0
-        return;
-    }
-
-    ETS_GPIO_INTR_DISABLE();
-    PIN_FUNC_SELECT(pin->periph, pin->func);
-    GPIO_REG_WRITE(GPIO_PIN_ADDR(GPIO_ID_PIN(pin->phys_port)),
-        GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(pin->phys_port)))
-        | GPIO_PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_ENABLE)); // open drain
-    GPIO_REG_WRITE(GPIO_ENABLE_ADDRESS,
-        GPIO_REG_READ(GPIO_ENABLE_ADDRESS) | (1 << pin->phys_port));
-    ETS_GPIO_INTR_ENABLE();
-}
-
 // Get pointer to esf_buf bookkeeping structure
 void *ets_get_esf_buf_ctlblk(void) {
     // Get literal ptr before start of esf_rx_buf_alloc func
diff --git a/esp8266/machine_pin.c b/esp8266/machine_pin.c
index 385551578..febbc1587 100644
--- a/esp8266/machine_pin.c
+++ b/esp8266/machine_pin.c
@@ -163,6 +163,28 @@ void mp_hal_pin_output(mp_hal_pin_obj_t pin_id) {
     }
 }
 
+void mp_hal_pin_open_drain(mp_hal_pin_obj_t pin_id) {
+    const pyb_pin_obj_t *pin = &pyb_pin_obj[pin_id];
+
+    if (pin->phys_port == 16) {
+        // configure GPIO16 as input with output register holding 0
+        WRITE_PERI_REG(PAD_XPD_DCDC_CONF, (READ_PERI_REG(PAD_XPD_DCDC_CONF) & 0xffffffbc) | 1);
+        WRITE_PERI_REG(RTC_GPIO_CONF, READ_PERI_REG(RTC_GPIO_CONF) & ~1);
+        WRITE_PERI_REG(RTC_GPIO_ENABLE, (READ_PERI_REG(RTC_GPIO_ENABLE) & ~1)); // input
+        WRITE_PERI_REG(RTC_GPIO_OUT, (READ_PERI_REG(RTC_GPIO_OUT) & ~1)); // out=0
+        return;
+    }
+
+    ETS_GPIO_INTR_DISABLE();
+    PIN_FUNC_SELECT(pin->periph, pin->func);
+    GPIO_REG_WRITE(GPIO_PIN_ADDR(GPIO_ID_PIN(pin->phys_port)),
+        GPIO_REG_READ(GPIO_PIN_ADDR(GPIO_ID_PIN(pin->phys_port)))
+        | GPIO_PIN_PAD_DRIVER_SET(GPIO_PAD_DRIVER_ENABLE)); // open drain
+    GPIO_REG_WRITE(GPIO_ENABLE_ADDRESS,
+        GPIO_REG_READ(GPIO_ENABLE_ADDRESS) | (1 << pin->phys_port));
+    ETS_GPIO_INTR_ENABLE();
+}
+
 int pin_get(uint pin) {
     if (pin == 16) {
         return READ_PERI_REG(RTC_GPIO_IN_DATA) & 1;
-- 
GitLab