On Fri, Oct 09, 2026 at 09:30:13AM +0530, Golla Nagendra wrote: > From: Jay Buddhabhatti > > 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 > Co-developed-by: Golla Nagendra > Signed-off-by: Golla Nagendra > --- > .../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 > - Radhey Shyam Pandey > > -allOf: > - - $ref: ../dma-controller.yaml# > - > properties: > "#dma-cells": > const: 1 > > compatible: > - enum: > - - amd,versal2-dma-1.0 > - - xlnx,zynqmp-dma-1.0 This used to be an enum, so please preserve it as one. > + 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 The change here for versal2 is an ABI break (new required property) and needs to be split out into a standalone patch. The new support can go on top. pw-bot: changes-requested Thanks, Conor. > + 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 >