Thread (32 messages) 32 messages, 5 authors, 2026-03-30

Re: [RFC PATCH] dmaengine: xilinx_dma: Fix per-channel direction reporting via device_caps

From: Rahul Navale <hidden>
Date: 2026-03-02 07:13:12
Also in: dmaengine, lkml

From: Rahul Navale <redacted>

Hi Folker,
Could you confirm this from your DT?
DT for the audio AXI DMA is below. We indeed have two distinct
AXI DMA devices, each instantiated with a single fixed-direction channel:

  axi_dma0: MM2S-only (playback / DMA_MEM_TO_DEV)
  axi_dma1: S2MM-only (capture  / DMA_DEV_TO_MEM)

axi_dma0: axidma@a0100000 {
        compatible = "xlnx,axi-dma-1.00.a";
        #dma-cells = <1>;
        reg = <0 0xa0100000 0 0x10000>;
        clocks = <&aclk>;
        clock-names = "s_axi_lite_aclk";
        xlnx,addrwidth = <32>;

        dma-channel {
                compatible = "xlnx,axi-dma-mm2s-channel";
                interrupt-parent = <&axi_intc>;
                interrupts = <14>;
                xlnx,datawidth = <32>;
        };
};

axi_dma1: axidma@a0110000 {
        compatible = "xlnx,axi-dma-1.00.a";
        #dma-cells = <1>;
        reg = <0 0xa0110000 0 0x10000>;
        clocks = <&aclk>;
        clock-names = "s_axi_lite_aclk";
        xlnx,addrwidth = <32>;

        dma-channel {
                compatible = "xlnx,axi-dma-s2mm-channel";
                interrupt-parent = <&axi_intc>;
                interrupts = <15>;
                xlnx,datawidth = <32>;
        };
};

This confirms your suspicion: direction aggregation via
xdev->common.directions |= chan->direction does not end up combining
different directions within a single dma_device instance in our setup,
because each dma_device only has one channel and one direction.
There's however one other thing you could test: Could you keep the RFC
patch with the printks in place, but revert 7e01511443c3, rerun and post
the logs?
Debug results with your RFC patch kept, but 7e01511443c3 reverted:
- Audio playback works (aplay plays normally)
- No xilinx_dma_device_caps printk output at all:
# dmesg | grep xilinx_dma_device_caps
<no output>

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help