2023-03-09 09:35:16

by Rafał Miłecki

[permalink] [raw]
Subject: [PATCH] dt-bindings: nvmem: layouts: add fixed-layout

From: Rafał Miłecki <[email protected]>

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 <[email protected]>
---
.../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 <[email protected]>
+
+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

--
2.34.1



2023-03-09 09:48:10

by Rafał Miłecki

[permalink] [raw]
Subject: Re: [PATCH] dt-bindings: nvmem: layouts: add fixed-layout

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.

2023-03-09 10:25:25

by Michael Walle

[permalink] [raw]
Subject: Re: [PATCH] dt-bindings: nvmem: layouts: add fixed-layout

Hi,

Am 2023-03-09 10:34, schrieb Rafał Miłecki:
> From: Rafał Miłecki <[email protected]>
>
> 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 <[email protected]>
> ---
> .../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 <[email protected]>
> +
> +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