mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	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> SVN-Revision: 46271
		
			
				
	
	
		
			43 lines
		
	
	
		
			805 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			805 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 | 
						|
	}
 | 
						|
}
 |