Re: [PATCH RFC linux] dt-bindings: nvmem: Add binding for U-Boot environment NVMEM provider

Srinivas Kandagatla
2021-10-14T13:17:57Z

On 14/10/2021 00:20, Marek Behún wrote:
> Add device tree bindings for U-Boot environment NVMEM provider.
>
> U-Boot environment can be stored at a specific offset of a MTD device,
> EEPROM, MMC, NAND or SATA device, on an UBI volume, or in a file on a
> filesystem.
>
> The environment can contain information such as device's MAC address,
> which should be used by the ethernet controller node.
>

Have you looked at
./Documentation/devicetree/bindings/mtd/partitions/nvmem-cells.yaml ?

--srini

> Signed-off-by: Marek Behún <kabel@kernel.org>
> ---
> .../bindings/nvmem/denx,u-boot-env.yaml | 88 +++++++++++++++++++
> include/dt-bindings/nvmem/u-boot-env.h | 18 ++++
> 2 files changed, 106 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/nvmem/denx,u-boot-env.yaml
> create mode 100644 include/dt-bindings/nvmem/u-boot-env.h
>
> diff --git a/Documentation/devicetree/bindings/nvmem/denx,u-boot-env.yaml b/Documentation/devicetree/bindings/nvmem/denx,u-boot-env.yaml
> new file mode 100644
> index 000000000000..56505c08e622
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/nvmem/denx,u-boot-env.yaml
> @@ -0,0 +1,88 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/nvmem/denx,u-boot-env.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: U-Boot environment NVMEM Device Tree Bindings
> +
> +maintainers:
> + - Marek Behún <kabel@kernel.org>
> +
> +description:
> + This binding represents U-Boot's environment NVMEM settings which can be
> + stored on a specific offset of an EEPROM, MMC, NAND or SATA device, or
> + an UBI volume, or in a file on a filesystem.
> +
> +properties:
> + compatible:
> + const: denx,u-boot-env
> +
> + path:
> + description:
> + The path to the file containing the environment if on a filesystem.
> + $ref: /schemas/types.yaml#/definitions/string
> +
> +patternProperties:
> + "^[^=]+$":
> + type: object
> +
> + description:
> + This node represents one U-Boot environment variable, which is also one
> + NVMEM data cell.
> +
> + properties:
> + name:
> + description:
> + If the variable name contains characters not allowed in device tree node
> + name, use this property to specify the name, otherwise the variable name
> + is equal to node name.
> + $ref: /schemas/types.yaml#/definitions/string
> +
> + type:
> + description:
> + Type of the variable. Since variables, even integers and MAC addresses,
> + are stored as strings in U-Boot environment, for proper conversion the
> + type needs to be specified. Use one of the U_BOOT_ENV_TYPE_* prefixed
> + definitions from include/dt-bindings/nvmem/u-boot-env.h.
> + $ref: /schemas/types.yaml#/definitions/uint32
> + minimum: 0
> + maximum: 5
> +
> + required:
> + - type
> +
> +required:
> + - compatible
> +
> +additionalProperties: true
> +
> +examples:
> + - |
> +
> + #include <dt-bindings/nvmem/u-boot-env.h>
> +
> + spi-flash {
> + partitions {
> + compatible = "fixed-partitions";
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + partition@180000 {
> + compatible = "denx,u-boot-env";
> + label = "u-boot-env";
> + reg = <0x180000 0x10000>;
> +
> + eth0_addr: ethaddr {
> + type = <U_BOOT_ENV_TYPE_MAC_ADDRESS>;
> + };
> + };
> + };
> + };
> +
> + ethernet-controller {
> + nvmem-cells = <&eth0_addr>;
> + nvmem-cell-names = "mac-address";
> + };
> +
> +...
> diff --git a/include/dt-bindings/nvmem/u-boot-env.h b/include/dt-bindings/nvmem/u-boot-env.h
> new file mode 100644
> index 000000000000..760e5b240619
> --- /dev/null
> +++ b/include/dt-bindings/nvmem/u-boot-env.h
> @@ -0,0 +1,18 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Macros for U-Boot environment NVMEM device tree bindings.
> + *
> + * Copyright (C) 2021 Marek Behún <kabel@kernel.org>
> + */
> +
> +#ifndef __DT_BINDINGS_NVMEM_U_BOOT_ENV_H
> +#define __DT_BINDINGS_NVMEM_U_BOOT_ENV_H
> +
> +#define U_BOOT_ENV_TYPE_STRING 0
> +#define U_BOOT_ENV_TYPE_ULONG 1
> +#define U_BOOT_ENV_TYPE_BOOL 2
> +#define U_BOOT_ENV_TYPE_MAC_ADDRESS 3
> +#define U_BOOT_ENV_TYPE_ULONG_HEX 4
> +#define U_BOOT_ENV_TYPE_ULONG_DEC 5
> +
> +#endif /* __DT_BINDINGS_NVMEM_U_BOOT_ENV_H */
>