2022-05-03 16:56:45

by Christian Marangi

[permalink] [raw]
Subject: [PATCH v2 2/2] dt-bindings: mtd: qcom_nandc: document qcom,boot-pages binding

Document new qcom,boot_pages binding used to apply special
read/write configuration to boot pages.

QCOM apply a special configuration where spare data is not protected
by ECC for some special pages (used for boot partition). Add
Documentation on how to declare these special pages.

Signed-off-by: Ansuel Smith <[email protected]>
---
.../devicetree/bindings/mtd/qcom,nandc.yaml | 22 +++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
index 84ad7ff30121..fafeca0cafff 100644
--- a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
+++ b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
@@ -102,6 +102,26 @@ allOf:
- const: rx
- const: cmd

+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,ipq8074-nand
+
+ then:
+ properties:
+ qcom,boot-pages:
+ $ref: /schemas/types.yaml#/definitions/uint32-matrix
+ description:
+ Some special page used by boot partition have spare data
+ not protected by ECC. Use this to declare these special page
+ by defining first the offset and then the size.
+
+ It's in the form of <offset1 size1 offset2 size2 offset3 ...>
+
+ Refer to the ipq8064 example on how to use this special binding.
+
required:
- compatible
- reg
@@ -135,6 +155,8 @@ examples:
nand-ecc-strength = <4>;
nand-bus-width = <8>;

+ qcom,boot-pages = <0x0 0x58a0000>;
+
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
--
2.34.1


2022-05-17 11:27:33

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] dt-bindings: mtd: qcom_nandc: document qcom,boot-pages binding

On Tue, May 03, 2022 at 05:43:53PM +0200, Ansuel Smith wrote:
> Document new qcom,boot_pages binding used to apply special

s/boot_pages/boot-pages/

> read/write configuration to boot pages.
>
> QCOM apply a special configuration where spare data is not protected
> by ECC for some special pages (used for boot partition). Add
> Documentation on how to declare these special pages.
>
> Signed-off-by: Ansuel Smith <[email protected]>
> ---
> .../devicetree/bindings/mtd/qcom,nandc.yaml | 22 +++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> index 84ad7ff30121..fafeca0cafff 100644
> --- a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> +++ b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> @@ -102,6 +102,26 @@ allOf:
> - const: rx
> - const: cmd
>
> + - if:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - qcom,ipq8074-nand
> +
> + then:
> + properties:
> + qcom,boot-pages:
> + $ref: /schemas/types.yaml#/definitions/uint32-matrix

You need to define the dimensions. Something like this:

items:
items:
- description: offset
- description: size

> + description:
> + Some special page used by boot partition have spare data
> + not protected by ECC. Use this to declare these special page
> + by defining first the offset and then the size.
> +
> + It's in the form of <offset1 size1 offset2 size2 offset3 ...>
> +
> + Refer to the ipq8064 example on how to use this special binding.
> +
> required:
> - compatible
> - reg
> @@ -135,6 +155,8 @@ examples:
> nand-ecc-strength = <4>;
> nand-bus-width = <8>;
>
> + qcom,boot-pages = <0x0 0x58a0000>;
> +
> partitions {
> compatible = "fixed-partitions";
> #address-cells = <1>;
> --
> 2.34.1
>
>

2022-05-18 04:49:28

by Christian Marangi

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] dt-bindings: mtd: qcom_nandc: document qcom,boot-pages binding

On Mon, May 16, 2022 at 01:49:12PM -0500, Rob Herring wrote:
> On Tue, May 03, 2022 at 05:43:53PM +0200, Ansuel Smith wrote:
> > Document new qcom,boot_pages binding used to apply special
>
> s/boot_pages/boot-pages/
>
> > read/write configuration to boot pages.
> >
> > QCOM apply a special configuration where spare data is not protected
> > by ECC for some special pages (used for boot partition). Add
> > Documentation on how to declare these special pages.
> >
> > Signed-off-by: Ansuel Smith <[email protected]>
> > ---
> > .../devicetree/bindings/mtd/qcom,nandc.yaml | 22 +++++++++++++++++++
> > 1 file changed, 22 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> > index 84ad7ff30121..fafeca0cafff 100644
> > --- a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> > +++ b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> > @@ -102,6 +102,26 @@ allOf:
> > - const: rx
> > - const: cmd
> >
> > + - if:
> > + properties:
> > + compatible:
> > + contains:
> > + enum:
> > + - qcom,ipq8074-nand
> > +
> > + then:
> > + properties:
> > + qcom,boot-pages:
> > + $ref: /schemas/types.yaml#/definitions/uint32-matrix
>
> You need to define the dimensions. Something like this:
>
> items:
> items:
> - description: offset
> - description: size
>

Considering this is not limited to one item how should I declare that an
user can declare multiple items? (the user can declare multiple zones)
Declaring minItems without a maxItems?

I assume in the suggested form it's assumed
minItems: 1
maxItems: 1
so this would be problematic.

> > + description:
> > + Some special page used by boot partition have spare data
> > + not protected by ECC. Use this to declare these special page
> > + by defining first the offset and then the size.
> > +
> > + It's in the form of <offset1 size1 offset2 size2 offset3 ...>
> > +
> > + Refer to the ipq8064 example on how to use this special binding.
> > +
> > required:
> > - compatible
> > - reg
> > @@ -135,6 +155,8 @@ examples:
> > nand-ecc-strength = <4>;
> > nand-bus-width = <8>;
> >
> > + qcom,boot-pages = <0x0 0x58a0000>;
> > +
> > partitions {
> > compatible = "fixed-partitions";
> > #address-cells = <1>;
> > --
> > 2.34.1
> >
> >

--
Ansuel

2022-05-18 18:19:07

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/2] dt-bindings: mtd: qcom_nandc: document qcom,boot-pages binding

On Tue, May 17, 2022 at 10:56:09PM +0200, Ansuel Smith wrote:
> On Mon, May 16, 2022 at 01:49:12PM -0500, Rob Herring wrote:
> > On Tue, May 03, 2022 at 05:43:53PM +0200, Ansuel Smith wrote:
> > > Document new qcom,boot_pages binding used to apply special
> >
> > s/boot_pages/boot-pages/
> >
> > > read/write configuration to boot pages.
> > >
> > > QCOM apply a special configuration where spare data is not protected
> > > by ECC for some special pages (used for boot partition). Add
> > > Documentation on how to declare these special pages.
> > >
> > > Signed-off-by: Ansuel Smith <[email protected]>
> > > ---
> > > .../devicetree/bindings/mtd/qcom,nandc.yaml | 22 +++++++++++++++++++
> > > 1 file changed, 22 insertions(+)
> > >
> > > diff --git a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> > > index 84ad7ff30121..fafeca0cafff 100644
> > > --- a/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> > > +++ b/Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
> > > @@ -102,6 +102,26 @@ allOf:
> > > - const: rx
> > > - const: cmd
> > >
> > > + - if:
> > > + properties:
> > > + compatible:
> > > + contains:
> > > + enum:
> > > + - qcom,ipq8074-nand
> > > +
> > > + then:
> > > + properties:
> > > + qcom,boot-pages:
> > > + $ref: /schemas/types.yaml#/definitions/uint32-matrix
> >
> > You need to define the dimensions. Something like this:
> >
> > items:
> > items:
> > - description: offset
> > - description: size
> >
>
> Considering this is not limited to one item how should I declare that an
> user can declare multiple items? (the user can declare multiple zones)
> Declaring minItems without a maxItems?
>
> I assume in the suggested form it's assumed
> minItems: 1
> maxItems: 1
> so this would be problematic.

No, the outer 'items' being a schema rather than a list means it applies
to all items and does not set a size of (offset, size) pairs.

If you do have a maximum number, you could set the range.

Rob