packages: nvram: add NVRAM quirks for bcm53xx target
authorArınç ÜNAL <arinc.unal@arinc9.com>
Wed, 4 May 2022 08:34:29 +0000 (11:34 +0300)
committerRafał Miłecki <rafal@milecki.pl>
Wed, 4 May 2022 19:51:20 +0000 (21:51 +0200)
Add NVRAM quirks script for the bcm53xx target. Split NVRAM quirks for the
bcm47xx and bcm53xx targets. Move clear partialboot NVRAM quirk for Linksys
EA9500 here. Add set wireless LED behaviour quirk for Asus RT-AC88U.

Use boot() instead of start() as nvram commands are meant to be executed
only once, at boot.

Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
package/utils/nvram/Makefile
package/utils/nvram/files/nvram-bcm47xx.init [new file with mode: 0755]
package/utils/nvram/files/nvram-bcm53xx.init [new file with mode: 0755]
package/utils/nvram/files/nvram.init [deleted file]
target/linux/bcm53xx/base-files/etc/init.d/clear_partialboot [deleted file]

index 863b304d0d5ef9615cf1f00ed3be4695ff29642a..b957211283d12b8085c7768ec2e7272b7fdc17b5 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nvram
-PKG_RELEASE:=10
+PKG_RELEASE:=11
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
@@ -44,7 +44,11 @@ define Package/nvram/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/nvram $(1)/usr/sbin/
 ifneq ($(CONFIG_TARGET_bcm47xx),)
        $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/nvram.init $(1)/etc/init.d/nvram
+       $(INSTALL_BIN) ./files/nvram-bcm47xx.init $(1)/etc/init.d/nvram
+endif
+ifneq ($(CONFIG_TARGET_bcm53xx),)
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/nvram-bcm53xx.init $(1)/etc/init.d/nvram
 endif
 endef
 
diff --git a/package/utils/nvram/files/nvram-bcm47xx.init b/package/utils/nvram/files/nvram-bcm47xx.init
new file mode 100755 (executable)
index 0000000..4a2bcd1
--- /dev/null
@@ -0,0 +1,98 @@
+#!/bin/sh /etc/rc.common
+# NVRAM setup
+#
+# This file handles the NVRAM quirks of various hardware of the bcm47xx target.
+
+START=02
+alias debug=${DEBUG:-:}
+
+nvram_default() {
+       [ -z "$(nvram get $1)" ] && nvram set "$1=$2"
+}
+
+nvram_set() { # for the linksys fixup part
+       [ "$(nvram get "$1")" = "$2" -a "$2" != "" ] || {
+               COMMIT=1
+               /usr/sbin/nvram set "$1=$2"
+       }
+}
+
+fixup_linksys() {
+       # work around braindead CFE defaults in linksys routers
+       boardtype=$(nvram get boardtype)
+       boardnum=$(nvram get boardnum)
+       boardflags=$(($(nvram get boardflags)))
+       adm_switch="$(( ($boardflags & 0x80) >> 7 ))"
+
+       [ -n "$(nvram get vxkilled)" ] && boardtype=0 # don't mess with the ram settings on the hacked cfe
+       case "$(( $boardtype ))" in
+               "1800") #0x708
+                       if [ "$adm_switch" = 0 ]; then
+                               nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))"
+                               [ "$COMMIT" = 1 ] && {
+                                       nvram_set clkfreq 216
+                                       nvram_set sdram_ncdl 0x0
+                                       nvram_set pa0itssit 62
+                                       nvram_set pa0b0 0x15eb
+                                       nvram_set pa0b1 0xfa82
+                                       nvram_set pa0b2 0xfe66
+                                       nvram_set pa0maxpwr 0x4e
+                               }
+                       fi
+               ;;
+               "1127") #0x467
+                       nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))"
+                       [ "$COMMIT" = 1 ] && {
+                               nvram_set sdram_ncdl 0x0
+                               nvram_set pa0itssit 62
+                               nvram_set pa0b0 0x168b
+                               nvram_set pa0b1 0xfabf
+                               nvram_set pa0b2 0xfeaf
+                               nvram_set pa0maxpwr 0x4e
+                       }
+               ;;
+               "1071") #0x042f
+                       # do sanity check first! max 0x0011 = 128mb
+                       SDRAM_INIT=$(printf %d $(/usr/sbin/nvram get sdram_init))
+                       [ "$SDRAM_INIT" -lt "9" -o "$SDRAM_INIT" -gt "17" ] && {
+                               # set this to default: 0x09 only if value is invaild like 16MB on Asus WL-500GP
+                               echo "sdram_init is invaild: $(printf 0x%04x $SDRAM_INIT), force to default!"
+                               nvram_set sdram_init 0x0009
+                       }
+                       # on WRT54G3GV2 set flag, so checksum errors of firmware image 2 don't stop the boot process
+                       noset_try_flag=$(nvram get noset_try_flag)
+                       [ "$noset_try_flag" = 0 ] && {
+                               echo "setting noset_try_flag to 1."
+                               nvram_set noset_try_flag 1
+                       }
+                       [ "$COMMIT" = 1 ] && {
+                               nvram_set sdram_ncdl 0x0
+                       }
+       esac
+}
+
+boot() {
+       # Don't do any fixups on the WGT634U
+       [ "$(cat /proc/diag/model)" = "Netgear WGT634U" ] && return
+
+       fixup_linksys
+
+       # OFDM Power Offset is set incorrectly on many boards.
+       # Setting it to 0 will increase the tx power to normal levels.
+       nvram_set opo 0x0
+
+       [ "$(nvram get il0macaddr)" = "00:90:4c:5f:00:2a" ] && {
+               # if default wifi mac, set two higher than the lan mac
+               nvram set il0macaddr=$(nvram get et0macaddr|
+               awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
+       }
+
+       [ "$(nvram get et0macaddr)" = "00:90:4c:c0:00:08" ] && {
+               # OvisLink WL-1600GL mac workaround
+               nvram set et0macaddr=$(hexdump -n 6 -s 130976 -e '5/1 "%02x:" "%02x" ' /dev/mtd/0)
+               nvram set il0macaddr=$(nvram get et0macaddr|
+               awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
+       }
+
+       [ "$COMMIT" = "1" ] && nvram commit
+}
diff --git a/package/utils/nvram/files/nvram-bcm53xx.init b/package/utils/nvram/files/nvram-bcm53xx.init
new file mode 100755 (executable)
index 0000000..0502cd2
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh /etc/rc.common
+# NVRAM setup
+#
+# This file handles the NVRAM quirks of various hardware of the bcm53xx target.
+
+START=02
+
+clear_partialboots() {
+       # clear partialboots
+
+       case $(board_name) in
+               linksys,panamera)
+                       COMMIT=1
+                       nvram set partialboots=0
+                       ;;
+       esac
+}
+
+set_wireless_led_behaviour() {
+       # set Broadcom wireless LED behaviour for both radios
+       # 0:ledbh9 -> Behaviour of 2.4GHz LED
+       # 1:ledbh9 -> Behaviour of 5GHz LED
+       # 0x7 makes the wireless LEDs on, when radios are enabled, and blink when there's activity
+
+       case $(board_name) in
+               asus,rt-ac88u)
+                       COMMIT=1
+                       nvram set 0:ledbh9=0x7 set 1:ledbh9=0x7
+                       ;;
+       esac
+}
+
+boot() {
+       . /lib/functions.sh
+
+       clear_partialboots
+       set_wireless_led_behaviour
+
+       [ "$COMMIT" = "1" ] && nvram commit
+}
diff --git a/package/utils/nvram/files/nvram.init b/package/utils/nvram/files/nvram.init
deleted file mode 100755 (executable)
index 467ab28..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/bin/sh /etc/rc.common
-# NVRAM setup
-#
-# This file handles the NVRAM quirks of various hardware.
-
-START=02
-alias debug=${DEBUG:-:}
-
-nvram_default() {
-       [ -z "$(nvram get $1)" ] && nvram set "$1=$2"
-}
-
-nvram_set() { # for the linksys fixup part
-       [ "$(nvram get "$1")" = "$2" -a "$2" != "" ] || {
-               COMMIT=1
-               /usr/sbin/nvram set "$1=$2"
-       }
-}
-
-fixup_linksys() {
-       # work around braindead CFE defaults in linksys routers
-       boardtype=$(nvram get boardtype)
-       boardnum=$(nvram get boardnum)
-       boardflags=$(($(nvram get boardflags)))
-       adm_switch="$(( ($boardflags & 0x80) >> 7 ))"
-
-       [ -n "$(nvram get vxkilled)" ] && boardtype=0 # don't mess with the ram settings on the hacked cfe
-       case "$(( $boardtype ))" in
-               "1800") #0x708
-                       if [ "$adm_switch" = 0 ]; then
-                               nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))"
-                               [ "$COMMIT" = 1 ] && {
-                                       nvram_set clkfreq 216
-                                       nvram_set sdram_ncdl 0x0
-                                       nvram_set pa0itssit 62
-                                       nvram_set pa0b0 0x15eb
-                                       nvram_set pa0b1 0xfa82
-                                       nvram_set pa0b2 0xfe66
-                                       nvram_set pa0maxpwr 0x4e
-                               }
-                       fi
-               ;;
-               "1127") #0x467
-                       nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))"
-                       [ "$COMMIT" = 1 ] && {
-                               nvram_set sdram_ncdl 0x0
-                               nvram_set pa0itssit 62
-                               nvram_set pa0b0 0x168b
-                               nvram_set pa0b1 0xfabf
-                               nvram_set pa0b2 0xfeaf
-                               nvram_set pa0maxpwr 0x4e
-                       }
-               ;;
-               "1071") #0x042f
-                       # do sanity check first! max 0x0011 = 128mb
-                       SDRAM_INIT=$(printf %d $(/usr/sbin/nvram get sdram_init))
-                       [ "$SDRAM_INIT" -lt "9" -o "$SDRAM_INIT" -gt "17" ] && {
-                               # set this to default: 0x09 only if value is invaild like 16MB on Asus WL-500GP
-                               echo "sdram_init is invaild: $(printf 0x%04x $SDRAM_INIT), force to default!"
-                               nvram_set sdram_init 0x0009
-                       }
-                       # on WRT54G3GV2 set flag, so checksum errors of firmware image 2 don't stop the boot process
-                       noset_try_flag=$(nvram get noset_try_flag)
-                       [ "$noset_try_flag" = 0 ] && {
-                               echo "setting noset_try_flag to 1."
-                               nvram_set noset_try_flag 1
-                       }
-                       [ "$COMMIT" = 1 ] && {
-                               nvram_set sdram_ncdl 0x0
-                       }
-       esac
-}
-
-start() {
-       # Don't do any fixups on the WGT634U
-       [ "$(cat /proc/diag/model)" = "Netgear WGT634U" ] && return
-
-       fixup_linksys
-
-       # OFDM Power Offset is set incorrectly on many boards.
-       # Setting it to 0 will increase the tx power to normal levels.
-       nvram_set opo 0x0
-
-       [ "$(nvram get il0macaddr)" = "00:90:4c:5f:00:2a" ] && {
-               # if default wifi mac, set two higher than the lan mac
-               nvram set il0macaddr=$(nvram get et0macaddr|
-               awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
-       }
-
-       [ "$(nvram get et0macaddr)" = "00:90:4c:c0:00:08" ] && {
-               # OvisLink WL-1600GL mac workaround
-               nvram set et0macaddr=$(hexdump -n 6 -s 130976 -e '5/1 "%02x:" "%02x" ' /dev/mtd/0)
-               nvram set il0macaddr=$(nvram get et0macaddr|
-               awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
-       }
-
-       [ "$COMMIT" = "1" ] && nvram commit
-}
diff --git a/target/linux/bcm53xx/base-files/etc/init.d/clear_partialboot b/target/linux/bcm53xx/base-files/etc/init.d/clear_partialboot
deleted file mode 100755 (executable)
index b3eddf4..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=97
-boot() {
-       . /lib/functions.sh
-
-       case $(board_name) in
-               linksys,panamera)
-                       # clear partialboots
-                       nvram set partialboots=0 && nvram commit
-                       ;;
-       esac
-}