Thread (48 messages) 48 messages, 9 authors, 2025-02-25

Re: [PATCH v2 05/12] dt-bindings: dma: Convert fsl,elo*-dma to YAML

From: J. Neuschäfer <hidden>
Date: 2025-02-14 12:35:51
Also in: dmaengine, imx, linux-crypto, linux-devicetree, linux-ide, linux-pci, linux-spi, linux-watchdog, lkml

On Mon, Feb 10, 2025 at 02:39:13PM -0500, Frank Li wrote:
On Fri, Feb 07, 2025 at 10:30:22PM +0100, J. Neuschäfer via B4 Relay wrote:
quoted
From: "J. Neuschäfer" <redacted>

The devicetree bindings for Freescale DMA engines have so far existed as
a text file. This patch converts them to YAML, and specifies all the
compatible strings currently in use in arch/powerpc/boot/dts.

Signed-off-by: J. Neuschäfer <redacted>
---

V2:
- remove unnecessary multiline markers
- fix additionalProperties to always be false
- add description/maxItems to interrupts
- add missing #address-cells/#size-cells properties
- convert "Note on DMA channel compatible properties" to YAML by listing
  fsl,ssi-dma-channel as a valid compatible value
- fix property ordering in examples: compatible and reg come first
- add missing newlines in examples
- trim subject line (remove "bindings")
---
 .../devicetree/bindings/dma/fsl,elo-dma.yaml       | 140 ++++++++++++++
 .../devicetree/bindings/dma/fsl,elo3-dma.yaml      | 123 +++++++++++++
 .../devicetree/bindings/dma/fsl,eloplus-dma.yaml   | 134 ++++++++++++++
 .../devicetree/bindings/powerpc/fsl/dma.txt        | 204 ---------------------
 4 files changed, 397 insertions(+), 204 deletions(-)
[...]
quoted
+  reg:
+    maxItems: 1
+    description:
+      DMA General Status Register, i.e. DGSR which contains status for
+      all the 4 DMA channels.
needn't maxItems
items:
  - description: DMA ...
Good point, I'll do that.
quoted
+
+  cell-index:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: Controller index. 0 for controller @ 0x8100.
+
+  ranges: true
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 1
+
+  interrupts:
+    maxItems: 1
+    description: Controller interrupt.
Needn't description because no any additional informaiton.
True.
quoted
+
+required:
+  - compatible
+  - reg
[...]
quoted
+additionalProperties: false
Need ref to dma-common.yaml?
Sounds good, but I'm not sure what to do about the #dma-cells property,
which is required by dma-common.yaml.

There aren't many examples of DMA channels being explicitly declared in
device trees. One example that I could find is the the xilinx_dma.txt
binding:


	axi_vdma_0: axivdma@40030000 {
		compatible = "xlnx,axi-vdma-1.00.a";
		#dma_cells = <1>;
		reg = < 0x40030000 0x10000 >;
		dma-ranges = <0x00000000 0x00000000 0x40000000>;
		xlnx,num-fstores = <0x8>;
		xlnx,flush-fsync = <0x1>;
		xlnx,addrwidth = <0x20>;
		clocks = <&clk 0>, <&clk 1>, <&clk 2>, <&clk 3>, <&clk 4>;
		clock-names = "s_axi_lite_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk",
			      "m_axis_mm2s_aclk", "s_axis_s2mm_aclk";
		dma-channel@40030000 {
			compatible = "xlnx,axi-vdma-mm2s-channel";
			interrupts = < 0 54 4 >;
			xlnx,datawidth = <0x40>;
		};
		dma-channel@40030030 {
			compatible = "xlnx,axi-vdma-s2mm-channel";
			interrupts = < 0 53 4 >;
			xlnx,datawidth = <0x40>;
		};
	};

	...

	vdmatest_0: vdmatest@0 {
		compatible ="xlnx,axi-vdma-test-1.00.a";
		dmas = <&axi_vdma_0 0
			&axi_vdma_0 1>;
		dma-names = "vdma0", "vdma1";
	};

It has #dma_cells (I'm sure #dma-cells was intended) on the controller.


Another example is in arch/powerpc/boot/dts/fsl/p1022si-post.dtsi:

	dma@c300 {
		dma00: dma-channel@0 {
			compatible = "fsl,ssi-dma-channel";
		};
		dma01: dma-channel@80 {
			compatible = "fsl,ssi-dma-channel";
		};
	};

	...

	ssi@15000 {
		compatible = "fsl,mpc8610-ssi";
		cell-index = <0>;
		reg = <0x15000 0x100>;
		interrupts = <75 2 0 0>;
		fsl,playback-dma = <&dma00>;
		fsl,capture-dma = <&dma01>;
		fsl,fifo-depth = <15>;
	};


There, the DMA channels are used directly and without additional
information (i.e. #dma-cells = <0>, althought it isn't specified).

quoted
+        dma-channel@0 {
+            compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
+            reg = <0 0x80>;
+            cell-index = <0>;
+            interrupt-parent = <&ipic>;
+            interrupts = <71 8>;
'8',  use predefine MACRO for irq type.
Good catch, will do
Frank
Thanks for your review!
J. Neuschäfer
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help