Message ID | 1447957089-13659-1-git-send-email-noltari@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
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@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 >
Sure, I will rework this as soon as I can. Regards, Álvaro. El 21/11/2015 a las 9:45, John Crispin escribió: > 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@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 >>
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
Signed-off-by: Álvaro Fernández Rojas <noltari@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