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)
committerRafał Miłecki <rafal@milecki.pl>
Wed, 7 Aug 2024 10:12:30 +0000 (12:12 +0200)
commitc241885687be1f8746dfa930cf187476f2f4c614
tree9669ea3c7c42e7515ac804380753bdb5eb843dc9
parente4625c37c4844c63a6f3b843e9a137ea41fd0844
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>
(cherry picked from commit b2e810f49588d1bbc90f657826e94b32474b482c)
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]