mirror-linux/include/linux/dma
Koichiro Den d9d5e1bdd1 dmaengine: dw-edma: Add virtual IRQ for interrupt-emulation doorbells
Interrupt emulation can assert the dw-edma IRQ line without updating the
DONE/ABORT bits. With the shared read/write/common IRQ handlers, the
driver cannot reliably distinguish such an emulated interrupt from a
real one and leaving a level IRQ asserted may wedge the line.

Allocate a dedicated, requestable Linux virtual IRQ (db_irq) for
interrupt emulation and attach an irq_chip whose .irq_ack runs the
core-specific deassert sequence (.ack_emulated_irq()). The physical
dw-edma interrupt handlers raise this virtual IRQ via
generic_handle_irq(), ensuring emulated IRQs are always deasserted.

Export the virtual IRQ number (db_irq) and the doorbell register offset
(db_offset) via struct dw_edma_chip so platform users can expose
interrupt emulation as a doorbell.

Without this, a single interrupt-emulation write can leave the level IRQ
line asserted and cause the generic IRQ layer to disable it.

Signed-off-by: Koichiro Den <den@valinux.co.jp>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260215152216.3393561-3-den@valinux.co.jp
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2026-02-25 15:24:19 +05:30
..
amd_xdma.h
dw.h
edma.h dmaengine: dw-edma: Add virtual IRQ for interrupt-emulation doorbells 2026-02-25 15:24:19 +05:30
hsu.h
idma64.h
imx-dma.h dmaengine: imx-sdma: Add i2c dma support 2024-04-25 14:41:18 +05:30
k3-event-router.h
k3-psil.h
k3-udma-glue.h dmaengine: ti: k3-udma-glue: Drop skip_fdq argument from k3_udma_glue_reset_rx_chn 2025-02-27 12:38:23 +05:30
mxs-dma.h
pxa-dma.h
qcom-gpi-dma.h
qcom_adm.h
qcom_bam_dma.h
sprd-dma.h
ti-cppi5.h
xilinx_dma.h
xilinx_dpdma.h