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

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

 





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@xxxxxxxxxx>
---
  .../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@xxxxxxxxxx>
+
+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@xxxxxxxxxx>
+ */
+
+#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 */




[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