Przeglądaj źródła

brcm2708: add device detection and use it for network, leds and preinit

Signed-off-by: Álvaro Fernández Rojas <[email protected]>

SVN-Revision: 47572
John Crispin 10 lat temu
rodzic
commit
cd9d0ee0d0

+ 3 - 0
target/linux/brcm2708/base-files.mk

@@ -0,0 +1,3 @@
+define Package/base-files/install-target
+	rm -f $(1)/etc/config/network
+endef

+ 25 - 0
target/linux/brcm2708/base-files/etc/board.d/02_network

@@ -0,0 +1,25 @@
+#!/bin/sh
+# Copyright (C) 2014-2015 OpenWrt.org
+
+. /lib/functions/uci-defaults-new.sh
+. /lib/brcm2708.sh
+. /lib/functions.sh
+. /lib/functions/system.sh
+
+board_config_update
+
+ucidef_set_interface_loopback
+
+board=$(brcm2708_board_name)
+
+case "$board" in
+rpi-b |\
+rpi-b-plus |\
+rpi-2-b)
+	ucidef_set_interface_lan "eth0"
+	;;
+esac
+
+board_config_flush
+
+exit 0

+ 11 - 1
target/linux/brcm2708/base-files/etc/diag.sh

@@ -4,9 +4,19 @@
 #
 
 . /lib/functions/leds.sh
+. /lib/brcm2708.sh
 
 set_state() {
-	status_led="led0"
+	case "$(brcm2708_board_name)" in
+	rpi-b |\
+	rpi-cm)
+		status_led="led0"
+		;;
+	rpi-b-plus |\
+	rpi-2-b)
+		status_led="led1"
+		;;
+	esac
 
 	case "$1" in
 	preinit)

+ 0 - 15
target/linux/brcm2708/base-files/etc/uci-defaults/02_network

@@ -1,15 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2014 OpenWrt.org
-
-[ -e /etc/config/network ] && exit 0
-
-touch /etc/config/network
-
-. /lib/functions/uci-defaults.sh
-
-ucidef_set_interface_loopback
-ucidef_set_interface_lan "eth0"
-
-uci commit network
-
-exit 0

+ 41 - 0
target/linux/brcm2708/base-files/lib/brcm2708.sh

@@ -0,0 +1,41 @@
+#!/bin/sh
+# Copyright (C) 2015 OpenWrt.org
+
+ifname=""
+
+brcm2708_detect() {
+	local board_name model
+
+	model=$(cat /proc/device-tree/model)
+	case "$model" in
+	"Raspberry Pi Model B Rev"*)
+		board_name="rpi-b"
+		;;
+	"Raspberry Pi Model B+ Rev"*)
+		board_name="rpi-b-plus"
+		;;
+	"Raspberry Pi Compute Module Rev"*)
+		board_name="rpi-cm"
+		;;
+	"Raspberry Pi 2 Model B Rev"*)
+		board_name="rpi-2-b"
+		;;
+	*)
+		board_name="unknown"
+		;;
+	esac
+
+	[ -e "/tmp/sysinfo" ] || mkdir -p "/tmp/sysinfo"
+
+	echo "$board_name" > /tmp/sysinfo/board_name
+	echo "$model" > /tmp/sysinfo/model
+}
+
+brcm2708_board_name() {
+	local name
+
+	[ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name)
+	[ -n "$name" ] || name="unknown"
+
+	echo $name
+}

+ 10 - 0
target/linux/brcm2708/base-files/lib/preinit/03_preinit_do_brcm2708.sh

@@ -0,0 +1,10 @@
+#!/bin/sh
+# Copyright (C) 2015 OpenWrt.org
+
+do_brcm2708() {
+	. /lib/brcm2708.sh
+
+	brcm2708_detect
+}
+
+boot_hook_add preinit_main do_brcm2708

+ 18 - 0
target/linux/brcm2708/base-files/lib/preinit/05_set_preinit_iface_brcm2708

@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+
+. /lib/brcm2708.sh
+
+set_preinit_iface() {
+	case "$(brcm2708_board_name)" in
+	rpi-b |\
+	rpi-b-plus |\
+	rpi-2-b)
+		ifname=eth0
+		;;
+	esac
+}
+
+boot_hook_add preinit_main set_preinit_iface

+ 1 - 1
target/linux/brcm2708/bcm2708/config-4.1

@@ -225,7 +225,7 @@ CONFIG_KERNEL_GZIP=y
 # CONFIG_KERNEL_XZ is not set
 # CONFIG_LCD_CLASS_DEVICE is not set
 CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_TRIGGER_INPUT is not set
+CONFIG_LEDS_TRIGGER_INPUT=y
 CONFIG_LIBFDT=y
 CONFIG_LOGO=y
 CONFIG_LOGO_LINUX_CLUT224=y

+ 1 - 1
target/linux/brcm2708/bcm2709/config-4.1

@@ -237,7 +237,7 @@ CONFIG_KERNEL_GZIP=y
 # CONFIG_KERNEL_XZ is not set
 # CONFIG_LCD_CLASS_DEVICE is not set
 CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_TRIGGER_INPUT is not set
+CONFIG_LEDS_TRIGGER_INPUT=y
 CONFIG_LIBFDT=y
 CONFIG_LOCK_SPIN_ON_OWNER=y
 CONFIG_LOGO=y