aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/etc/init.d/gpio_switch
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files/files/etc/init.d/gpio_switch')
-rwxr-xr-xpackage/base-files/files/etc/init.d/gpio_switch11
1 files changed, 9 insertions, 2 deletions
diff --git a/package/base-files/files/etc/init.d/gpio_switch b/package/base-files/files/etc/init.d/gpio_switch
index 32c142f110..6b2dcdce41 100755
--- a/package/base-files/files/etc/init.d/gpio_switch
+++ b/package/base-files/files/etc/init.d/gpio_switch
@@ -23,8 +23,15 @@ load_gpio_switch()
# we need to wait a bit until the GPIO appears
[ -d "$gpio_path" ] || sleep 1
}
- # set the pin to output with high or low pin value
- { [ "$value" = "0" ] && echo "low" || echo "high"; } >"$gpio_path/direction"
+
+ # direction attribute only exists if the kernel supports changing the
+ # direction of a GPIO
+ if [ -e "${gpio_path}/direction" ]; then
+ # set the pin to output with high or low pin value
+ { [ "$value" = "0" ] && echo "low" || echo "high"; } >"$gpio_path/direction"
+ else
+ { [ "$value" = "0" ] && echo "0" || echo "1"; } >"$gpio_path/value"
+ fi
}
service_triggers()