[OpenWrt-Devel] [PATCH v2 5/6] brcm2708: add device detection and use it for network, leds and preinit

John Crispin blogic at openwrt.org
Sat Nov 21 03:45:58 EST 2015


Hi,

do you have time to rework this code to make use of the new board
detection layer ? i am currently starting to convert all targets to it.
would be a shame if we add this ode just to replace it again in a few weeks.

	John

On 19/11/2015 19:18, Álvaro Fernández Rojas wrote:
> Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
> ---
> v2: device tree model needs Rev to avoid detecting a B+ as a B model
> 
>  target/linux/brcm2708/base-files.mk                |  3 ++
>  target/linux/brcm2708/base-files/etc/diag.sh       | 12 ++++++-
>  .../base-files/etc/uci-defaults/02_network         | 12 +++++--
>  target/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 +-
>  8 files changed, 95 insertions(+), 5 deletions(-)
>  create mode 100644 target/linux/brcm2708/base-files.mk
>  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 0000000..fdd2c71
> --- /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/diag.sh b/target/linux/brcm2708/base-files/etc/diag.sh
> index 55e68b1..3a8dc86 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
> index e7e35c5..1bb05b6 100644
> --- a/target/linux/brcm2708/base-files/etc/uci-defaults/02_network
> +++ b/target/linux/brcm2708/base-files/etc/uci-defaults/02_network
> @@ -1,14 +1,22 @@
>  #!/bin/sh
> -# Copyright (C) 2014 OpenWrt.org
> +# Copyright (C) 2014-2015 OpenWrt.org
>  
>  [ -e /etc/config/network ] && exit 0
>  
>  touch /etc/config/network
>  
>  . /lib/functions/uci-defaults.sh
> +. /lib/brcm2708.sh
>  
>  ucidef_set_interface_loopback
> -ucidef_set_interface_lan "eth0"
> +
> +case "$(brcm2708_board_name)" in
> +rpi-b |\
> +rpi-b-plus |\
> +rpi-2-b)
> +	ucidef_set_interface_lan "eth0"
> +	;;
> +esac
>  
>  uci commit network
>  
> 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 0000000..7d6e458
> --- /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 0000000..2943648
> --- /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 0000000..154b01c
> --- /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 055caa9..82ae7b3 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 8eb98af..866d648 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
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list