diff mbox series

[v4,1/3] dt-bindings: mfd: atmel,flexcom: Convert to json-schema

Message ID 20220617130729.12072-2-kavyasree.kotagiri@microchip.com
State New
Headers show
Series Add support for lan966x flexcom chip-select configuration | expand

Commit Message

Kavyasree Kotagiri June 17, 2022, 1:07 p.m. UTC
Convert the Atmel flexcom device tree bindings to json schema.

Signed-off-by: Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
---
v3 -> v4:
 - Corrected format of enum used for compatible string.

v2 -> v3:
 - used enum for compatible string.
 - changed irq flag to IRQ_TYPE_LEVEL_HIGH in example.
 - fixed dtschema errors.

v1 -> v2:
 - Fix title.

 .../bindings/mfd/atmel,flexcom.yaml           | 104 ++++++++++++++++++
 .../devicetree/bindings/mfd/atmel-flexcom.txt |  63 -----------
 2 files changed, 104 insertions(+), 63 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
 delete mode 100644 Documentation/devicetree/bindings/mfd/atmel-flexcom.txt

Comments

Krzysztof Kozlowski June 17, 2022, 11 p.m. UTC | #1
On 17/06/2022 06:07, Kavyasree Kotagiri wrote:
> Convert the Atmel flexcom device tree bindings to json schema.
> 
> Signed-off-by: Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
> ---
> v3 -> v4:
>  - Corrected format of enum used for compatible string.
> 
> v2 -> v3:
>  - used enum for compatible string.
>  - changed irq flag to IRQ_TYPE_LEVEL_HIGH in example.
>  - fixed dtschema errors.
> 
> v1 -> v2:
>  - Fix title.
> 
>  .../bindings/mfd/atmel,flexcom.yaml           | 104 ++++++++++++++++++
>  .../devicetree/bindings/mfd/atmel-flexcom.txt |  63 -----------
>  2 files changed, 104 insertions(+), 63 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
>  delete mode 100644 Documentation/devicetree/bindings/mfd/atmel-flexcom.txt
> 
> diff --git a/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml b/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
> new file mode 100644
> index 000000000000..fdb1645d123f
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
> @@ -0,0 +1,104 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/atmel,flexcom.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Atmel Flexcom (Flexible Serial Communication Unit)
> +
> +maintainers:
> +  - Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
> +
> +description:
> +  The Atmel Flexcom is just a wrapper which embeds a SPI controller,
> +  an I2C controller and an USART. Only one function can be used at a
> +  time and is chosen at boot time according to the device tree.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - atmel,sama5d2-flexcom
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 1
> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 1
> +
> +  ranges:
> +    description:
> +      One range for the full I/O register region. (including USART,
> +      TWI and SPI registers).
> +    items:
> +      maxItems: 3
> +
> +  atmel,flexcom-mode:
> +    description: |
> +      Specifies the flexcom mode as follows:
> +      1: USART
> +      2: SPI
> +      3: I2C.
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    enum: [1, 2, 3]
> +
> +patternProperties:
> +  "^serial@[0-9a-f]+$":
> +    description: See atmel-usart.txt for details of USART bindings.
> +    type: object
> +
> +  "^spi@[0-9a-f]+$":
> +    description: See ../spi/spi_atmel.txt for details of SPI bindings.
> +    type: object
> +
> +    properties:
> +      compatible:
> +        const: atmel,at91rm9200-spi
> +
> +  "^i2c@[0-9a-f]+$":
> +    description: See ../i2c/i2c-at91.txt for details of I2C bindings.
> +    type: object
> +
> +required:
> +  - compatible
> +  - reg
> +  - clocks
> +  - "#address-cells"
> +  - "#size-cells"
> +  - ranges
> +  - atmel,flexcom-mode
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +    flx0: flexcom@f8034000 {
> +          compatible = "atmel,sama5d2-flexcom";

The bindings look good, but you have here weird indentation. I don't
remember if I pointed out this already, so in any case sorry for
bringing it up so late. The indentation should be four spaces which
nicely aligns with " - |".



> +          reg = <0xf8034000 0x200>;
> +          clocks = <&flx0_clk>;
> +          #address-cells = <1>;
> +          #size-cells = <1>;
> +          ranges = <0x0 0xf8034000 0x800>;
> +          atmel,flexcom-mode = <2>;
> +
> +          spi0: spi@400 {
> +                compatible = "atmel,at91rm9200-spi";

4 spaces

Rob's bot also complained about compatible. Are you sure you use here
correct compatible?


Best regards,
Krzysztof
Kavyasree Kotagiri June 20, 2022, 11:43 a.m. UTC | #2
> >> Convert the Atmel flexcom device tree bindings to json schema.
> >>
> >> Signed-off-by: Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
> >> ---
> >> v3 -> v4:
> >>  - Corrected format of enum used for compatible string.
> >>
> >> v2 -> v3:
> >>  - used enum for compatible string.
> >>  - changed irq flag to IRQ_TYPE_LEVEL_HIGH in example.
> >>  - fixed dtschema errors.
> >>
> >> v1 -> v2:
> >>  - Fix title.
> >>
> >>  .../bindings/mfd/atmel,flexcom.yaml           | 104 ++++++++++++++++++
> >>  .../devicetree/bindings/mfd/atmel-flexcom.txt |  63 -----------
> >>  2 files changed, 104 insertions(+), 63 deletions(-)
> >>  create mode 100644
> Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
> >>  delete mode 100644 Documentation/devicetree/bindings/mfd/atmel-
> flexcom.txt
> >>
> >> diff --git a/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
> b/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
> >> new file mode 100644
> >> index 000000000000..fdb1645d123f
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
> >> @@ -0,0 +1,104 @@
> >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> >> +%YAML 1.2
> >> +---
> >> +$id: http://devicetree.org/schemas/mfd/atmel,flexcom.yaml#
> >> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >> +
> >> +title: Atmel Flexcom (Flexible Serial Communication Unit)
> >> +
> >> +maintainers:
> >> +  - Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
> >> +
> >> +description:
> >> +  The Atmel Flexcom is just a wrapper which embeds a SPI controller,
> >> +  an I2C controller and an USART. Only one function can be used at a
> >> +  time and is chosen at boot time according to the device tree.
> >> +
> >> +properties:
> >> +  compatible:
> >> +    enum:
> >> +      - atmel,sama5d2-flexcom
> >> +
> >> +  reg:
> >> +    maxItems: 1
> >> +
> >> +  clocks:
> >> +    maxItems: 1
> >> +
> >> +  "#address-cells":
> >> +    const: 1
> >> +
> >> +  "#size-cells":
> >> +    const: 1
> >> +
> >> +  ranges:
> >> +    description:
> >> +      One range for the full I/O register region. (including USART,
> >> +      TWI and SPI registers).
> >> +    items:
> >> +      maxItems: 3
> >> +
> >> +  atmel,flexcom-mode:
> >> +    description: |
> >> +      Specifies the flexcom mode as follows:
> >> +      1: USART
> >> +      2: SPI
> >> +      3: I2C.
> >> +    $ref: /schemas/types.yaml#/definitions/uint32
> >> +    enum: [1, 2, 3]
> >> +
> >> +patternProperties:
> >> +  "^serial@[0-9a-f]+$":
> >> +    description: See atmel-usart.txt for details of USART bindings.
> >> +    type: object
> >> +
> >> +  "^spi@[0-9a-f]+$":
> >> +    description: See ../spi/spi_atmel.txt for details of SPI bindings.
> >> +    type: object
> >> +
> >> +    properties:
> >> +      compatible:
> >> +        const: atmel,at91rm9200-spi
> >> +
> >> +  "^i2c@[0-9a-f]+$":
> >> +    description: See ../i2c/i2c-at91.txt for details of I2C bindings.
> >> +    type: object
> >> +
> >> +required:
> >> +  - compatible
> >> +  - reg
> >> +  - clocks
> >> +  - "#address-cells"
> >> +  - "#size-cells"
> >> +  - ranges
> >> +  - atmel,flexcom-mode
> >> +
> >> +additionalProperties: false
> >> +
> >> +examples:
> >> +  - |
> >> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> >> +
> >> +    flx0: flexcom@f8034000 {
> >> +          compatible = "atmel,sama5d2-flexcom";
> >
> > The bindings look good, but you have here weird indentation. I don't
> > remember if I pointed out this already, so in any case sorry for
> > bringing it up so late. The indentation should be four spaces which
> > nicely aligns with " - |".
> >
> >
> >
> >> +          reg = <0xf8034000 0x200>;
> >> +          clocks = <&flx0_clk>;
> >> +          #address-cells = <1>;
> >> +          #size-cells = <1>;
> >> +          ranges = <0x0 0xf8034000 0x800>;
> >> +          atmel,flexcom-mode = <2>;
> >> +
> >> +          spi0: spi@400 {
> >> +                compatible = "atmel,at91rm9200-spi";
> >
> > 4 spaces
> >
> > Rob's bot also complained about compatible. Are you sure you use here
> > correct compatible?
> 
> It's in Documentation/devicetree/bindings/spi/spi_atmel.txt
> So that'll explain the error..
> 
> Thanks,
> Conor.
> 
Yes, you are right.
It is because of the spi dt-bindings are still in txt format.

> Conor
Rob Herring June 28, 2022, 9:16 p.m. UTC | #3
On Mon, Jun 20, 2022 at 11:45:31AM +0000, Kavyasree.Kotagiri@microchip.com wrote:
> > > Convert the Atmel flexcom device tree bindings to json schema.
> > >
> > > Signed-off-by: Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
> > > ---
> > > v3 -> v4:
> > >  - Corrected format of enum used for compatible string.
> > >
> > > v2 -> v3:
> > >  - used enum for compatible string.
> > >  - changed irq flag to IRQ_TYPE_LEVEL_HIGH in example.
> > >  - fixed dtschema errors.
> > >
> > > v1 -> v2:
> > >  - Fix title.
> > >
> > >  .../bindings/mfd/atmel,flexcom.yaml           | 104 ++++++++++++++++++
> > >  .../devicetree/bindings/mfd/atmel-flexcom.txt |  63 -----------
> > >  2 files changed, 104 insertions(+), 63 deletions(-)
> > >  create mode 100644
> > Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
> > >  delete mode 100644 Documentation/devicetree/bindings/mfd/atmel-
> > flexcom.txt
> > >
> > 
> > Running 'make dtbs_check' with the schema in this patch gives the
> > following warnings. Consider if they are expected or the schema is
> > incorrect. These may not be new warnings.
> > 
> > Note that it is not yet a requirement to have 0 warnings for dtbs_check.
> > This will change in the future.
> > 
> > Full log is available here: https://patchwork.ozlabs.org/patch/
> > 
> > 
> > flexcom@f0000000: spi@400:compatible:0: 'atmel,at91rm9200-spi' was
> > expected
> >         arch/arm/boot/dts/at91-sam9x60ek.dtb
> > 
> > flexcom@f0000000: spi@400:compatible: ['microchip,sam9x60-spi',
> > 'atmel,at91rm9200-spi'] is too long
> >         arch/arm/boot/dts/at91-sam9x60ek.dtb
> 
> These errors are expected because "microchip,sam9x60-spi" and "atmel,at91rm9200-spi"
> are documented in Documentation/devicetree/bindings/spi/spi_atmel.txt.
> which I added in description as
> " description: See ../spi/spi_atmel.txt for details of SPI bindings."

If that was still true, there would not be a warning because .txt files 
don't cause warnings. You've defined the SPI compatible here and that 
doesn't agree with the dts files. One of them is wrong.

Normally, child nodes either just reference another schema or document 
everything locally. You've done a mixture which is not right. Presumably 
that was to avoid 'undocumented compatible' warnings. To fix that you 
either need to convert the SPI binding or don't use it in the example.

Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml b/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
new file mode 100644
index 000000000000..fdb1645d123f
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/atmel,flexcom.yaml
@@ -0,0 +1,104 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/atmel,flexcom.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel Flexcom (Flexible Serial Communication Unit)
+
+maintainers:
+  - Kavyasree Kotagiri <kavyasree.kotagiri@microchip.com>
+
+description:
+  The Atmel Flexcom is just a wrapper which embeds a SPI controller,
+  an I2C controller and an USART. Only one function can be used at a
+  time and is chosen at boot time according to the device tree.
+
+properties:
+  compatible:
+    enum:
+      - atmel,sama5d2-flexcom
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  ranges:
+    description:
+      One range for the full I/O register region. (including USART,
+      TWI and SPI registers).
+    items:
+      maxItems: 3
+
+  atmel,flexcom-mode:
+    description: |
+      Specifies the flexcom mode as follows:
+      1: USART
+      2: SPI
+      3: I2C.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2, 3]
+
+patternProperties:
+  "^serial@[0-9a-f]+$":
+    description: See atmel-usart.txt for details of USART bindings.
+    type: object
+
+  "^spi@[0-9a-f]+$":
+    description: See ../spi/spi_atmel.txt for details of SPI bindings.
+    type: object
+
+    properties:
+      compatible:
+        const: atmel,at91rm9200-spi
+
+  "^i2c@[0-9a-f]+$":
+    description: See ../i2c/i2c-at91.txt for details of I2C bindings.
+    type: object
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - "#address-cells"
+  - "#size-cells"
+  - ranges
+  - atmel,flexcom-mode
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    flx0: flexcom@f8034000 {
+          compatible = "atmel,sama5d2-flexcom";
+          reg = <0xf8034000 0x200>;
+          clocks = <&flx0_clk>;
+          #address-cells = <1>;
+          #size-cells = <1>;
+          ranges = <0x0 0xf8034000 0x800>;
+          atmel,flexcom-mode = <2>;
+
+          spi0: spi@400 {
+                compatible = "atmel,at91rm9200-spi";
+                reg = <0x400 0x200>;
+                interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&pinctrl_flx0_default>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+                clocks = <&flx0_clk>;
+                clock-names = "spi_clk";
+                atmel,fifo-size = <32>;
+          };
+    };
+...
diff --git a/Documentation/devicetree/bindings/mfd/atmel-flexcom.txt b/Documentation/devicetree/bindings/mfd/atmel-flexcom.txt
deleted file mode 100644
index 9d837535637b..000000000000
--- a/Documentation/devicetree/bindings/mfd/atmel-flexcom.txt
+++ /dev/null
@@ -1,63 +0,0 @@ 
-* Device tree bindings for Atmel Flexcom (Flexible Serial Communication Unit)
-
-The Atmel Flexcom is just a wrapper which embeds a SPI controller, an I2C
-controller and an USART. Only one function can be used at a time and is chosen
-at boot time according to the device tree.
-
-Required properties:
-- compatible:		Should be "atmel,sama5d2-flexcom"
-- reg:			Should be the offset/length value for Flexcom dedicated
-			I/O registers (without USART, TWI or SPI registers).
-- clocks:		Should be the Flexcom peripheral clock from PMC.
-- #address-cells:	Should be <1>
-- #size-cells:		Should be <1>
-- ranges:		Should be one range for the full I/O register region
-			(including USART, TWI and SPI registers).
-- atmel,flexcom-mode:	Should be one of the following values:
-			- <1> for USART
-			- <2> for SPI
-			- <3> for I2C
-
-Required child:
-A single available child device of type matching the "atmel,flexcom-mode"
-property.
-
-The phandle provided by the clocks property of the child is the same as one for
-the Flexcom parent.
-
-For other properties, please refer to the documentations of the respective
-device:
-- ../serial/atmel-usart.txt
-- ../spi/spi_atmel.txt
-- ../i2c/i2c-at91.txt
-
-Example:
-
-flexcom@f8034000 {
-	compatible = "atmel,sama5d2-flexcom";
-	reg = <0xf8034000 0x200>;
-	clocks = <&flx0_clk>;
-	#address-cells = <1>;
-	#size-cells = <1>;
-	ranges = <0x0 0xf8034000 0x800>;
-	atmel,flexcom-mode = <2>;
-
-	spi@400 {
-		compatible = "atmel,at91rm9200-spi";
-		reg = <0x400 0x200>;
-		interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>;
-		pinctrl-names = "default";
-		pinctrl-0 = <&pinctrl_flx0_default>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-		clocks = <&flx0_clk>;
-		clock-names = "spi_clk";
-		atmel,fifo-size = <32>;
-
-		flash@0 {
-			compatible = "atmel,at25f512b";
-			reg = <0>;
-			spi-max-frequency = <20000000>;
-		};
-	};
-};