2020-08-02 18:03:59

by Christian Eggers

[permalink] [raw]
Subject: [PATCH] dt-bindings: at25: convert the binding document to yaml

Convert the binding document for at25 EEPROMs from txt to yaml. The
compatible property doesn't use a regex pattern (as in at24), because
the 'vendor' and the 'model' are an "infinite" list (even if only 5
combinations are found in the current dts files). The settings required
by a driver are given as separate properties.

Signed-off-by: Christian Eggers <[email protected]>
---
On Friday, Jul 31 2020, Rob Herring wrote:
>> On Tue, Jul 28, 2020 at 1:34 AM Christian Eggers <[email protected]> wrote:
>> When I specify
>>
>> compatible:
>> enum:
>> - atmel,at25
>>
>> I get an error in dt_binding_check:
>> ...
>
> You can do:
>
> items:
> - {}
> - const: atmel,at25
>
> But really, the possible compatible strings need to be listed out. See
> at24.yaml as it had similar issues IIRC.

I think that at24 is very diffrent from at25 here (at least the linux
driver). Whilst the at24 driver extracts parameters of the chip from the
'model' part, at25 gets this information from separate properties.

As there is virtually an infinite list of possible vendors and products
for such type of hardware, is there any value to use expressions like in
the at24 binding?

Other question: What is the meaning of the maintainers field in the
binding? Is it related to the binding itself or the linux driver? I am
not the maintainer of the driver...


.../devicetree/bindings/eeprom/at25.txt | 46 +------
.../devicetree/bindings/eeprom/at25.yaml | 122 ++++++++++++++++++
2 files changed, 123 insertions(+), 45 deletions(-)
create mode 100644 Documentation/devicetree/bindings/eeprom/at25.yaml

diff --git a/Documentation/devicetree/bindings/eeprom/at25.txt b/Documentation/devicetree/bindings/eeprom/at25.txt
index fe91ecf1f61b..9b1096fb3826 100644
--- a/Documentation/devicetree/bindings/eeprom/at25.txt
+++ b/Documentation/devicetree/bindings/eeprom/at25.txt
@@ -1,45 +1 @@
-EEPROMs (SPI) compatible with Atmel at25.
-
-Required properties:
-- compatible : Should be "<vendor>,<type>", and generic value "atmel,at25".
- Example "<vendor>,<type>" values:
- "anvo,anv32e61w"
- "microchip,25lc040"
- "st,m95m02"
- "st,m95256"
-
-- reg : chip select number
-- spi-max-frequency : max spi frequency to use
-- pagesize : size of the eeprom page
-- size : total eeprom size in bytes
-- address-width : number of address bits (one of 8, 9, 16, or 24).
- For 9 bits, the MSB of the address is sent as bit 3 of the instruction
- byte, before the address byte.
-
-Optional properties:
-- spi-cpha : SPI shifted clock phase, as per spi-bus bindings.
-- spi-cpol : SPI inverse clock polarity, as per spi-bus bindings.
-- read-only : this parameter-less property disables writes to the eeprom
-- wp-gpios : GPIO to which the write-protect pin of the chip is connected
-
-Obsolete legacy properties can be used in place of "size", "pagesize",
-"address-width", and "read-only":
-- at25,byte-len : total eeprom size in bytes
-- at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h
-- at25,page-size : size of the eeprom page
-
-Additional compatible properties are also allowed.
-
-Example:
- eeprom@0 {
- compatible = "st,m95256", "atmel,at25";
- reg = <0>;
- spi-max-frequency = <5000000>;
- spi-cpha;
- spi-cpol;
- wp-gpios = <&gpio1 3 0>;
-
- pagesize = <64>;
- size = <32768>;
- address-width = <16>;
- };
+This file has been moved to at25.yaml.
\ No newline at end of file
diff --git a/Documentation/devicetree/bindings/eeprom/at25.yaml b/Documentation/devicetree/bindings/eeprom/at25.yaml
new file mode 100644
index 000000000000..437a28dab6fd
--- /dev/null
+++ b/Documentation/devicetree/bindings/eeprom/at25.yaml
@@ -0,0 +1,122 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/eeprom/at25.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: SPI EEPROMs compatible with Atmel's AT25
+
+maintainers:
+ - Christian Eggers <[email protected]>
+
+properties:
+ $nodename:
+ pattern: "^eeprom@[0-9a-f]{1,2}$"
+
+ # There are multiple known vendors who manufacture EEPROM chips compatible
+ # with Atmel's AT25. The compatible string requires two items where the
+ # 'vendor' and 'model' parts of the first are the actual chip and the second
+ # item is fixed to "atmel,at25".
+ compatible:
+ items:
+ - {}
+ - const: atmel,at25
+ description:
+ 'Should be "<vendor>,<chip>", and generic value "atmel,at25".
+ Example "<vendor>,<chip>" values:
+ "anvo,anv32e61w"
+ "microchip,25lc040"
+ "st,m95m02"
+ "st,m95256"'
+
+ reg:
+ description:
+ Chip select number.
+
+ spi-max-frequency:
+ $ref: /schemas/types.yaml#definitions/uint32
+ description:
+ Maximum SPI frequency to use.
+
+ pagesize:
+ $ref: /schemas/types.yaml#definitions/uint32
+ description:
+ Size of the eeprom page.
+
+ size:
+ $ref: /schemas/types.yaml#definitions/uint32
+ description:
+ Total eeprom size in bytes.
+
+ address-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 8, 9, 16, 24 ]
+ description:
+ Number of address bits.
+ For 9 bits, the MSB of the address is sent as bit 3 of the instruction
+ byte, before the address byte.
+
+ spi-cpha: true
+
+ spi-cpol: true
+
+ read-only:
+ description:
+ Disable writes to the eeprom.
+ type: boolean
+
+ wp-gpios:
+ maxItems: 1
+ description:
+ GPIO to which the write-protect pin of the chip is connected.
+
+ # Deprecated: at25,byte-len, at25,addr-mode, at25,page-size
+ at25,byte-len:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Total eeprom size in bytes. Deprecated, use "size" property instead.
+ deprecated: true
+
+ at25,addr-mode:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Addr-mode flags, as defined in include/linux/spi/eeprom.h.
+ Deprecated, use "address-width" property instead.
+ deprecated: true
+
+ at25,page-size:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Size of the eeprom page. Deprecated, use "pagesize" property instead.
+ deprecated: true
+
+required:
+ - compatible
+ - reg
+ - spi-max-frequency
+ - pagesize
+ - size
+ - address-width
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ spi0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ eeprom@0 {
+ compatible = "st,m95256", "atmel,at25";
+ reg = <0>;
+ spi-max-frequency = <5000000>;
+ spi-cpha;
+ spi-cpol;
+ wp-gpios = <&gpio1 3 0>;
+
+ pagesize = <64>;
+ size = <32768>;
+ address-width = <16>;
+ };
+ };
--
Christian Eggers
Embedded software developer

Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRA 57918
Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRB 54477
Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; Markus Zeiler


2020-08-03 22:14:40

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH] dt-bindings: at25: convert the binding document to yaml

On Sun, Aug 02, 2020 at 07:46:26PM +0200, Christian Eggers wrote:
> Convert the binding document for at25 EEPROMs from txt to yaml. The
> compatible property doesn't use a regex pattern (as in at24), because
> the 'vendor' and the 'model' are an "infinite" list (even if only 5
> combinations are found in the current dts files). The settings required
> by a driver are given as separate properties.
>
> Signed-off-by: Christian Eggers <[email protected]>
> ---
> On Friday, Jul 31 2020, Rob Herring wrote:
> >> On Tue, Jul 28, 2020 at 1:34 AM Christian Eggers <[email protected]> wrote:
> >> When I specify
> >>
> >> compatible:
> >> enum:
> >> - atmel,at25
> >>
> >> I get an error in dt_binding_check:
> >> ...
> >
> > You can do:
> >
> > items:
> > - {}
> > - const: atmel,at25
> >
> > But really, the possible compatible strings need to be listed out. See
> > at24.yaml as it had similar issues IIRC.
>
> I think that at24 is very diffrent from at25 here (at least the linux
> driver). Whilst the at24 driver extracts parameters of the chip from the
> 'model' part, at25 gets this information from separate properties.
>
> As there is virtually an infinite list of possible vendors and products
> for such type of hardware, is there any value to use expressions like in
> the at24 binding?

Maybe so, but there are only 4 compatible strings to document in the
tree. That's not a lot to cover and we already have some of them in
free-form text. If the infinite number becomes a problem we can always
address that later. I'm sure that less than infinite buyers/products
will prevent infinite producers.

So it is much less a mess compared to at24.

>
> Other question: What is the meaning of the maintainers field in the
> binding?

Someone who knows the h/w and can review binding changes.

> Is it related to the binding itself or the linux driver?
> I am
> not the maintainer of the driver...

Doesn't have to be the same person.

>
>
> .../devicetree/bindings/eeprom/at25.txt | 46 +------
> .../devicetree/bindings/eeprom/at25.yaml | 122 ++++++++++++++++++
> 2 files changed, 123 insertions(+), 45 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/eeprom/at25.yaml
>
> diff --git a/Documentation/devicetree/bindings/eeprom/at25.txt b/Documentation/devicetree/bindings/eeprom/at25.txt
> index fe91ecf1f61b..9b1096fb3826 100644
> --- a/Documentation/devicetree/bindings/eeprom/at25.txt
> +++ b/Documentation/devicetree/bindings/eeprom/at25.txt
> @@ -1,45 +1 @@
> -EEPROMs (SPI) compatible with Atmel at25.
> -
> -Required properties:
> -- compatible : Should be "<vendor>,<type>", and generic value "atmel,at25".
> - Example "<vendor>,<type>" values:
> - "anvo,anv32e61w"
> - "microchip,25lc040"
> - "st,m95m02"
> - "st,m95256"
> -
> -- reg : chip select number
> -- spi-max-frequency : max spi frequency to use
> -- pagesize : size of the eeprom page
> -- size : total eeprom size in bytes
> -- address-width : number of address bits (one of 8, 9, 16, or 24).
> - For 9 bits, the MSB of the address is sent as bit 3 of the instruction
> - byte, before the address byte.
> -
> -Optional properties:
> -- spi-cpha : SPI shifted clock phase, as per spi-bus bindings.
> -- spi-cpol : SPI inverse clock polarity, as per spi-bus bindings.
> -- read-only : this parameter-less property disables writes to the eeprom
> -- wp-gpios : GPIO to which the write-protect pin of the chip is connected
> -
> -Obsolete legacy properties can be used in place of "size", "pagesize",
> -"address-width", and "read-only":
> -- at25,byte-len : total eeprom size in bytes
> -- at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h
> -- at25,page-size : size of the eeprom page
> -
> -Additional compatible properties are also allowed.
> -
> -Example:
> - eeprom@0 {
> - compatible = "st,m95256", "atmel,at25";
> - reg = <0>;
> - spi-max-frequency = <5000000>;
> - spi-cpha;
> - spi-cpol;
> - wp-gpios = <&gpio1 3 0>;
> -
> - pagesize = <64>;
> - size = <32768>;
> - address-width = <16>;
> - };
> +This file has been moved to at25.yaml.
> \ No newline at end of file

Fix this.

> diff --git a/Documentation/devicetree/bindings/eeprom/at25.yaml b/Documentation/devicetree/bindings/eeprom/at25.yaml
> new file mode 100644
> index 000000000000..437a28dab6fd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/eeprom/at25.yaml
> @@ -0,0 +1,122 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/eeprom/at25.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: SPI EEPROMs compatible with Atmel's AT25
> +
> +maintainers:
> + - Christian Eggers <[email protected]>
> +
> +properties:
> + $nodename:
> + pattern: "^eeprom@[0-9a-f]{1,2}$"
> +
> + # There are multiple known vendors who manufacture EEPROM chips compatible
> + # with Atmel's AT25. The compatible string requires two items where the
> + # 'vendor' and 'model' parts of the first are the actual chip and the second
> + # item is fixed to "atmel,at25".
> + compatible:
> + items:
> + - {}
> + - const: atmel,at25

This doesn't work for 'atmel,at25' alone. You'll need a 'oneOf' with a
single entry.

> + description:
> + 'Should be "<vendor>,<chip>", and generic value "atmel,at25".
> + Example "<vendor>,<chip>" values:
> + "anvo,anv32e61w"
> + "microchip,25lc040"
> + "st,m95m02"
> + "st,m95256"'
> +
> + reg:
> + description:
> + Chip select number.
> +
> + spi-max-frequency:
> + $ref: /schemas/types.yaml#definitions/uint32

This is common and already has a definition. Just need 'true'.

> + description:
> + Maximum SPI frequency to use.
> +
> + pagesize:
> + $ref: /schemas/types.yaml#definitions/uint32
> + description:
> + Size of the eeprom page.

Constraints? I'd assume it's some power of 2 set.
> +
> + size:
> + $ref: /schemas/types.yaml#definitions/uint32
> + description:
> + Total eeprom size in bytes.
> +
> + address-width:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + enum: [ 8, 9, 16, 24 ]
> + description:
> + Number of address bits.
> + For 9 bits, the MSB of the address is sent as bit 3 of the instruction
> + byte, before the address byte.
> +
> + spi-cpha: true
> +
> + spi-cpol: true
> +
> + read-only:
> + description:
> + Disable writes to the eeprom.
> + type: boolean
> +
> + wp-gpios:
> + maxItems: 1
> + description:
> + GPIO to which the write-protect pin of the chip is connected.
> +
> + # Deprecated: at25,byte-len, at25,addr-mode, at25,page-size
> + at25,byte-len:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + Total eeprom size in bytes. Deprecated, use "size" property instead.
> + deprecated: true
> +
> + at25,addr-mode:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + Addr-mode flags, as defined in include/linux/spi/eeprom.h.
> + Deprecated, use "address-width" property instead.
> + deprecated: true
> +
> + at25,page-size:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + Size of the eeprom page. Deprecated, use "pagesize" property instead.
> + deprecated: true
> +
> +required:
> + - compatible
> + - reg
> + - spi-max-frequency
> + - pagesize
> + - size
> + - address-width
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> + spi0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + eeprom@0 {
> + compatible = "st,m95256", "atmel,at25";
> + reg = <0>;
> + spi-max-frequency = <5000000>;
> + spi-cpha;
> + spi-cpol;
> + wp-gpios = <&gpio1 3 0>;
> +
> + pagesize = <64>;
> + size = <32768>;
> + address-width = <16>;
> + };
> + };
> --
> Christian Eggers
> Embedded software developer
>
> Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
> Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRA 57918
> Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
> Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRB 54477
> Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; Markus Zeiler
>

2020-08-04 06:34:50

by Christian Eggers

[permalink] [raw]
Subject: [PATCH v2] dt-bindings: at25: convert the binding document to yaml

Convert the binding document for at25 EEPROMs from txt to yaml.

Signed-off-by: Christian Eggers <[email protected]>
---
On Tuesday, 4 August 2020, 00:12:06 CEST, Rob Herring wrote:
> On Sun, Aug 02, 2020 at 07:46:26PM +0200, Christian Eggers wrote:
> > As there is virtually an infinite list of possible vendors and products
> > for such type of hardware, is there any value to use expressions like in
> > the at24 binding?
>
> Maybe so, but there are only 4 compatible strings to document in the
> tree. That's not a lot to cover and we already have some of them in
> free-form text. If the infinite number becomes a problem we can always
> address that later. I'm sure that less than infinite buyers/products
> will prevent infinite producers.

Added the following devices to the new yaml binding:
- Examples from description of previous txt binding.
- Result of grepping .dts and .dtsi files for atmel,at25
- Devices I personally use (dts files not mainlined yet).

.../devicetree/bindings/eeprom/at25.txt | 46 +------
.../devicetree/bindings/eeprom/at25.yaml | 129 ++++++++++++++++++
2 files changed, 130 insertions(+), 45 deletions(-)
create mode 100644 Documentation/devicetree/bindings/eeprom/at25.yaml

diff --git a/Documentation/devicetree/bindings/eeprom/at25.txt b/Documentation/devicetree/bindings/eeprom/at25.txt
index fe91ecf1f61b..d9ef7dc5fb8e 100644
--- a/Documentation/devicetree/bindings/eeprom/at25.txt
+++ b/Documentation/devicetree/bindings/eeprom/at25.txt
@@ -1,45 +1 @@
-EEPROMs (SPI) compatible with Atmel at25.
-
-Required properties:
-- compatible : Should be "<vendor>,<type>", and generic value "atmel,at25".
- Example "<vendor>,<type>" values:
- "anvo,anv32e61w"
- "microchip,25lc040"
- "st,m95m02"
- "st,m95256"
-
-- reg : chip select number
-- spi-max-frequency : max spi frequency to use
-- pagesize : size of the eeprom page
-- size : total eeprom size in bytes
-- address-width : number of address bits (one of 8, 9, 16, or 24).
- For 9 bits, the MSB of the address is sent as bit 3 of the instruction
- byte, before the address byte.
-
-Optional properties:
-- spi-cpha : SPI shifted clock phase, as per spi-bus bindings.
-- spi-cpol : SPI inverse clock polarity, as per spi-bus bindings.
-- read-only : this parameter-less property disables writes to the eeprom
-- wp-gpios : GPIO to which the write-protect pin of the chip is connected
-
-Obsolete legacy properties can be used in place of "size", "pagesize",
-"address-width", and "read-only":
-- at25,byte-len : total eeprom size in bytes
-- at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h
-- at25,page-size : size of the eeprom page
-
-Additional compatible properties are also allowed.
-
-Example:
- eeprom@0 {
- compatible = "st,m95256", "atmel,at25";
- reg = <0>;
- spi-max-frequency = <5000000>;
- spi-cpha;
- spi-cpol;
- wp-gpios = <&gpio1 3 0>;
-
- pagesize = <64>;
- size = <32768>;
- address-width = <16>;
- };
+This file has been moved to at25.yaml.
diff --git a/Documentation/devicetree/bindings/eeprom/at25.yaml b/Documentation/devicetree/bindings/eeprom/at25.yaml
new file mode 100644
index 000000000000..9810619a2b5c
--- /dev/null
+++ b/Documentation/devicetree/bindings/eeprom/at25.yaml
@@ -0,0 +1,129 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/eeprom/at25.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: SPI EEPROMs compatible with Atmel's AT25
+
+maintainers:
+ - Christian Eggers <[email protected]>
+
+properties:
+ $nodename:
+ pattern: "^eeprom@[0-9a-f]{1,2}$"
+
+ # There are multiple known vendors who manufacture EEPROM chips compatible
+ # with Atmel's AT25. The compatible string requires two items where the
+ # 'vendor' and 'model' parts of the first are the actual chip and the second
+ # item is fixed to "atmel,at25". Some existing bindings only have the
+ # "atmel,at25" part and should be fixed by somebody who knows vendor and
+ # product.
+ compatible:
+ oneOf:
+ - items:
+ - enum:
+ - anvo,anv32e61w
+ - atmel,at25256B
+ - fujitsu,mb85rs1mt
+ - fujitsu,mb85rs64
+ - microchip,at25160bn
+ - microchip,25lc040
+ - st,m95m02
+ - st,m95256
+
+ - const: atmel,at25
+
+ # Please don't use this alternative for new bindings.
+ - items:
+ - const: atmel,at25
+
+ reg:
+ description:
+ Chip select number.
+
+ spi-max-frequency: true
+
+ pagesize:
+ $ref: /schemas/types.yaml#definitions/uint32
+ enum: [1, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072]
+ description:
+ Size of the eeprom page.
+
+ size:
+ $ref: /schemas/types.yaml#definitions/uint32
+ description:
+ Total eeprom size in bytes.
+
+ address-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 8, 9, 16, 24 ]
+ description:
+ Number of address bits.
+ For 9 bits, the MSB of the address is sent as bit 3 of the instruction
+ byte, before the address byte.
+
+ spi-cpha: true
+
+ spi-cpol: true
+
+ read-only:
+ description:
+ Disable writes to the eeprom.
+ type: boolean
+
+ wp-gpios:
+ maxItems: 1
+ description:
+ GPIO to which the write-protect pin of the chip is connected.
+
+ # Deprecated: at25,byte-len, at25,addr-mode, at25,page-size
+ at25,byte-len:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Total eeprom size in bytes. Deprecated, use "size" property instead.
+ deprecated: true
+
+ at25,addr-mode:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Addr-mode flags, as defined in include/linux/spi/eeprom.h.
+ Deprecated, use "address-width" property instead.
+ deprecated: true
+
+ at25,page-size:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Size of the eeprom page. Deprecated, use "pagesize" property instead.
+ deprecated: true
+
+required:
+ - compatible
+ - reg
+ - spi-max-frequency
+ - pagesize
+ - size
+ - address-width
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ spi0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ eeprom@0 {
+ compatible = "st,m95256", "atmel,at25";
+ reg = <0>;
+ spi-max-frequency = <5000000>;
+ spi-cpha;
+ spi-cpol;
+ wp-gpios = <&gpio1 3 0>;
+
+ pagesize = <64>;
+ size = <32768>;
+ address-width = <16>;
+ };
+ };
--
Christian Eggers
Embedded software developer

Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRA 57918
Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRB 54477
Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; Markus Zeiler

2020-08-12 20:07:03

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2] dt-bindings: at25: convert the binding document to yaml

On Tue, Aug 04, 2020 at 08:33:07AM +0200, Christian Eggers wrote:
> Convert the binding document for at25 EEPROMs from txt to yaml.
>
> Signed-off-by: Christian Eggers <[email protected]>
> ---
> On Tuesday, 4 August 2020, 00:12:06 CEST, Rob Herring wrote:
> > On Sun, Aug 02, 2020 at 07:46:26PM +0200, Christian Eggers wrote:
> > > As there is virtually an infinite list of possible vendors and products
> > > for such type of hardware, is there any value to use expressions like in
> > > the at24 binding?
> >
> > Maybe so, but there are only 4 compatible strings to document in the
> > tree. That's not a lot to cover and we already have some of them in
> > free-form text. If the infinite number becomes a problem we can always
> > address that later. I'm sure that less than infinite buyers/products
> > will prevent infinite producers.
>
> Added the following devices to the new yaml binding:
> - Examples from description of previous txt binding.
> - Result of grepping .dts and .dtsi files for atmel,at25
> - Devices I personally use (dts files not mainlined yet).
>
> .../devicetree/bindings/eeprom/at25.txt | 46 +------
> .../devicetree/bindings/eeprom/at25.yaml | 129 ++++++++++++++++++
> 2 files changed, 130 insertions(+), 45 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/eeprom/at25.yaml
>
> diff --git a/Documentation/devicetree/bindings/eeprom/at25.txt b/Documentation/devicetree/bindings/eeprom/at25.txt
> index fe91ecf1f61b..d9ef7dc5fb8e 100644
> --- a/Documentation/devicetree/bindings/eeprom/at25.txt
> +++ b/Documentation/devicetree/bindings/eeprom/at25.txt
> @@ -1,45 +1 @@
> -EEPROMs (SPI) compatible with Atmel at25.
> -
> -Required properties:
> -- compatible : Should be "<vendor>,<type>", and generic value "atmel,at25".
> - Example "<vendor>,<type>" values:
> - "anvo,anv32e61w"
> - "microchip,25lc040"
> - "st,m95m02"
> - "st,m95256"
> -
> -- reg : chip select number
> -- spi-max-frequency : max spi frequency to use
> -- pagesize : size of the eeprom page
> -- size : total eeprom size in bytes
> -- address-width : number of address bits (one of 8, 9, 16, or 24).
> - For 9 bits, the MSB of the address is sent as bit 3 of the instruction
> - byte, before the address byte.
> -
> -Optional properties:
> -- spi-cpha : SPI shifted clock phase, as per spi-bus bindings.
> -- spi-cpol : SPI inverse clock polarity, as per spi-bus bindings.
> -- read-only : this parameter-less property disables writes to the eeprom
> -- wp-gpios : GPIO to which the write-protect pin of the chip is connected
> -
> -Obsolete legacy properties can be used in place of "size", "pagesize",
> -"address-width", and "read-only":
> -- at25,byte-len : total eeprom size in bytes
> -- at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h
> -- at25,page-size : size of the eeprom page
> -
> -Additional compatible properties are also allowed.
> -
> -Example:
> - eeprom@0 {
> - compatible = "st,m95256", "atmel,at25";
> - reg = <0>;
> - spi-max-frequency = <5000000>;
> - spi-cpha;
> - spi-cpol;
> - wp-gpios = <&gpio1 3 0>;
> -
> - pagesize = <64>;
> - size = <32768>;
> - address-width = <16>;
> - };
> +This file has been moved to at25.yaml.

We only do this to save updating a bunch of references and there aren't
any, so just remove the file.

I'd just fix it up, but this wouldn't apply for me on Linus' current
master. Please rebase and resend (You can want til rc1 if you want
because that's what I'll ultimately apply it too).

Rob

2020-08-13 09:01:48

by Christian Eggers

[permalink] [raw]
Subject: [PATCH v3] dt-bindings: at25: convert the binding document to yaml

Convert the binding document for at25 EEPROMs from txt to yaml.

Signed-off-by: Christian Eggers <[email protected]>
---
On Wednesday, 12 August 2020, 22:06:02 CEST, Rob Herring wrote:
> > +This file has been moved to at25.yaml.
>
> We only do this to save updating a bunch of references and there aren't
> any, so just remove the file.
file removed.

> I'd just fix it up, but this wouldn't apply for me on Linus' current
> master. Please rebase and resend (You can want til rc1 if you want
> because that's what I'll ultimately apply it too).
This was my fault. I forgot to revert my previous patch ("dt-bindings: at25: fix
syntax error in example code"). So v2 was created from a wrong base.

I'll be unavailable until August, 23.

regards
Christian

.../devicetree/bindings/eeprom/at25.txt | 45 ------
.../devicetree/bindings/eeprom/at25.yaml | 129 ++++++++++++++++++
2 files changed, 129 insertions(+), 45 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/eeprom/at25.txt
create mode 100644 Documentation/devicetree/bindings/eeprom/at25.yaml

diff --git a/Documentation/devicetree/bindings/eeprom/at25.txt b/Documentation/devicetree/bindings/eeprom/at25.txt
deleted file mode 100644
index fcacd97abd0a..000000000000
--- a/Documentation/devicetree/bindings/eeprom/at25.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-EEPROMs (SPI) compatible with Atmel at25.
-
-Required properties:
-- compatible : Should be "<vendor>,<type>", and generic value "atmel,at25".
- Example "<vendor>,<type>" values:
- "anvo,anv32e61w"
- "microchip,25lc040"
- "st,m95m02"
- "st,m95256"
-
-- reg : chip select number
-- spi-max-frequency : max spi frequency to use
-- pagesize : size of the eeprom page
-- size : total eeprom size in bytes
-- address-width : number of address bits (one of 8, 9, 16, or 24).
- For 9 bits, the MSB of the address is sent as bit 3 of the instruction
- byte, before the address byte.
-
-Optional properties:
-- spi-cpha : SPI shifted clock phase, as per spi-bus bindings.
-- spi-cpol : SPI inverse clock polarity, as per spi-bus bindings.
-- read-only : this parameter-less property disables writes to the eeprom
-- wp-gpios : GPIO to which the write-protect pin of the chip is connected
-
-Obsolete legacy properties can be used in place of "size", "pagesize",
-"address-width", and "read-only":
-- at25,byte-len : total eeprom size in bytes
-- at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h
-- at25,page-size : size of the eeprom page
-
-Additional compatible properties are also allowed.
-
-Example:
- eeprom@0 {
- compatible = "st,m95256", "atmel,at25";
- reg = <0>
- spi-max-frequency = <5000000>;
- spi-cpha;
- spi-cpol;
- wp-gpios = <&gpio1 3 0>;
-
- pagesize = <64>;
- size = <32768>;
- address-width = <16>;
- };
diff --git a/Documentation/devicetree/bindings/eeprom/at25.yaml b/Documentation/devicetree/bindings/eeprom/at25.yaml
new file mode 100644
index 000000000000..9810619a2b5c
--- /dev/null
+++ b/Documentation/devicetree/bindings/eeprom/at25.yaml
@@ -0,0 +1,129 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/eeprom/at25.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: SPI EEPROMs compatible with Atmel's AT25
+
+maintainers:
+ - Christian Eggers <[email protected]>
+
+properties:
+ $nodename:
+ pattern: "^eeprom@[0-9a-f]{1,2}$"
+
+ # There are multiple known vendors who manufacture EEPROM chips compatible
+ # with Atmel's AT25. The compatible string requires two items where the
+ # 'vendor' and 'model' parts of the first are the actual chip and the second
+ # item is fixed to "atmel,at25". Some existing bindings only have the
+ # "atmel,at25" part and should be fixed by somebody who knows vendor and
+ # product.
+ compatible:
+ oneOf:
+ - items:
+ - enum:
+ - anvo,anv32e61w
+ - atmel,at25256B
+ - fujitsu,mb85rs1mt
+ - fujitsu,mb85rs64
+ - microchip,at25160bn
+ - microchip,25lc040
+ - st,m95m02
+ - st,m95256
+
+ - const: atmel,at25
+
+ # Please don't use this alternative for new bindings.
+ - items:
+ - const: atmel,at25
+
+ reg:
+ description:
+ Chip select number.
+
+ spi-max-frequency: true
+
+ pagesize:
+ $ref: /schemas/types.yaml#definitions/uint32
+ enum: [1, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072]
+ description:
+ Size of the eeprom page.
+
+ size:
+ $ref: /schemas/types.yaml#definitions/uint32
+ description:
+ Total eeprom size in bytes.
+
+ address-width:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [ 8, 9, 16, 24 ]
+ description:
+ Number of address bits.
+ For 9 bits, the MSB of the address is sent as bit 3 of the instruction
+ byte, before the address byte.
+
+ spi-cpha: true
+
+ spi-cpol: true
+
+ read-only:
+ description:
+ Disable writes to the eeprom.
+ type: boolean
+
+ wp-gpios:
+ maxItems: 1
+ description:
+ GPIO to which the write-protect pin of the chip is connected.
+
+ # Deprecated: at25,byte-len, at25,addr-mode, at25,page-size
+ at25,byte-len:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Total eeprom size in bytes. Deprecated, use "size" property instead.
+ deprecated: true
+
+ at25,addr-mode:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Addr-mode flags, as defined in include/linux/spi/eeprom.h.
+ Deprecated, use "address-width" property instead.
+ deprecated: true
+
+ at25,page-size:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Size of the eeprom page. Deprecated, use "pagesize" property instead.
+ deprecated: true
+
+required:
+ - compatible
+ - reg
+ - spi-max-frequency
+ - pagesize
+ - size
+ - address-width
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ spi0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ eeprom@0 {
+ compatible = "st,m95256", "atmel,at25";
+ reg = <0>;
+ spi-max-frequency = <5000000>;
+ spi-cpha;
+ spi-cpol;
+ wp-gpios = <&gpio1 3 0>;
+
+ pagesize = <64>;
+ size = <32768>;
+ address-width = <16>;
+ };
+ };
--
Christian Eggers
Embedded software developer

Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRA 57918
Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: HRB 54477
Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; Markus Zeiler

2020-08-17 19:37:43

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v3] dt-bindings: at25: convert the binding document to yaml

On Thu, 13 Aug 2020 10:59:59 +0200, Christian Eggers wrote:
> Convert the binding document for at25 EEPROMs from txt to yaml.
>
> Signed-off-by: Christian Eggers <[email protected]>
> ---
> On Wednesday, 12 August 2020, 22:06:02 CEST, Rob Herring wrote:
> > > +This file has been moved to at25.yaml.
> >
> > We only do this to save updating a bunch of references and there aren't
> > any, so just remove the file.
> file removed.
>
> > I'd just fix it up, but this wouldn't apply for me on Linus' current
> > master. Please rebase and resend (You can want til rc1 if you want
> > because that's what I'll ultimately apply it too).
> This was my fault. I forgot to revert my previous patch ("dt-bindings: at25: fix
> syntax error in example code"). So v2 was created from a wrong base.
>
> I'll be unavailable until August, 23.
>
> regards
> Christian
>
> .../devicetree/bindings/eeprom/at25.txt | 45 ------
> .../devicetree/bindings/eeprom/at25.yaml | 129 ++++++++++++++++++
> 2 files changed, 129 insertions(+), 45 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/eeprom/at25.txt
> create mode 100644 Documentation/devicetree/bindings/eeprom/at25.yaml
>

Applied, thanks!