STRUCT DW_EDMA_PLAT_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct dw_edma_plat_ops(9) β€” the Kernel API Manual, bestie edition πŸ¦‹

okay so picture this: you're deep in the kernel, you've got a DW eDMA chip, and it needs to know stuff that only your platform knows. that's literally this struct. it's the little hook-up spot where the generic eDMA code asks "hey, where's the IRQ?" and "hey, what's the PCIe address for this CPU address?" and your platform code answers. plat-specific methods, no cap. ✨

🌸 NAME 🌸

struct dw_edma_plat_ops β€” platform-specific eDMA methods. that's it, that's the vibe. 🫢

πŸ’– SYNOPSIS πŸ’–

like, here's the whole thing, it's giving tiny-but-powerful:

struct dw_edma_plat_ops {
    int (*irq_vector)(struct device *dev, unsigned int nr);
    u64 (*pci_address)(struct device *dev, phys_addr_t cpu_addr);
 };

✨ Members ✨

  • irq_vector β€” get the IRQ number of the eDMA channel you passed in. ⚑ note (and this is the part ppl trip on, iykyk) that this method takes the channel id in the end-to-end numbering, with the eDMA write channels placed first in the row. so like, writes get to the front of the line, main character energy honestly. πŸ‘‘
  • pci_address β€” get the PCIe bus address that corresponds to the CPU address you passed. πŸ”₯ note: there's no need to specify this function if the address translation is already being done by the DW PCIe RP/EP controller with the DW eDMA device in subject, and DMA_BYPASS isn't set for all the outbound iATU windows. because in that case, the controller just handles it automatically for you. slay, no extra work. πŸ’…

πŸŽ€ SEE ALSO πŸŽ€

  • Kernel file ./include/linux/dma/edma.h
  • enum dw_edma_chip_flags(9)
  • enum dw_edma_ch_irq_mode(9)
  • struct dw_edma_chip(9)

go read those too, they're lowkey essential and they ate. πŸ’œ


okay that's the whole page, mwah πŸ’‹ this came from the ./include/linux/dma corner of the kernel, dated October 2026, and it's chillin' in the Kernel API Manual β€” struct dw_edma_plat_ops(9), periodt. πŸ§šβ€β™€οΈπŸŒˆβ­

πŸ“¦ where this page comes from