On Mon, Jul 24, 2023 at 10:26:30AM +0200, Christian Marangi wrote: > Add support for u-boot,env-size new property. > > Permit to declare a custom size of the U-Boot env that differs than the > partition size where the U-Boot env is located. > > U-Boot env is validated by calculating the CRC32 on the entire env > and in some specific case, the env size might differ from the partition > size resulting in wrong CRC32 calculation than the expected one saved at > the start of the partition. Why can't you just change the partition size? There is no size really because it is just defined in DT. > > This happens when U-Boot is compiled by hardcoding a specific env size > but the env is actually placed in a bigger partition, resulting in needing > to provide a custom value. If u-boot is compiled that way, then shouldn't it have that size contained within it? What happens when the DT doesn't match? > > Declaring this property, this value will be used for NVMEM size instead of > the mtd partition. > > Add also an example to make it clear the scenario of mismatched > partition size and actual U-Boot env. If we do have this, then perhaps there is a generic need for a data size property. > > Signed-off-by: Christian Marangi <ansuelsmth@xxxxxxxxx> > --- > .../devicetree/bindings/nvmem/u-boot,env.yaml | 47 +++++++++++++++++++ > 1 file changed, 47 insertions(+) > > diff --git a/Documentation/devicetree/bindings/nvmem/u-boot,env.yaml b/Documentation/devicetree/bindings/nvmem/u-boot,env.yaml > index 36d97fb87865..3970725a2c57 100644 > --- a/Documentation/devicetree/bindings/nvmem/u-boot,env.yaml > +++ b/Documentation/devicetree/bindings/nvmem/u-boot,env.yaml > @@ -44,6 +44,24 @@ properties: > reg: > maxItems: 1 > > + u-boot,env-size: > + description: | > + Permit to declare a custom size of the U-Boot env that differs than the > + partition size where the U-Boot env is located. > + > + U-Boot env is validated by calculating the CRC32 on the entire env > + and in some specific case, the env size might differ from the partition > + size resulting in wrong CRC32 calculation than the expected one saved at > + the start of the partition. > + > + This happens when U-Boot is compiled by hardcoding a specific env size > + but the env is actually placed in a bigger partition, resulting in needing > + to provide a custom value. > + > + Declaring this property, this value will be used for NVMEM size instead of > + the mtd partition. > + $ref: /schemas/types.yaml#/definitions/uint32 > + > bootcmd: > type: object > description: Command to use for automatic booting > @@ -99,3 +117,32 @@ examples: > }; > }; > }; > + - | > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition@0 { > + reg = <0x0 0xc80000>; > + label = "qcadata"; > + read-only; > + }; > + > + partition@c80000 { > + label = "APPSBL"; > + reg = <0xc80000 0x500000>; > + read-only; > + }; > + > + partition@1180000 { > + compatible = "u-boot,env"; > + reg = <0x1180000 0x80000>; > + > + u-boot,env-size = <0x40000>; > + > + mac1: ethaddr { > + #nvmem-cell-cells = <1>; > + }; > + }; > + }; > -- > 2.40.1 >