ENUM DW_EDMA_CH_IRQ_MODE(9)
π enum dw_edma_ch_irq_mode(9) π
okay so bestie, welcome to the Kernel API Manual entry for enum dw_edma_ch_irq_mode β it's literally the "per-channel interrupt routing control" situation and we're gonna get into it π
β¨ NAME β¨
enum dw_edma_ch_irq_mode β per-channel interrupt routing control. that's it, that's the vibe π
πΈ SYNOPSIS πΈ
enum dw_edma_ch_irq_mode {
DW_EDMA_CH_IRQ_LOCAL ,
DW_EDMA_CH_IRQ_REMOTE
};
π¦ Constants π¦
DW_EDMA_CH_IRQ_LOCALβ local interrupt only, like it's cozy at home inedma_int[]πDW_EDMA_CH_IRQ_REMOTEβ remote interrupt only (IMWr/MSI), and it does not deliver the localedma_int[]. she's out of the house, no forwarding address βοΈ
π₯ Description π₯
So the DesignWare EP eDMA can signal interrupts locally through the edma_int[] bus, and remotely using posted memory writes (IMWr) that the RC may interpret as MSI/MSI-X. two paths, two vibes, iykyk π
For the v0 eDMA linked-list programming path, DMA_*_INT_MASK gates the local edma_int[] assertion β but there's no dedicated per-channel mask for IMWr generation. so if you want a remote-only interrupt, Synopsys recommends setting both LIE and RIE, and masking the local interrupt in DMA_*_INT_MASK. π no cap, that's the recipe. see the DesignWare endpoint databook 6.30a, Linked List Mode interrupt handling ("Software Programming of an Endpoint's LIE and RIE Bits for Linked List Transfers", Attention).
A local (DW_EDMA_CHIP_LOCAL) instance never issues transfers on a remote-routed channel β fr fr. REMOTE routing on such an instance denotes a channel handed over to and driven by the remote side, and the recipe above is applied by the driving instance. so like, she's not slacking, she's just not the one driving π«Ά
HDMA linked-list watermark interrupts have the same LWIE/RWIE guidance. and HDMA non-linked-list mode has dedicated local and remote stop/abort interrupt enables β she got her own whole setup, iconic β
π quick vibe check: remote-only means you set bothLIEandRIEand mask the local interrupt inDMA_*_INT_MASKβ don't skip the masking step, bestie, that's the whole point π
π§ SEE ALSO π§
Kernel file ./include/linux/dma/edma.h struct dw_edma_plat_ops(9), enum dw_edma_chip_flags(9), struct dw_edma_chip(9) πΈ
and that's the whole page, bestie, you ate π this cutie lives in ./include/linux/dma, dated October 2026 β go forth and route those interrupts, periodt πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms