Hi Lars, patch subject is missing the "base-files: " prefix. please fix and resend. rest of the patch looks fine.
John On 01/07/2015 02:49, Lars Kruse wrote: > 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 <li...@sumpfralle.de> > --- > package/base-files/files/etc/init.d/gpio_switch | 42 > ++++++++++++++++++++++ > .../base-files/files/lib/functions/uci-defaults.sh | 24 +++++++++++++ > .../base-files/etc/uci-defaults/01_gpio-switches | 25 +++++++++++++ > 3 files changed, 91 insertions(+) > create mode 100755 package/base-files/files/etc/init.d/gpio_switch > create mode 100644 > target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches > > 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 <<EOF > +set system.$cfg='gpio_switch' > +set system.$cfg.name='$name' > +set system.$cfg.gpio_pin='$gpio_pin' > +set system.$cfg.value='$default' > +EOF > + UCIDEF_GPIO_SWITCHES_CHANGED=1 > +} > + > +ucidef_commit_gpio_switches() > +{ > + [ "$UCIDEF_GPIO_SWITCHES_CHANGED" = "1" ] && uci commit system > +} > + > ucidef_set_interface_loopback() { > uci batch <<EOF > set network.loopback='interface' > 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 > new file mode 100644 > index 0000000..81d3982 > --- /dev/null > +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/01_gpio-switches > @@ -0,0 +1,25 @@ > +#!/bin/sh > +# > +# Copyright (C) 2015 OpenWrt.org > +# > + > +. /lib/functions/uci-defaults.sh > +. /lib/ar71xx.sh > + > +board=$(ar71xx_board_name) > + > +case "$board" in > +nanostation-m) > + ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "2" > + ;; > +nanostation-m-xw) > + ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "8" > + ;; > +cpe510) > + ucidef_set_gpio_switch "poe_passthrough" "PoE Passthrough" "20" > + ;; > +esac > + > +ucidef_commit_gpio_switches > + > +exit 0 > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel