diff --git a/patches/openwrt/0015-base-files-implemented-basic-GPIO-control.patch b/patches/openwrt/0015-base-files-implemented-basic-GPIO-control.patch new file mode 100644 index 00000000..c3f6c8d5 --- /dev/null +++ b/patches/openwrt/0015-base-files-implemented-basic-GPIO-control.patch @@ -0,0 +1,133 @@ +From: Matthias Schiffer +Date: Mon, 7 Mar 2016 06:07:21 +0100 +Subject: base-files: implemented basic GPIO control + +Internal GPIO pins are used for PoE passthrough setups in multi-port +routers. This patch implemnets control over this hardware feature for +Ubiquiti Nanostations and TP-Link CPE510. + +Signed-off-by: Lars Kruse + +Backport of r46271 + +diff --git a/package/base-files/files/etc/init.d/gpio_switch b/package/base-files/files/etc/init.d/gpio_switch +new file mode 100755 +index 0000000..1f1b44b +--- /dev/null ++++ b/package/base-files/files/etc/init.d/gpio_switch +@@ -0,0 +1,42 @@ ++#!/bin/sh /etc/rc.common ++# Copyright (C) 2015 OpenWrt.org ++ ++START=98 ++STOP=10 ++USE_PROCD=1 ++ ++ ++load_gpio_switch() ++{ ++ local name ++ local gpio_pin ++ local value ++ ++ config_get gpio_pin "$1" gpio_pin ++ config_get name "$1" name ++ config_get value "$1" value 0 ++ ++ local gpio_path="/sys/class/gpio/gpio${gpio_pin}" ++ # export GPIO pin for access ++ [ -d "$gpio_path" ] || { ++ 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" ++} ++ ++service_triggers() ++{ ++ procd_add_reload_trigger "system" ++} ++ ++start_service() ++{ ++ [ -e /sys/class/gpio/ ] && { ++ config_load system ++ config_foreach load_gpio_switch gpio_switch ++ } ++} +diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh +index 5a8809d..6577ecd 100644 +--- a/package/base-files/files/lib/functions/uci-defaults.sh ++++ b/package/base-files/files/lib/functions/uci-defaults.sh +@@ -2,6 +2,7 @@ + # Copyright (C) 2011 OpenWrt.org + + UCIDEF_LEDS_CHANGED=0 ++UCIDEF_GPIO_SWITCHES_CHANGED=0 + + ucidef_set_led_netdev() { + local cfg="led_$1" +@@ -180,6 +181,29 @@ ucidef_commit_leds() + [ "$UCIDEF_LEDS_CHANGED" = "1" ] && uci commit system + } + ++ucidef_set_gpio_switch() { ++ local cfg="gpio_switch_$1" ++ local name="$2" ++ local gpio_pin="$3" ++ # use "0" as default value ++ local default="${4:-0}" ++ ++ uci -q get "system.$cfg" && return 0 ++ ++ uci batch < +Date: Mon, 7 Mar 2016 06:07:59 +0100 +Subject: ar71xx: assign proper GPIO pin for Ubiquiti Nanostation models + +The GPIO pins for "POE passthrough" of Ubiquiti Nanostation models are the +following: +* Ubiquiti Nanostation M XM: Pin 8 +* Ubiquiti Nanostation M XW: Pin 2 + +The previous definition of the pins was mixed up between XM and XW model. + +Signed-off-by: Lars Kruse + +Backport of r46922 + +diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches b/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches +index 81d3982..b41f275 100644 +--- a/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches ++++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches +@@ -10,10 +10,10 @@ board=$(ar71xx_board_name) + + case "$board" in + nanostation-m) +- ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "2" ++ ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "8" + ;; + nanostation-m-xw) +- ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "8" ++ ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "2" + ;; + cpe510) + ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "20"