diff mbox series

[1/2] dt-bindings: dma: adi,axi-dmac: convert to yaml schema

Message ID 20241022-axi-dma-dt-yaml-v1-1-68f2a2498d53@baylibre.com (mailing list archive)
State Superseded
Headers show
Series dt-bindings: dma: adi,axi-dmac: convert to yaml and update | expand

Commit Message

David Lechner Oct. 22, 2024, 5:46 p.m. UTC
Convert the AXI DMAC bindings from .txt to .yaml.

Signed-off-by: David Lechner <dlechner@baylibre.com>
---

For the maintainer, Lars is the original author, but isn't really
active with ADI anymore, so I have added Nuno instead since he is the
most active ADI representative currently and is knowledgeable about this
hardware.

Also, the rob-bot is likely to complain. Locally, I am getting the
following warning from dt_bindings_check:

	Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml: properties:adi,channels:type: 'boolean' was expected
		hint: A vendor boolean property can use "type: boolean"
		from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml#
	DTC [C] Documentation/devicetree/bindings/dma/adi,axi-dmac.example.dtb

I think this is telling me that object nodes should not have a vendor
prefix. However, since this is an existing bindings, we can't change
that.
---
 .../devicetree/bindings/dma/adi,axi-dmac.txt       |  61 ---------
 .../devicetree/bindings/dma/adi,axi-dmac.yaml      | 137 +++++++++++++++++++++
 2 files changed, 137 insertions(+), 61 deletions(-)

Comments

Rob Herring (Arm) Oct. 22, 2024, 7:27 p.m. UTC | #1
On Tue, 22 Oct 2024 12:46:40 -0500, David Lechner wrote:
> Convert the AXI DMAC bindings from .txt to .yaml.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
> 
> For the maintainer, Lars is the original author, but isn't really
> active with ADI anymore, so I have added Nuno instead since he is the
> most active ADI representative currently and is knowledgeable about this
> hardware.
> 
> Also, the rob-bot is likely to complain. Locally, I am getting the
> following warning from dt_bindings_check:
> 
> 	Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml: properties:adi,channels:type: 'boolean' was expected
> 		hint: A vendor boolean property can use "type: boolean"
> 		from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml#
> 	DTC [C] Documentation/devicetree/bindings/dma/adi,axi-dmac.example.dtb
> 
> I think this is telling me that object nodes should not have a vendor
> prefix. However, since this is an existing bindings, we can't change
> that.
> ---
>  .../devicetree/bindings/dma/adi,axi-dmac.txt       |  61 ---------
>  .../devicetree/bindings/dma/adi,axi-dmac.yaml      | 137 +++++++++++++++++++++
>  2 files changed, 137 insertions(+), 61 deletions(-)
> 

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml: properties:adi,channels:type: 'boolean' was expected
	hint: A vendor boolean property can use "type: boolean"
	from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml#

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20241022-axi-dma-dt-yaml-v1-1-68f2a2498d53@baylibre.com

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
Rob Herring (Arm) Oct. 22, 2024, 8:43 p.m. UTC | #2
On Tue, Oct 22, 2024 at 12:46:40PM -0500, David Lechner wrote:
> Convert the AXI DMAC bindings from .txt to .yaml.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
> 
> For the maintainer, Lars is the original author, but isn't really
> active with ADI anymore, so I have added Nuno instead since he is the
> most active ADI representative currently and is knowledgeable about this
> hardware.
> 
> Also, the rob-bot is likely to complain. Locally, I am getting the
> following warning from dt_bindings_check:
> 
> 	Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml: properties:adi,channels:type: 'boolean' was expected
> 		hint: A vendor boolean property can use "type: boolean"
> 		from schema $id: http://devicetree.org/meta-schemas/vendor-props.yaml#
> 	DTC [C] Documentation/devicetree/bindings/dma/adi,axi-dmac.example.dtb
> 
> I think this is telling me that object nodes should not have a vendor
> prefix. However, since this is an existing bindings, we can't change
> that.

Yes, that can be ignored. I'll have to drop that check from dtschema.

> ---
>  .../devicetree/bindings/dma/adi,axi-dmac.txt       |  61 ---------
>  .../devicetree/bindings/dma/adi,axi-dmac.yaml      | 137 +++++++++++++++++++++
>  2 files changed, 137 insertions(+), 61 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/dma/adi,axi-dmac.txt b/Documentation/devicetree/bindings/dma/adi,axi-dmac.txt
> deleted file mode 100644
> index cd17684aaab5..000000000000
> --- a/Documentation/devicetree/bindings/dma/adi,axi-dmac.txt
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -Analog Devices AXI-DMAC DMA controller
> -
> -Required properties:
> - - compatible: Must be "adi,axi-dmac-1.00.a".
> - - reg: Specification for the controllers memory mapped register map.
> - - interrupts: Specification for the controllers interrupt.
> - - clocks: Phandle and specifier to the controllers AXI interface clock
> - - #dma-cells: Must be 1.
> -
> -Required sub-nodes:
> - - adi,channels: This sub-node must contain a sub-node for each DMA channel. For
> -   the channel sub-nodes the following bindings apply. They must match the
> -   configuration options of the peripheral as it was instantiated.
> -
> -Required properties for adi,channels sub-node:
> - - #size-cells: Must be 0
> - - #address-cells: Must be 1
> -
> -Required channel sub-node properties:
> - - reg: Which channel this node refers to.
> - - adi,source-bus-width,
> -   adi,destination-bus-width: Width of the source or destination bus in bits.
> - - adi,source-bus-type,
> -   adi,destination-bus-type: Type of the source or destination bus. Must be one
> -   of the following:
> -	0 (AXI_DMAC_TYPE_AXI_MM): Memory mapped AXI interface
> -	1 (AXI_DMAC_TYPE_AXI_STREAM): Streaming AXI interface
> -	2 (AXI_DMAC_TYPE_AXI_FIFO): FIFO interface
> -
> -Deprecated optional channel properties:
> - - adi,length-width: Width of the DMA transfer length register.
> - - adi,cyclic: Must be set if the channel supports hardware cyclic DMA
> -   transfers.
> - - adi,2d: Must be set if the channel supports hardware 2D DMA transfers.
> -
> -DMA clients connected to the AXI-DMAC DMA controller must use the format
> -described in the dma.txt file using a one-cell specifier. The value of the
> -specifier refers to the DMA channel index.
> -
> -Example:
> -
> -dma: dma@7c420000 {
> -	compatible = "adi,axi-dmac-1.00.a";
> -	reg = <0x7c420000 0x10000>;
> -	interrupts = <0 57 0>;
> -	clocks = <&clkc 16>;
> -	#dma-cells = <1>;
> -
> -	adi,channels {
> -		#size-cells = <0>;
> -		#address-cells = <1>;
> -
> -		dma-channel@0 {
> -			reg = <0>;
> -			adi,source-bus-width = <32>;
> -			adi,source-bus-type = <ADI_AXI_DMAC_TYPE_MM_AXI>;
> -			adi,destination-bus-width = <64>;
> -			adi,destination-bus-type = <ADI_AXI_DMAC_TYPE_FIFO>;
> -		};
> -	};
> -};
> diff --git a/Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml b/Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml
> new file mode 100644
> index 000000000000..e457630ec7c0
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml
> @@ -0,0 +1,137 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/dma/adi,axi-dmac.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Analog Devices AXI-DMAC DMA controller
> +
> +description: http://analogdevicesinc.github.io/hdl/library/axi_dmac/index.html

Please make description more than just a link.

> +
> +maintainers:
> +  - Nuno Sa <nuno.sa@analog.com>
> +
> +properties:
> +  compatible:
> +    const: adi,axi-dmac-1.00.a
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 1
> +
> +  "#dma-cells":
> +    const: 1
> +
> +  adi,channels:
> +    type: object
> +    description: This sub-node must contain a sub-node for each DMA channel.
> +
> +    properties:
> +      "#size-cells":
> +        const: 0
> +      "#address-cells":
> +        const: 1
> +
> +    patternProperties:
> +      "^dma-channel@[0-9a-f]+$":
> +        type: object
> +        description:
> +          DMA channel properties based on HDL compile-time configuration.
> +
> +        properties:
> +          reg:
> +            maxItems: 1
> +
> +          adi,source-bus-width:
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            description: Width of the source bus in bits.
> +            enum: [8, 16, 32, 64, 128]
> +
> +          adi,destination-bus-width:
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            description: Width of the destination bus in bits.
> +            enum: [8, 16, 32, 64, 128]
> +
> +          # 0 (AXI_DMAC_TYPE_AXI_MM): Memory mapped AXI interface
> +          # 1 (AXI_DMAC_TYPE_AXI_STREAM): Streaming AXI interface
> +          # 2 (AXI_DMAC_TYPE_AXI_FIFO): FIFO interface

Put these in the 'description'

> +
> +          adi,source-bus-type:
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            description: Type of the source bus.
> +            enum: [0, 1, 2]
> +
> +          adi,destination-bus-type:
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            description: Type of the destination bus.
> +            enum: [0, 1, 2]
> +
> +          adi,length-width:
> +            deprecated: true
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            description: Width of the DMA transfer length register.
> +
> +          adi,cyclic:
> +            deprecated: true
> +            type: boolean
> +            description:
> +              Must be set if the channel supports hardware cyclic DMA transfers.
> +
> +          adi,2d:
> +            deprecated: true
> +            type: boolean
> +            description:
> +              Must be set if the channel supports hardware 2D DMA transfers.
> +
> +        required:
> +          - reg
> +          - adi,source-bus-width
> +          - adi,destination-bus-width
> +          - adi,source-bus-type
> +          - adi,destination-bus-type
> +
> +        additionalProperties: false

Put this before 'properties'. Easier to read the indented cases that 
way.

> +
> +    required:
> +      - "#size-cells"
> +      - "#address-cells"
> +
> +    additionalProperties: false

ditto

> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - clocks
> +  - "#dma-cells"
> +  - adi,channels
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    dma: dma@7c420000 {

Drop unused labels.

dma-controller@7c420000

> +        compatible = "adi,axi-dmac-1.00.a";
> +        reg = <0x7c420000 0x10000>;
> +        interrupts = <0 57 0>;
> +        clocks = <&clkc 16>;
> +        #dma-cells = <1>;
> +
> +        adi,channels {
> +            #size-cells = <0>;
> +            #address-cells = <1>;
> +
> +            dma-channel@0 {
> +                reg = <0>;
> +                adi,source-bus-width = <32>;
> +                adi,source-bus-type = <0>; /* AXI_DMAC_TYPE_AXI_MM */
> +                adi,destination-bus-width = <64>;
> +                adi,destination-bus-type = <2>; /* AXI_DMAC_TYPE_AXI_FIFO */
> +            };
> +        };
> +    };
> 
> -- 
> 2.43.0
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/dma/adi,axi-dmac.txt b/Documentation/devicetree/bindings/dma/adi,axi-dmac.txt
deleted file mode 100644
index cd17684aaab5..000000000000
--- a/Documentation/devicetree/bindings/dma/adi,axi-dmac.txt
+++ /dev/null
@@ -1,61 +0,0 @@ 
-Analog Devices AXI-DMAC DMA controller
-
-Required properties:
- - compatible: Must be "adi,axi-dmac-1.00.a".
- - reg: Specification for the controllers memory mapped register map.
- - interrupts: Specification for the controllers interrupt.
- - clocks: Phandle and specifier to the controllers AXI interface clock
- - #dma-cells: Must be 1.
-
-Required sub-nodes:
- - adi,channels: This sub-node must contain a sub-node for each DMA channel. For
-   the channel sub-nodes the following bindings apply. They must match the
-   configuration options of the peripheral as it was instantiated.
-
-Required properties for adi,channels sub-node:
- - #size-cells: Must be 0
- - #address-cells: Must be 1
-
-Required channel sub-node properties:
- - reg: Which channel this node refers to.
- - adi,source-bus-width,
-   adi,destination-bus-width: Width of the source or destination bus in bits.
- - adi,source-bus-type,
-   adi,destination-bus-type: Type of the source or destination bus. Must be one
-   of the following:
-	0 (AXI_DMAC_TYPE_AXI_MM): Memory mapped AXI interface
-	1 (AXI_DMAC_TYPE_AXI_STREAM): Streaming AXI interface
-	2 (AXI_DMAC_TYPE_AXI_FIFO): FIFO interface
-
-Deprecated optional channel properties:
- - adi,length-width: Width of the DMA transfer length register.
- - adi,cyclic: Must be set if the channel supports hardware cyclic DMA
-   transfers.
- - adi,2d: Must be set if the channel supports hardware 2D DMA transfers.
-
-DMA clients connected to the AXI-DMAC DMA controller must use the format
-described in the dma.txt file using a one-cell specifier. The value of the
-specifier refers to the DMA channel index.
-
-Example:
-
-dma: dma@7c420000 {
-	compatible = "adi,axi-dmac-1.00.a";
-	reg = <0x7c420000 0x10000>;
-	interrupts = <0 57 0>;
-	clocks = <&clkc 16>;
-	#dma-cells = <1>;
-
-	adi,channels {
-		#size-cells = <0>;
-		#address-cells = <1>;
-
-		dma-channel@0 {
-			reg = <0>;
-			adi,source-bus-width = <32>;
-			adi,source-bus-type = <ADI_AXI_DMAC_TYPE_MM_AXI>;
-			adi,destination-bus-width = <64>;
-			adi,destination-bus-type = <ADI_AXI_DMAC_TYPE_FIFO>;
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml b/Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml
new file mode 100644
index 000000000000..e457630ec7c0
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/adi,axi-dmac.yaml
@@ -0,0 +1,137 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/adi,axi-dmac.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AXI-DMAC DMA controller
+
+description: http://analogdevicesinc.github.io/hdl/library/axi_dmac/index.html
+
+maintainers:
+  - Nuno Sa <nuno.sa@analog.com>
+
+properties:
+  compatible:
+    const: adi,axi-dmac-1.00.a
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  "#dma-cells":
+    const: 1
+
+  adi,channels:
+    type: object
+    description: This sub-node must contain a sub-node for each DMA channel.
+
+    properties:
+      "#size-cells":
+        const: 0
+      "#address-cells":
+        const: 1
+
+    patternProperties:
+      "^dma-channel@[0-9a-f]+$":
+        type: object
+        description:
+          DMA channel properties based on HDL compile-time configuration.
+
+        properties:
+          reg:
+            maxItems: 1
+
+          adi,source-bus-width:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description: Width of the source bus in bits.
+            enum: [8, 16, 32, 64, 128]
+
+          adi,destination-bus-width:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description: Width of the destination bus in bits.
+            enum: [8, 16, 32, 64, 128]
+
+          # 0 (AXI_DMAC_TYPE_AXI_MM): Memory mapped AXI interface
+          # 1 (AXI_DMAC_TYPE_AXI_STREAM): Streaming AXI interface
+          # 2 (AXI_DMAC_TYPE_AXI_FIFO): FIFO interface
+
+          adi,source-bus-type:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description: Type of the source bus.
+            enum: [0, 1, 2]
+
+          adi,destination-bus-type:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description: Type of the destination bus.
+            enum: [0, 1, 2]
+
+          adi,length-width:
+            deprecated: true
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description: Width of the DMA transfer length register.
+
+          adi,cyclic:
+            deprecated: true
+            type: boolean
+            description:
+              Must be set if the channel supports hardware cyclic DMA transfers.
+
+          adi,2d:
+            deprecated: true
+            type: boolean
+            description:
+              Must be set if the channel supports hardware 2D DMA transfers.
+
+        required:
+          - reg
+          - adi,source-bus-width
+          - adi,destination-bus-width
+          - adi,source-bus-type
+          - adi,destination-bus-type
+
+        additionalProperties: false
+
+    required:
+      - "#size-cells"
+      - "#address-cells"
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - "#dma-cells"
+  - adi,channels
+
+additionalProperties: false
+
+examples:
+  - |
+    dma: dma@7c420000 {
+        compatible = "adi,axi-dmac-1.00.a";
+        reg = <0x7c420000 0x10000>;
+        interrupts = <0 57 0>;
+        clocks = <&clkc 16>;
+        #dma-cells = <1>;
+
+        adi,channels {
+            #size-cells = <0>;
+            #address-cells = <1>;
+
+            dma-channel@0 {
+                reg = <0>;
+                adi,source-bus-width = <32>;
+                adi,source-bus-type = <0>; /* AXI_DMAC_TYPE_AXI_MM */
+                adi,destination-bus-width = <64>;
+                adi,destination-bus-type = <2>; /* AXI_DMAC_TYPE_AXI_FIFO */
+            };
+        };
+    };