aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2015-11-22 08:04:37 +0000
committerJohn Crispin <john@openwrt.org>2015-11-22 08:04:37 +0000
commitcd9d0ee0d0b56e5bec8d7bc594bdbd6180632b28 (patch)
tree91ef3306b6e5a2bdb1413e7d76469d04a1c18f2d /target/linux
parentdeff5fb6c89b58b193bb57ab129cbe441a4404b4 (diff)
downloadupstream-cd9d0ee0d0b56e5bec8d7bc594bdbd6180632b28.tar.gz
upstream-cd9d0ee0d0b56e5bec8d7bc594bdbd6180632b28.tar.bz2
upstream-cd9d0ee0d0b56e5bec8d7bc594bdbd6180632b28.zip
brcm2708: add device detection and use it for network, leds and preinit
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> SVN-Revision: 47572
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/brcm2708/base-files.mk3
-rwxr-xr-xtarget/linux/brcm2708/base-files/etc/board.d/02_network25
-rw-r--r--target/linux/brcm2708/base-files/etc/diag.sh12
-rw-r--r--target/linux/brcm2708/base-files/etc/uci-defaults/02_network15
-rw-r--r--target/linux/brcm2708/base-files/lib/brcm2708.sh41
-rw-r--r--target/linux/brcm2708/base-files/lib/preinit/03_preinit_do_brcm2708.sh10
-rw-r--r--target/linux/brcm2708/base-files/lib/preinit/05_set_preinit_iface_brcm270818
-rw-r--r--target/linux/brcm2708/bcm2708/config-4.12
-rw-r--r--target/linux/brcm2708/bcm2709/config-4.12
9 files changed, 110 insertions, 18 deletions
diff --git a/target/linux/brcm2708/base-files.mk b/target/linux/brcm2708/base-files.mk
new file mode 100644
index 0000000000..fdd2c714b2
--- /dev/null
+++ b/target/linux/brcm2708/base-files.mk
@@ -0,0 +1,3 @@
+define Package/base-files/install-target
+ rm -f $(1)/etc/config/network
+endef
diff --git a/target/linux/brcm2708/base-files/etc/board.d/02_network b/target/linux/brcm2708/base-files/etc/board.d/02_network
new file mode 100755
index 0000000000..e85eb11f88
--- /dev/null
+++ b/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
diff --git a/target/linux/brcm2708/base-files/etc/diag.sh b/target/linux/brcm2708/base-files/etc/diag.sh
index 55e68b1a00..3a8dc86112 100644
--- a/target/linux/brcm2708/base-files/etc/diag.sh
+++ b/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)
diff --git a/target/linux/brcm2708/base-files/etc/uci-defaults/02_network b/target/linux/brcm2708/base-files/etc/uci-defaults/02_network
deleted file mode 100644
index e7e35c5226..0000000000
--- a/target/linux/brcm2708/base-files/etc/uci-defaults/02_network
+++ /dev/null
@@ -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
diff --git a/target/linux/brcm2708/base-files/lib/brcm2708.sh b/target/linux/brcm2708/base-files/lib/brcm2708.sh
new file mode 100644
index 0000000000..13c1aa953b
--- /dev/null
+++ b/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
+}
diff --git a/target/linux/brcm2708/base-files/lib/preinit/03_preinit_do_brcm2708.sh b/target/linux/brcm2708/base-files/lib/preinit/03_preinit_do_brcm2708.sh
new file mode 100644
index 0000000000..294364848d
--- /dev/null
+++ b/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
diff --git a/target/linux/brcm2708/base-files/lib/preinit/05_set_preinit_iface_brcm2708 b/target/linux/brcm2708/base-files/lib/preinit/05_set_preinit_iface_brcm2708
new file mode 100644
index 0000000000..154b01c4fe
--- /dev/null
+++ b/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
diff --git a/target/linux/brcm2708/bcm2708/config-4.1 b/target/linux/brcm2708/bcm2708/config-4.1
index 055caa9b10..82ae7b33b1 100644
--- a/target/linux/brcm2708/bcm2708/config-4.1
+++ b/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
diff --git a/target/linux/brcm2708/bcm2709/config-4.1 b/target/linux/brcm2708/bcm2709/config-4.1
index 8eb98afebb..866d648312 100644
--- a/target/linux/brcm2708/bcm2709/config-4.1
+++ b/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