linux/drivers/dma
Miquel Raynal f5c392d106 dmaengine: xilinx: xdma: Add terminate_all/synchronize callbacks
The driver is capable of starting scatter-gather transfers and needs to
wait until their end. It is also capable of starting cyclic transfers
and will only be "reset" next time the channel will be reused. In
practice most of the time we hear no audio glitch because the sound card
stops the flow on its side so the DMA transfers are just
discarded. There are however some cases (when playing a bit with a
number of frames and with a discontinuous sound file) when the sound
card seems to be slightly too slow at stopping the flow, leading to a
glitch that can be heard.

In all cases, we need to earn better control of the DMA engine and
adding proper ->device_terminate_all() and ->device_synchronize()
callbacks feels totally relevant. With these two callbacks, no glitch
can be heard anymore.

Fixes: cd8c732ce1 ("dmaengine: xilinx: xdma: Support cyclic transfers")
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Tested-by: Lizhi Hou <lizhi.hou@amd.com>
Link: https://lore.kernel.org/r/20231130111315.729430-5-miquel.raynal@bootlin.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2023-12-21 21:51:28 +05:30
..
bestcomm dmaengine: bestcomm: bestcomm: Convert to platform remove callback returning void 2023-09-28 13:10:46 +05:30
dw dmaengine: dw: platform: Convert to platform remove callback returning void 2023-09-28 13:10:47 +05:30
dw-axi-dmac dmaengine: dw-axi-dmac: Add support DMAX_NUM_CHANNELS > 16 2023-10-16 16:38:10 +05:30
dw-edma dmaengine: dw-edma: Add HDMA DebugFS support 2023-05-24 12:20:45 +05:30
fsl-dpaa2-qdma dmaengine: fsl-dpaa2-qdma: Remove redundant initialization owner in dpaa2_qdma_driver 2023-10-04 19:27:15 +05:30
hsu dmaengine: hsu: Include headers we are direct user of 2022-09-04 22:49:35 +05:30
idxd dmaengine: idxd: Move dma_free_coherent() out of spinlocked context 2023-12-21 21:47:40 +05:30
ioat dmaengine: ioatdma: use pci_dev_id() to simplify the code 2023-08-21 18:39:25 +05:30
lgm dmaengine: lgm: Use builtin_platform_driver macro to simplify the code 2023-08-21 11:13:09 +05:30
mediatek dmaengine updates for v6.7 2023-11-03 18:56:51 -10:00
ppc4xx dmaengine: ppc4xx: adma: Convert to platform remove callback returning void 2023-09-28 13:10:52 +05:30
ptdma dmaengine updates for v6.3 2023-02-24 17:18:54 -08:00
qcom dmaengine: qcom: fix Wvoid-pointer-to-enum-cast warning 2023-10-04 19:24:57 +05:30
sf-pdma dmaengine: sf-pdma: add mpfs-pdma compatible name 2023-12-11 16:33:22 +05:30
sh dmaengine: usb-dmac: Annotate struct usb_dmac_desc with __counted_by 2023-09-28 16:42:16 +05:30
ti dmaengine: ti: k3-udma: Add PSIL threads for AM62P and J722S 2023-12-21 21:45:18 +05:30
xilinx dmaengine: xilinx: xdma: Add terminate_all/synchronize callbacks 2023-12-21 21:51:28 +05:30
acpi-dma.c dmaengine: acpi: Check for errors from acpi_register_gsi() separately 2021-08-06 21:48:11 +05:30
altera-msgdma.c dmaengine: altera-msgdma: Convert to platform remove callback returning void 2023-09-28 13:10:45 +05:30
amba-pl08x.c dmaengine: pl08x: Fix double word 2022-09-29 12:24:16 +05:30
apple-admac.c dmaengine: apple-admac: Keep upper bits of REG_BUS_WIDTH 2023-11-24 18:57:56 +05:30
at_hdmac.c dmaengine: at_hdmac: Annotate struct at_desc with __counted_by 2023-09-28 16:42:02 +05:30
at_xdmac.c dmaengine: at_xdmac: Convert to platform remove callback returning void 2023-09-28 13:10:45 +05:30
bcm2835-dma.c dmaengine: bcm2835-dma: Convert to platform remove callback returning void 2023-09-28 13:10:46 +05:30
bcm-sba-raid.c dmaengine: bcm-sba-raid: Convert to platform remove callback returning void 2023-09-28 13:10:46 +05:30
dma-axi-dmac.c dmaengine: axi-dmac: Improve cyclic DMA transfers in SG mode 2023-12-21 21:39:56 +05:30
dma-jz4780.c dmaengine: dma-jz4780: Convert to platform remove callback returning void 2023-09-28 13:10:47 +05:30
dmaengine.c dmaengine: fix NULL pointer in channel unregistration function 2023-12-21 21:44:29 +05:30
dmaengine.h dmaengine: dmaengine_desc_callback_valid(): Check for callback_result 2021-10-25 09:42:56 +05:30
dmatest.c dmaengine: dmatest: prevent using swiotlb buffer with nobounce parameter 2023-12-11 20:15:27 +05:30
ep93xx_dma.c dmaengine: ep93xx_dma: Annotate struct ep93xx_dma_engine with __counted_by 2023-10-04 15:12:57 +05:30
fsl_raid.c dmaengine: fsl_raid: Convert to platform remove callback returning void 2023-09-28 13:10:48 +05:30
fsl_raid.h
fsl-edma-common.c dmaengine: fsl-edma: fix edma4 channel enable failure on second attempt 2023-09-28 16:58:57 +05:30
fsl-edma-common.h dmaengine updates for v6.7 2023-11-03 18:56:51 -10:00
fsl-edma-main.c dmaengine: fsl-edma: utilize common dt-binding header file 2023-12-21 21:41:06 +05:30
fsl-qdma.c dmaengine: fsl-qdma: Convert to platform remove callback returning void 2023-09-28 13:10:47 +05:30
fsldma.c dmaengine: fsldma: Convert to platform remove callback returning void 2023-09-28 13:10:48 +05:30
fsldma.h fsldma: fix very broken 32-bit ppc ioread64 functionality 2020-08-29 13:50:56 -07:00
hisi_dma.c dmaengine: hisilicon: Annotate struct hisi_dma_dev with __counted_by 2023-09-28 16:42:14 +05:30
idma64.c dmaengine: idma64: Convert to platform remove callback returning void 2023-09-28 13:10:48 +05:30
idma64.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
img-mdc-dma.c dmaengine: img-mdc-dma: Convert to platform remove callback returning void 2023-09-28 13:10:48 +05:30
imx-dma.c dmaengine: imx-dma: Convert to platform remove callback returning void 2023-09-28 13:10:49 +05:30
imx-sdma.c dmaengine: imx-sdma: Convert to platform remove callback returning void 2023-09-28 13:10:49 +05:30
k3dma.c dmaengine: Drop unnecessary of_match_device() calls 2023-10-09 10:55:16 +05:30
Kconfig dmaengine: ls2x-apb: New driver for the Loongson LS2X APB DMA controller 2023-12-21 21:35:13 +05:30
lpc18xx-dmamux.c dmaengine: Explicitly include correct DT includes 2023-08-01 23:51:27 +05:30
ls2x-apb-dma.c dmaengine: ls2x-apb: New driver for the Loongson LS2X APB DMA controller 2023-12-21 21:35:13 +05:30
Makefile dmaengine: ls2x-apb: New driver for the Loongson LS2X APB DMA controller 2023-12-21 21:35:13 +05:30
mcf-edma-main.c dmaengine: mcf-edma-main: Convert to platform remove callback returning void 2023-09-28 13:10:49 +05:30
milbeaut-hdmac.c dmaengine: milbeaut-hdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
milbeaut-xdmac.c dmaengine: milbeaut-xdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
mmp_pdma.c dmaengine: Drop unnecessary of_match_device() calls 2023-10-09 10:55:16 +05:30
mmp_tdma.c dmaengine: mmp_tdma: drop unused variable 'of_id' 2023-10-10 23:30:52 +05:30
moxart-dma.c dmaengine: moxart-dma: Annotate struct moxart_desc with __counted_by 2023-09-28 16:42:14 +05:30
mpc512x_dma.c dmaengine: mpc512x_dma: Convert to platform remove callback returning void 2023-09-28 13:10:51 +05:30
mv_xor_v2.c dmaengine: mv_xor_v2: Convert to platform remove callback returning void 2023-09-28 13:10:51 +05:30
mv_xor.c dmaengine: Use device_get_match_data() 2023-10-09 10:54:48 +05:30
mv_xor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
mxs-dma.c dmaengine: Explicitly include correct DT includes 2023-08-01 23:51:27 +05:30
nbpfaxi.c dmaengine: nbpfaxi: Convert to platform remove callback returning void 2023-09-28 13:10:52 +05:30
of-dma.c dmaengine: Use of_property_present() for testing DT property presence 2023-03-17 23:11:42 +05:30
owl-dma.c dmaengine: owl-dma: Convert to platform remove callback returning void 2023-09-28 13:10:52 +05:30
pch_dma.c dmaengine: pch_dma: Remove usage of the deprecated "pci-dma-compat.h" API 2022-01-08 22:16:44 +05:30
pl330.c dmaengine: pl330: Return DMA_PAUSED when transaction is paused 2023-08-07 00:01:41 +05:30
plx_dma.c dmaengine: plx_dma: Don't set chancnt 2023-05-24 12:24:32 +05:30
pxa_dma.c dmaengine: Drop unnecessary of_match_device() calls 2023-10-09 10:55:16 +05:30
sa11x0-dma.c dmaengine: sa11x0: Annotate struct sa11x0_dma_desc with __counted_by 2023-09-28 16:42:14 +05:30
sprd-dma.c dmaengine: sprd: delete redundant parameter for dma driver function 2023-10-02 21:28:33 +05:30
st_fdma.c dmaengine: Use device_get_match_data() 2023-10-09 10:54:48 +05:30
st_fdma.h dmaengine: st_fdma: Annotate struct st_fdma_desc with __counted_by 2023-09-28 16:42:14 +05:30
ste_dma40_ll.c dmaengine: ste_dma40: Remove platform data 2023-05-16 23:00:19 +05:30
ste_dma40_ll.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
ste_dma40.c dmaengine: std_dma40: fix kernel-doc warnings and spelling 2023-12-21 21:31:30 +05:30
ste_dma40.h dmaengine: ste_dma40: Remove platform data 2023-05-16 23:00:19 +05:30
stm32-dma.c dmaengine updates for v6.7 2023-11-03 18:56:51 -10:00
stm32-dmamux.c dmaengine: Explicitly include correct DT includes 2023-08-01 23:51:27 +05:30
stm32-mdma.c dmaengine updates for v6.7 2023-11-03 18:56:51 -10:00
sun4i-dma.c dmaengine: sun4i-dma: Convert to platform remove callback returning void 2023-09-28 13:10:55 +05:30
sun6i-dma.c dmaengine: sun6i-dma: Convert to platform remove callback returning void 2023-09-28 13:10:56 +05:30
tegra20-apb-dma.c dmaengine: tegra20-apb-dma: Convert to platform remove callback returning void 2023-09-28 13:10:56 +05:30
tegra186-gpc-dma.c dmaengine: tegra: Annotate struct tegra_dma_desc with __counted_by 2023-09-28 16:42:15 +05:30
tegra210-adma.c dmaengine: tegra210-adma: Support dma-channel-mask property 2023-12-11 17:44:18 +05:30
timb_dma.c dmaengine: timb_dma: Convert to platform remove callback returning void 2023-09-28 13:10:58 +05:30
TODO
txx9dmac.c dmaengine: txx9dmac: Convert to platform remove callback returning void 2023-09-28 13:10:58 +05:30
txx9dmac.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
uniphier-mdmac.c dmaengine: uniphier-mdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
uniphier-xdmac.c dmaengine: uniphier-xdmac: Convert to platform remove callback returning void 2023-11-24 18:32:30 +05:30
virt-dma.c dmaengine: virt-dma: convert tasklets to use new tasklet_setup() API 2020-09-18 12:19:07 +05:30
virt-dma.h dmaengine: virt-dma: Add missing locking around list operations 2019-12-26 10:04:18 +05:30
xgene-dma.c dmaengine: xgene-dma: Convert to platform remove callback returning void 2023-09-28 13:10:58 +05:30