dt-bindings: nvmem: layouts: add fixed-layout

Message ID 20230309093410.15214-1-zajec5@gmail.com
State New
Headers
Series dt-bindings: nvmem: layouts: add fixed-layout |

Commit Message

Rafał Miłecki March 9, 2023, 9:34 a.m. UTC
  From: Rafał Miłecki <rafal@milecki.pl>

With the introduction of NVMEM layouts I believe we should prefer and
support describing all NVMEM devices content in the "nvmem-layout" node.
Inluding fixed NVMEM cells (those with hardcoded offset & size).

This seems to be cleaner design and more explicit.

Introduce a binding allowing fixed NVMEM cells as a type of layout.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../bindings/nvmem/layouts/fixed-layout.yaml  | 52 +++++++++++++++++++
 .../bindings/nvmem/layouts/nvmem-layout.yaml  |  1 +
 2 files changed, 53 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml
  

Comments

Rafał Miłecki March 9, 2023, 9:47 a.m. UTC | #1
On 9.03.2023 10:34, Rafał Miłecki wrote:
> With the introduction of NVMEM layouts I believe we should prefer and
> support describing all NVMEM devices content in the "nvmem-layout" node.
> Inluding fixed NVMEM cells (those with hardcoded offset & size).
> 
> This seems to be cleaner design and more explicit.
> 
> Introduce a binding allowing fixed NVMEM cells as a type of layout.

While this is obvious to me I should make it clear anyway:

We must not break backward compatibility. Old binding should remain
supported. We may want to deprecate old binding but we have to support
existing DT files.
  
Michael Walle March 9, 2023, 10:25 a.m. UTC | #2
Hi,

Am 2023-03-09 10:34, schrieb Rafał Miłecki:
> From: Rafał Miłecki <rafal@milecki.pl>
> 
> With the introduction of NVMEM layouts I believe we should prefer and
> support describing all NVMEM devices content in the "nvmem-layout" 
> node.
> Inluding fixed NVMEM cells (those with hardcoded offset & size).
> 
> This seems to be cleaner design and more explicit.
> 
> Introduce a binding allowing fixed NVMEM cells as a type of layout.
> 
> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> ---
>  .../bindings/nvmem/layouts/fixed-layout.yaml  | 52 +++++++++++++++++++
>  .../bindings/nvmem/layouts/nvmem-layout.yaml  |  1 +
>  2 files changed, 53 insertions(+)
>  create mode 100644
> Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml
> 
> diff --git
> a/Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml
> b/Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml
> new file mode 100644
> index 000000000000..7eb86c999a5e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml
> @@ -0,0 +1,52 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/nvmem/layouts/fixed-layout.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NVMEM layout for fixed NVMEM cells
> +
> +description:
> +  Many NVMEM devices have hardcoded cells layout (offset and size of 
> specific
> +  NVMEM content doesn't change).
> +
> +  This binding allows defining such cells using NVMEM layout. It can 
> be used on
> +  top of any NVMEM device.
> +
> +maintainers:
> +  - Rafał Miłecki <rafal@milecki.pl>
> +
> +properties:
> +  compatible:
> +    const: fixed-layout
> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 1
> +
> +patternProperties:
> +  "@[a-f0-9]+$":
> +    type: object
> +    description: NVMEM cell
> +    properties:
> +      reg:
> +        maxItems: 1

Looking at Documentation/devicetree/bindings/nvmem/nvmem.yaml this
is missing the bits property. Also, can we share that information
between the old style and the new style somehow so we don't
duplicate that here?

-michael

> +
> +required:
> +  - compatible
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    nvmem-layout {
> +        compatible = "fixed-layout";
> +        #address-cells = <1>;
> +        #size-cells = <1>;
> +
> +        calibration@4000 {
> +            reg = <0x4000 0x100>;
> +        };
> +    };
> diff --git
> a/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
> b/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
> index 8512ee538c4c..03da7848c713 100644
> --- a/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
> +++ b/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
> @@ -18,6 +18,7 @@ description: |
>    perform their parsing. The nvmem-layout container is here to 
> describe these.
> 
>  oneOf:
> +  - $ref: fixed-layout.yaml
>    - $ref: kontron,sl28-vpd.yaml
>    - $ref: onie,tlv-layout.yaml
  

Patch

diff --git a/Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml b/Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml
new file mode 100644
index 000000000000..7eb86c999a5e
--- /dev/null
+++ b/Documentation/devicetree/bindings/nvmem/layouts/fixed-layout.yaml
@@ -0,0 +1,52 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/nvmem/layouts/fixed-layout.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVMEM layout for fixed NVMEM cells
+
+description:
+  Many NVMEM devices have hardcoded cells layout (offset and size of specific
+  NVMEM content doesn't change).
+
+  This binding allows defining such cells using NVMEM layout. It can be used on
+  top of any NVMEM device.
+
+maintainers:
+  - Rafał Miłecki <rafal@milecki.pl>
+
+properties:
+  compatible:
+    const: fixed-layout
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+patternProperties:
+  "@[a-f0-9]+$":
+    type: object
+    description: NVMEM cell
+    properties:
+      reg:
+        maxItems: 1
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    nvmem-layout {
+        compatible = "fixed-layout";
+        #address-cells = <1>;
+        #size-cells = <1>;
+
+        calibration@4000 {
+            reg = <0x4000 0x100>;
+        };
+    };
diff --git a/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml b/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
index 8512ee538c4c..03da7848c713 100644
--- a/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
+++ b/Documentation/devicetree/bindings/nvmem/layouts/nvmem-layout.yaml
@@ -18,6 +18,7 @@  description: |
   perform their parsing. The nvmem-layout container is here to describe these.
 
 oneOf:
+  - $ref: fixed-layout.yaml
   - $ref: kontron,sl28-vpd.yaml
   - $ref: onie,tlv-layout.yaml