x86: Enable DIAG LED on Geos
Based on a patch from Chris Blake <chrisrblake93@gmail.com>, except let's do it by using the LED configuration instead of hard-coding it for each board type. And try using /bin/board_detect to do the default behaviour, on the first boot where the config hasn't yet been generated. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
		
							parent
							
								
									27a635f0b4
								
							
						
					
					
						commit
						add465f1be
					
				@ -13,7 +13,7 @@ case "$board" in
 | 
			
		||||
traverse-technologies-geos)
 | 
			
		||||
	ucidef_set_led_netdev "lan" "LAN" "geos:1" "br-lan" "tx rx"
 | 
			
		||||
	ucidef_set_led_netdev "wlan" "WiFi" "geos:2" "phy0tpt"
 | 
			
		||||
	ucidef_set_led_default "diag" "DIAG" "geos:3" "0"
 | 
			
		||||
	ucidef_set_led_default "diag" "DIAG" "geos:3" "1"
 | 
			
		||||
	;;
 | 
			
		||||
esac
 | 
			
		||||
board_config_flush
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										78
									
								
								target/linux/x86/base-files/etc/diag.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								target/linux/x86/base-files/etc/diag.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,78 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# Copyright © 2017 OpenWrt.org
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
. /lib/functions.sh
 | 
			
		||||
. /lib/functions/leds.sh
 | 
			
		||||
. /usr/share/libubox/jshn.sh
 | 
			
		||||
 | 
			
		||||
preinit_match_diag_led() {
 | 
			
		||||
	local CFG keys key cfg name sysfs default
 | 
			
		||||
 | 
			
		||||
	CFG=/etc/board.json
 | 
			
		||||
	if [ ! -s $CFG ]; then
 | 
			
		||||
		CFG=/tmp/board.json
 | 
			
		||||
		[ -s /tmp/sysinfo/model ] || return
 | 
			
		||||
		/bin/board_detect $CFG || return
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	json_init
 | 
			
		||||
	json_load "$(cat $CFG)"
 | 
			
		||||
	json_get_keys keys led
 | 
			
		||||
	json_select led
 | 
			
		||||
	for key in $keys; do
 | 
			
		||||
		json_select "$key"
 | 
			
		||||
		json_get_vars name sysfs default
 | 
			
		||||
 | 
			
		||||
		if [ "$name" = "DIAG" -a "$default" = "1" ]; then
 | 
			
		||||
			status_led="$sysfs"
 | 
			
		||||
			return
 | 
			
		||||
		fi
 | 
			
		||||
		json_select ..
 | 
			
		||||
	done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
match_diag_led() {
 | 
			
		||||
	local name
 | 
			
		||||
	local default
 | 
			
		||||
	local sysfs
 | 
			
		||||
	config_get name "$1" name
 | 
			
		||||
	config_get default "$1" default
 | 
			
		||||
	config_get sysfs "$1" sysfs
 | 
			
		||||
 | 
			
		||||
	if [ "$name" = "DIAG" -a "$default" = "1" ]; then
 | 
			
		||||
		status_led="$sysfs"
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get_status_led() {
 | 
			
		||||
	if [ -s /etc/config/system ]; then
 | 
			
		||||
		config_load system
 | 
			
		||||
		config_foreach match_diag_led led
 | 
			
		||||
	else
 | 
			
		||||
		preinit_match_diag_led
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
set_state() {
 | 
			
		||||
	get_status_led
 | 
			
		||||
 | 
			
		||||
	case "$1" in
 | 
			
		||||
	preinit)
 | 
			
		||||
		status_led_blink_preinit
 | 
			
		||||
		;;
 | 
			
		||||
 | 
			
		||||
	failsafe)
 | 
			
		||||
		status_led_blink_failsafe
 | 
			
		||||
		;;
 | 
			
		||||
 | 
			
		||||
	preinit_regular)
 | 
			
		||||
		status_led_blink_preinit_regular
 | 
			
		||||
		;;
 | 
			
		||||
 | 
			
		||||
	done)
 | 
			
		||||
		status_led_on
 | 
			
		||||
		;;
 | 
			
		||||
	esac
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user