[PATCH v4 4/6] dt-bindings: dma: xlnx,zynqmp-dma: Add Versal Net compatible support
From: Golla Nagendra
Date: Fri Oct 09 2026 - 00:01:51 EST
From: Jay Buddhabhatti <jay.buddhabhatti@xxxxxxx>
Introduce a new compatible string amd,versal-net-dma-1.0 for Versal Net
ZDMA. The new compatible requires xlnx,zynqmp-dma-1.0 as a fallback.
Add a reset property to describe the per-channel reset line exposed
on Versal Gen2 and Versal Net. Mark the resets property as required
for both Versal Gen2 and Versal Net, and not applicable for other
platforms.
Note that making resets required for Versal Gen2 and Versal Net results
in an ABI break, but this is unavoidable. While the driver works in many
scenarios when no other firmware has used the DMA prior to Linux boot,
there is no guarantee the channel is left in a clean state. In observed
error scenarios, a reset is necessary before Linux can reconfigure the IP
after previous use by other firmware components. Due to configuration
differences or the DMA being left in a bad state, DMA functionality fails
when sequential software components use the channel (e.g., firmware before
Linux boot). The channel can only be cleanly re-configured after a
per-channel reset, making it essential. This ABI break is only applied
to Versal Gen2 and Versal Net where the per-channel reset capability is
available.
Signed-off-by: Jay Buddhabhatti <jay.buddhabhatti@xxxxxxx>
Co-developed-by: Golla Nagendra <nagendra.golla@xxxxxxx>
Signed-off-by: Golla Nagendra <nagendra.golla@xxxxxxx>
---
.../bindings/dma/xilinx/xlnx,zynqmp-dma-1.0.yaml | 34 +++++++++++++++++-----
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/Documentation/devicetree/bindings/dma/xilinx/xlnx,zynqmp-dma-1.0.yaml b/Documentation/devicetree/bindings/dma/xilinx/xlnx,zynqmp-dma-1.0.yaml
index 2da86037ad79..ff8c9a0e5559 100644
--- a/Documentation/devicetree/bindings/dma/xilinx/xlnx,zynqmp-dma-1.0.yaml
+++ b/Documentation/devicetree/bindings/dma/xilinx/xlnx,zynqmp-dma-1.0.yaml
@@ -16,17 +16,17 @@ maintainers:
- Harini Katakam <harini.katakam@xxxxxxx>
- Radhey Shyam Pandey <radhey.shyam.pandey@xxxxxxx>
-allOf:
- - $ref: ../dma-controller.yaml#
-
properties:
"#dma-cells":
const: 1
compatible:
- enum:
- - amd,versal2-dma-1.0
- - xlnx,zynqmp-dma-1.0
+ oneOf:
+ - const: amd,versal2-dma-1.0
+ - const: xlnx,zynqmp-dma-1.0
+ - items:
+ - const: amd,versal-net-dma-1.0
+ - const: xlnx,zynqmp-dma-1.0
reg:
description: memory map for gdma/adma module access
@@ -59,6 +59,9 @@ properties:
power-domains:
maxItems: 1
+ resets:
+ maxItems: 1
+
dma-coherent: true
required:
@@ -70,13 +73,29 @@ required:
- clock-names
- xlnx,bus-width
+allOf:
+ - $ref: ../dma-controller.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - amd,versal2-dma-1.0
+ - amd,versal-net-dma-1.0
+ then:
+ required:
+ - resets
+ else:
+ properties:
+ resets: false
+
additionalProperties: false
examples:
- |
fpd_dma_chan1: dma-controller@fd500000 {
- compatible = "xlnx,zynqmp-dma-1.0";
+ compatible = "amd,versal-net-dma-1.0", "xlnx,zynqmp-dma-1.0";
reg = <0xfd500000 0x1000>;
interrupt-parent = <&gic>;
interrupts = <0 117 0x4>;
@@ -84,5 +103,6 @@ examples:
clock-names = "clk_main", "clk_apb";
clocks = <&zynqmp_clk 19>, <&zynqmp_clk 31>;
xlnx,bus-width = <128>;
+ resets = <&reset 0>;
dma-coherent;
};
--
2.43.7