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

From: Rahul Navale

Date: Thu Feb 26 2026 - 02:35:34 EST


From: Rahul Navale <rahul.navale@xxxxxxx>

>in the RFC patch, rebuild and exercise your use case. Then please do
>dmesg|grep xilinx_dma_device_caps

Hi Folker,

Thanks for the suggestion.
I applied your RFC patch and added printk() in xilinx_dma_device_caps()
around the assignment of caps->directions.

After rebuilding and booting, I exercised the audio playback use case
and collected the requested logs. The callback is reached and prints
appear both during early boot and during playback. Issue still persists.
cyclic playback fails after the first buffer period.

Output of `dmesg | grep xilinx_dma_device_caps`:
root@pdm3:~# aplay closetoyou.wav
Playing WAVE 'closetoyou.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...
aplay: pcm_write:2178: write error: Interrupted system call
root@pdm3:~# aplay closetoyou.wav root@pdm3:~# dmesg | grep xilinx_dma_device_caps
[ 0.318827] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 0.318832] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 0.319170] xilinx_dma_device_caps: caps->directions = 0x00000002
[ 0.319175] xilinx_dma_device_caps: caps->directions = 0x00000002
[ 6.375745] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 6.375762] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 133.401497] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 133.401513] xilinx_dma_device_caps: caps->directions = 0x00000001
root@pdm3:~#
root@pdm3:~# aplay closetoyou.wav
Playing WAVE 'closetoyou.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo

aplay: pcm_write:2178: write error: Interrupted system call
root@pdm3:~# aplay closetoyou.wav root@pdm3:~# dmesg | grep xilinx_dma_device_caps
[ 0.318827] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 0.318832] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 0.319170] xilinx_dma_device_caps: caps->directions = 0x00000002
[ 0.319175] xilinx_dma_device_caps: caps->directions = 0x00000002
[ 6.375745] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 6.375762] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 133.401497] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 133.401513] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 167.802636] xilinx_dma_device_caps: caps->directions = 0x00000001
[ 167.802651] xilinx_dma_device_caps: caps->directions = 0x00000001