• Rafał Miłecki's avatar
    dt-bindings: nvmem: u-boot,env: add Broadcom's variant binding · 6b0584c1
    Rafał Miłecki authored
    Broadcom uses U-Boot for a lot of their bcmbca familiy chipsets. U-Boot
    stores its configuration in an environment data block.
    
    Such blocks are usually stored on flash as a separated partition at
    hardcoded address. Broadcom however decided to:
    1. Store env data block inside U-Boot partition
    2. Avoid sticking to hardcoded offsets
    3. Use custom header with "uEnv" magic and env data length
    
    Example (length 0x4000):
    $ hexdump -n 32 -C -s 0x40000 /dev/mtdblock0
    00040000  76 6e 45 75 00 40 00 00  34 89 7a 82 49 4d 41 47  |vnEu.@..4.z.IMAG|
    00040010  45 3d 4e 41 4e 44 3a 31  4d 2c 31 30 32 34 4d 00  |E=NAND:1M,1024M.|
    (0x40000 offset is unit specific and can change)
    
    Starting with the commit 118f3fbe ("dt-bindings: mtd: partitions:
    support label/name only partition") DT can describe partitions matching
    them by a name (without specifying actual address). With that feature
    and this binding change it's possible to:
    1. Specify DT node for Broadcom's U-Boot env data subpartition
    2. Add nodes for specific environment data variables
    3. Reference them as NVMEM cells
    
    This binding is unlikely to help Broadcom's U-Boot. U-Boot SPL needs to
    find environment data early (before it accesses DTB) and it does that by
    looking for an "uEnv" magic. Dirty way.
    
    This binding can however be used by operating systems. It allows
    describing cleanly U-Boot, its env data and variables. It tells
    operating system about Broadcom-specific env data so it can parse it.
    Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
    Link: https://lore.kernel.org/r/20221018154202.4634-2-zajec5@gmail.comSigned-off-by: default avatarRob Herring <robh@kernel.org>
    6b0584c1
u-boot,env.yaml 2.34 KB