dmaengine: stm32-mdma: use Link Address Register to compute residue
authorAmelie Delaunay <amelie.delaunay@foss.st.com>
Wed, 4 Oct 2023 16:35:29 +0000 (18:35 +0200)
committerVinod Koul <vkoul@kernel.org>
Mon, 9 Oct 2023 05:40:30 +0000 (11:10 +0530)
commita4b306eb83579c07b63dc65cd5bae53b7b4019d0
tree246e1aa0bea83c5564f2799dd5beacb93e32bfca
parent81337b9a72dc58a5fa0ae8a042e8cb59f9bdec4a
dmaengine: stm32-mdma: use Link Address Register to compute residue

Current implementation relies on curr_hwdesc index. But to keep this index
up to date, Block Transfer interrupt (BTIE) has to be enabled.
If it is not, curr_hwdesc is not updated, and then residue is not reliable.
Rely on Link Address Register instead. And disable BTIE interrupt
in stm32_mdma_setup_xfer() because it is no more needed in case of
_prep_slave_sg() to maintain curr_hwdesc up to date.
It avoids extra interrupts and also ensures a reliable residue. These
improvements are required for STM32 DCMI camera capture use case, which
need STM32 DMA and MDMA chaining for good performance.

Fixes: 696874322771 ("dmaengine: stm32-mdma: add support to be triggered by STM32 DMA")
Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20231004163531.2864160-2-amelie.delaunay@foss.st.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/stm32-mdma.c