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

Reply via email to