From cd9d0ee0d0b56e5bec8d7bc594bdbd6180632b28 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Sun, 22 Nov 2015 08:04:37 +0000 Subject: [PATCH] brcm2708: add device detection and use it for network, leds and preinit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Álvaro Fernández Rojas SVN-Revision: 47572 --- target/linux/brcm2708/base-files.mk | 3 ++ .../base-files/etc/board.d/02_network | 25 +++++++++++ target/linux/brcm2708/base-files/etc/diag.sh | 12 +++++- .../base-files/etc/uci-defaults/02_network | 15 ------- .../linux/brcm2708/base-files/lib/brcm2708.sh | 41 +++++++++++++++++++ .../lib/preinit/03_preinit_do_brcm2708.sh | 10 +++++ .../lib/preinit/05_set_preinit_iface_brcm2708 | 18 ++++++++ target/linux/brcm2708/bcm2708/config-4.1 | 2 +- target/linux/brcm2708/bcm2709/config-4.1 | 2 +- 9 files changed, 110 insertions(+), 18 deletions(-) create mode 100644 target/linux/brcm2708/base-files.mk create mode 100755 target/linux/brcm2708/base-files/etc/board.d/02_network delete mode 100644 target/linux/brcm2708/base-files/etc/uci-defaults/02_network create mode 100644 target/linux/brcm2708/base-files/lib/brcm2708.sh create mode 100644 target/linux/brcm2708/base-files/lib/preinit/03_preinit_do_brcm2708.sh create mode 100644 target/linux/brcm2708/base-files/lib/preinit/05_set_preinit_iface_brcm2708 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