[PATCH] packages: nvram: add NVRAM quirks for bcm53xx target

Hauke Mehrtens hauke at hauke-m.de
Tue May 3 13:12:48 PDT 2022


On 5/3/22 09:44, Arınç ÜNAL wrote:
> On 03/05/2022 10:20, Rafał Miłecki wrote:
>> On 31.03.2022 21:19, Arınç ÜNAL wrote:
>>> 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.
>>>
>>> Signed-off-by: Arınç ÜNAL <arinc.unal at arinc9.com>
>>> ---
>>>   package/utils/nvram/Makefile                  |  8 +++-
>>>   .../files/{nvram.init => nvram-bcm47xx.init}  |  2 +-
>>>   package/utils/nvram/files/nvram-bcm53xx.init  | 40 +++++++++++++++++++
>>>   .../base-files/etc/init.d/clear_partialboot   | 13 ------
>>>   4 files changed, 47 insertions(+), 16 deletions(-)
>>>   rename package/utils/nvram/files/{nvram.init => nvram-bcm47xx.init} 
>>> (97%)
>>>   create mode 100755 package/utils/nvram/files/nvram-bcm53xx.init
>>>   delete mode 100755 
>>> target/linux/bcm53xx/base-files/etc/init.d/clear_partialboot
>>>
>>> diff --git a/package/utils/nvram/Makefile b/package/utils/nvram/Makefile
>>> index 863b304d0d..b957211283 100644
>>> --- a/package/utils/nvram/Makefile
>>> +++ b/package/utils/nvram/Makefile
>>> @@ -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.init 
>>> b/package/utils/nvram/files/nvram-bcm47xx.init
>>> similarity index 97%
>>> rename from package/utils/nvram/files/nvram.init
>>> rename to package/utils/nvram/files/nvram-bcm47xx.init
>>> index 467ab28195..c95933246c 100755
>>> --- a/package/utils/nvram/files/nvram.init
>>> +++ b/package/utils/nvram/files/nvram-bcm47xx.init
>>> @@ -1,7 +1,7 @@
>>>   #!/bin/sh /etc/rc.common
>>>   # NVRAM setup
>>>   #
>>> -# This file handles the NVRAM quirks of various hardware.
>>> +# This file handles the NVRAM quirks of various hardware of the 
>>> bcm47xx target.
>>>   START=02
>>>   alias debug=${DEBUG:-:}
>>> diff --git a/package/utils/nvram/files/nvram-bcm53xx.init 
>>> b/package/utils/nvram/files/nvram-bcm53xx.init
>>> new file mode 100755
>>> index 0000000000..d50917c776
>>> --- /dev/null
>>> +++ b/package/utils/nvram/files/nvram-bcm53xx.init
>>> @@ -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
>>> +}
>>> +
>>> +start() {
>>> +    . /lib/functions.sh
>>> +
>>> +    clear_partialboots
>>> +    set_wireless_led_behaviour
>>> +
>>> +    [ "$COMMIT" = "1" ] && nvram commit
>>> +}
>>
>> Do we want / need to switch from boot() to start()?
>>
>> I don't have opinion, just making sure it's intentional.
> 
> Wiki says boot() is executed before start() which is usually used to 
> turn on hardware. bcm47xx nvram initscript uses start() so it doesn't 
> seem to matter. I tested the patch on my Asus RT-AC88U to make sure the 
> initscript works fine.
> 
> https://openwrt.org/docs/techref/initscripts#other_functions
> 
> Arınç

I think boot() would look better, but it would be good to keep this 
consistent with the bcm47xx code. Using boot() or start() does not make 
a big difference, boot() calls start() anyway.

What about to also change the bcm47xx code to boot()?

The rest looks ok to me.

Hauke



More information about the openwrt-devel mailing list