Skip to content
Snippets Groups Projects
Select Git revision
  • a11d4a56b0e06987e15bde72b13185634fffce18
  • experimental default protected
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master protected
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • experimental-2025-06-24
  • experimental-2025-06-24-base
  • experimental-2025-06-22
  • experimental-2025-06-22-base
  • v2023.2.5-ffs0.1
  • experimental-2025-06-08
  • experimental-2025-06-08-base
  • experimental-2025-06-06
  • experimental-2025-06-06-base
  • experimental-2025-05-27
  • experimental-2025-05-27-base
  • experimental-2025-05-18
  • experimental-2025-05-18-base
  • experimental-2025-05-15
  • experimental-2025-05-15-base
  • experimental-2025-05-13
  • experimental-2025-05-13-base
  • experimental-2025-05-08
  • experimental-2025-05-08-base
  • experimental-2025-05-05
41 results

config

Blame
  • 0014-base-files-implemented-basic-GPIO-control.patch 3.46 KiB
    From: Matthias Schiffer <mschiffer@universe-factory.net>
    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 <lists@sumpfralle.de>
    
    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 0000000000000000000000000000000000000000..1f1b44b2129ce2315943f6a10508eefb66412c48
    --- /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 5a8809d68c89ac0431919f15dad5f5c33351bbf2..6577ecdcde0c856b3e6dd1b9337f23cb782ef2be 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 0000000000000000000000000000000000000000..81d3982ed8bf98e01ce2e161017f088a1d0f60dc
    --- /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