ENUM DW_EDMA_CH_IRQ_MODE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 in edma_int[] 🏠
  • DW_EDMA_CH_IRQ_REMOTE β€” remote interrupt only (IMWr/MSI), and it does not deliver the local edma_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 both LIE and RIE and mask the local interrupt in DMA_*_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