Re: [RFC PATCH] dmaengine: xilinx_dma: Fix per-channel direction reporting via device_caps
From: Rahul Navale
Date: Mon Mar 02 2026 - 02:13:58 EST
From: Rahul Navale <rahul.navale@xxxxxxx>
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>