base-files: gpio switch: set output value with direction
authorMathias Kresin <dev@kresin.me>
Thu, 21 Dec 2017 00:06:42 +0000 (01:06 +0100)
committerMathias Kresin <dev@kresin.me>
Tue, 9 Jan 2018 21:05:46 +0000 (22:05 +0100)
Use the "low" and "high" values to configure the GPIO as an output with
that initial value. It ensures that the gpio doesn't have a unwanted value
during the time the direction is set to ouput and the actual value is
applied.

We don't need to take care of the GPIO polarity for now, since our
exported GPIOs are always active low.

Signed-off-by: Mathias Kresin <dev@kresin.me>
package/base-files/Makefile
package/base-files/files/etc/init.d/gpio_switch

index a7cc4ca48bc76442cb9836a1172e1ed173a04d39..87e02ff7d2eab8620f917615bbe308d57e513037 100644 (file)
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk
 include $(INCLUDE_DIR)/feeds.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=181
+PKG_RELEASE:=182
 PKG_FLAGS:=nonshared
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
index 5a62be94ccbe76d17e5f1c8e852b200cded3c4ee..b67950a992c59bd85ac5052de392986adc29a85a 100755 (executable)
@@ -22,10 +22,9 @@ load_gpio_switch()
                echo "$gpio_pin" >/sys/class/gpio/export
                # we need to wait a bit until the GPIO appears
                [ -d "$gpio_path" ] || sleep 1
-               echo out >"$gpio_path/direction"
        }
-       # write 0 or 1 to the "value" field
-       { [ "$value" = "0" ] && echo "0" || echo "1"; } >"$gpio_path/value"
+       # set the pin to output with high or low pin value
+       { [ "$value" = "0" ] && echo "high" || echo "low"; } >"$gpio_path/direction"
 }
 
 service_triggers()