mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 10:01:39 -05:00
Some devices reserve a larger NVMEM region for the U-Boot environment than the actual environment data length used by U-Boot itself. The CRC32 in the U-Boot header is calculated over the smaller data length, causing CRC validation to fail when Linux reads the full partition. Allow an optional device tree property "env-size" to specify the environment data size to use for CRC computation. v2: add missing $ref line to DT binding Signed-off-by: Jascha Sundaresan <flizarthanon@gmail.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Srinivas Kandagatla <srini@kernel.org> Link: https://patch.msgid.link/20251114110636.143268-5-srini@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
140 lines
3.4 KiB
YAML
140 lines
3.4 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/nvmem/layouts/u-boot,env.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: U-Boot environment variables layout
|
|
|
|
description: |
|
|
U-Boot uses environment variables to store device parameters and
|
|
configuration. They may be used for booting process, setup or keeping end user
|
|
info.
|
|
|
|
Data is stored using U-Boot specific formats (variant specific header and NUL
|
|
separated key-value pairs).
|
|
|
|
Environment data can be stored on various storage entities, e.g.:
|
|
1. Raw flash partition
|
|
2. UBI volume
|
|
|
|
This binding allows marking storage device (as containing env data) and
|
|
specifying used format.
|
|
|
|
Variables can be defined as NVMEM device subnodes.
|
|
|
|
maintainers:
|
|
- Rafał Miłecki <rafal@milecki.pl>
|
|
|
|
properties:
|
|
compatible:
|
|
oneOf:
|
|
- description: A standalone env data block
|
|
const: u-boot,env
|
|
- description: Two redundant blocks with active one flagged
|
|
const: u-boot,env-redundant-bool
|
|
- description: Two redundant blocks with active having higher counter
|
|
const: u-boot,env-redundant-count
|
|
- description: Broadcom's variant with custom header
|
|
const: brcm,env
|
|
|
|
reg:
|
|
description: Partition offset and size for env on top of MTD
|
|
maxItems: 1
|
|
|
|
bootcmd:
|
|
type: object
|
|
description: Command to use for automatic booting
|
|
|
|
env-size:
|
|
description:
|
|
Size in bytes of the environment data used by U-Boot for CRC
|
|
calculation. If omitted, the full NVMEM region size is used.
|
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|
|
|
ethaddr:
|
|
type: object
|
|
description: Ethernet interfaces base MAC address.
|
|
additionalProperties: false
|
|
|
|
properties:
|
|
"#nvmem-cell-cells":
|
|
description: The first argument is a MAC address offset.
|
|
const: 1
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
$nodename:
|
|
not:
|
|
contains:
|
|
pattern: "^partition@[0-9a-f]+$"
|
|
then:
|
|
properties:
|
|
reg: false
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
partitions {
|
|
compatible = "fixed-partitions";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
partition@0 {
|
|
reg = <0x0 0x40000>;
|
|
label = "u-boot";
|
|
read-only;
|
|
};
|
|
|
|
env: partition@40000 {
|
|
compatible = "u-boot,env";
|
|
reg = <0x40000 0x10000>;
|
|
|
|
mac: ethaddr {
|
|
#nvmem-cell-cells = <1>;
|
|
};
|
|
};
|
|
};
|
|
- |
|
|
partitions {
|
|
compatible = "fixed-partitions";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
partition@0 {
|
|
reg = <0x0 0x100000>;
|
|
compatible = "brcm,u-boot";
|
|
label = "u-boot";
|
|
|
|
partition-u-boot-env {
|
|
compatible = "brcm,env";
|
|
env-size = <0x20000>;
|
|
|
|
ethaddr {
|
|
};
|
|
};
|
|
};
|
|
};
|
|
- |
|
|
partition@0 {
|
|
reg = <0x0 0x100000>;
|
|
label = "ubi";
|
|
compatible = "linux,ubi";
|
|
|
|
volumes {
|
|
ubi-volume-u-boot-env {
|
|
volname = "env";
|
|
|
|
nvmem-layout {
|
|
compatible = "u-boot,env";
|
|
|
|
ethaddr {
|
|
#nvmem-cell-cells = <1>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|