Re: [PATCH V2] nvmem: add driver handling U-Boot environment variables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>

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:
1. Provides NVMEM access to environment vars binary data
2. Extracts variables as NVMEM cells

It can be used for:
1. 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>;
	};
};



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux