From c39f4d831709aa2a276ae1a79f9968e28949ae4e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ga=C3=ABtan=20Harter?= <gaetan.harter@fu-berlin.de>
Date: Fri, 8 Sep 2017 13:58:47 +0200
Subject: [PATCH] saul/gpio: add support to initialized state

---
 drivers/.Makefile.dep.swo           | Bin 0 -> 16384 bytes
 drivers/include/saul/periph.h       |   4 ++--
 sys/auto_init/saul/auto_init_gpio.c |   6 ++++++
 3 files changed, 8 insertions(+), 2 deletions(-)
 create mode 100644 drivers/.Makefile.dep.swo

diff --git a/drivers/.Makefile.dep.swo b/drivers/.Makefile.dep.swo
new file mode 100644
index 0000000000000000000000000000000000000000..db7d17170f1a1549c2bbae151e6b5b0624249bf5
GIT binary patch
literal 16384
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

literal 0
HcmV?d00001

diff --git a/drivers/include/saul/periph.h b/drivers/include/saul/periph.h
index ec6575cfa7..460a045477 100644
--- a/drivers/include/saul/periph.h
+++ b/drivers/include/saul/periph.h
@@ -34,8 +34,8 @@ extern "C" {
 #ifdef MODULE_SAUL_GPIO
 typedef enum {
     SAUL_GPIO_INVERTED   = (1 << 0),  /**< pin is used as inverted */
-    SAUL_GPIO_INIT_CLEAR = 1 << 1, /**< set pin inactive after initialization */
-    SAUL_GPIO_INIT_SET   = 1 << 2, /**< set pin active after initialization */
+    SAUL_GPIO_INIT_CLEAR = (1 << 1),  /**< set pin inactive after init */
+    SAUL_GPIO_INIT_SET   = (1 << 2),  /**< set pin active after init */
 } saul_gpio_flags_t;
 
 /**
diff --git a/sys/auto_init/saul/auto_init_gpio.c b/sys/auto_init/saul/auto_init_gpio.c
index 4de96eeced..c2a400a4bb 100644
--- a/sys/auto_init/saul/auto_init_gpio.c
+++ b/sys/auto_init/saul/auto_init_gpio.c
@@ -66,6 +66,12 @@ void auto_init_gpio(void)
         }
         /* initialize the GPIO pin */
         gpio_init(p->pin, p->mode);
+        /* set initial pin state if configured */
+        if (p->flags & (SAUL_GPIO_INIT_CLEAR | SAUL_GPIO_INIT_SET)) {
+            phydat_t s;
+            s.val[0] = (p->flags & SAUL_GPIO_INIT_SET);
+            saul_reg_entries[i].driver->write(p, &s);
+        }
         /* add to registry */
         saul_reg_add(&(saul_reg_entries[i]));
     }
-- 
GitLab