kernel: ubootenv-nvram: driver for RAM backed environments
authorBjørn Mork <bjorn@mork.no>
Tue, 28 Mar 2023 11:32:29 +0000 (13:32 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 19 Aug 2023 23:14:06 +0000 (01:14 +0200)
commitb2e810f49588d1bbc90f657826e94b32474b482c
tree2cabc768a21c1786684797a3588dd59eba588a2f
parent4d79a65d607c471eab04a3821000d1a37440da33
kernel: ubootenv-nvram: driver for RAM backed environments

The vendor U-Boot implementaion on Telenor branded ZyXEL EX5700
devices does not store its environment on flash. It is instead
kept in a memory region.  This is persistent over reboots, but
not over power cycling.

The dual partition failsafe system used by the vendor U-Boot
requires the OS to modify a variable in this memory environment.
This driver allows the ordinary uboot-envtools to access a
memory region like it was a partition on NOR flash.

The specific vendor U-Boot adds a "no-map" /reserved-memory
section and a top level /ubootenv node pointing to the memory
environment.  The driver uses this device specific fact to
locate the region.  The matching and probing code will likely
have to be adjusted for any other devices to be supported.

Example partial device tree:

 / {
    ..
    ubootenv {
        memory-region = <&uenv>;
        compatible = "ubootenv";
    };
    ..
    reserved-memory {
        ..
        uenv: ubootenv@7ffe8000 {
            no-map;
            reg = <0 0x7ffe8000 0 0x4000>;
        };

Signed-off-by: Bjørn Mork <bjorn@mork.no>
package/kernel/ubootenv-nvram/Makefile [new file with mode: 0644]
package/kernel/ubootenv-nvram/src/Makefile [new file with mode: 0644]
package/kernel/ubootenv-nvram/src/ubootenv-nvram.c [new file with mode: 0644]