
On 4.05.2022 11:23, Ahmad Fatoum wrote:
Hello Rafał,
On 03.05.22 18:56, Rafał Miłecki wrote:
From: Rafał Miłecki rafal@milecki.pl
U-Boot stores its setup as environment variables. It's a list of key-value pairs stored on flash device with a custom header.
This commit adds an NVMEM driver that:
- Provides NVMEM access to environment vars binary data
- Extracts variables as NVMEM cells
It can be used for:
- Accessing env variables from user-space
Is this already possible? The only interface I know of is the /nvmem file in sysfs, but that one is not per cell, but per device.
Maybe that wasn't precise enough, I should probably write: 1. Parsing binary data from user-space
In future I'd like to extend U-Boot's "printenv" tool to support reading env variables blob using Linux's sysfs as documented in the Documentation/ABI/stable/sysfs-bus-nvmem
- label = of_get_property(np->parent, "label", NULL);
- if (!label)
label = np->parent->name;
- priv->mtd = get_mtd_device_nm(label);
- if (IS_ERR(priv->mtd)) {
dev_err(dev, "Failed to find \"%s\" MTD device: %ld\n", label, PTR_ERR(priv->mtd));
return PTR_ERR(priv->mtd);
- }
I am trying to make sense of this using the binding, but I can't. Do you have an example device tree fragment?
This comes from unreleased yet board I'm working on.
It stores U-Boot env variables in the middle of U-Boot binary.
partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>;
partition@0 { label = "loader"; reg = <0x0 0x100000>;
partition@40000 { compatible = "u-boot,env"; label = "u-boot-env"; reg = <0x40000 0x4000>; }; };
partition@100000 { label = "image"; reg = <0x100000 0x1fe00000>; }; };