STRUCT EP93XX_DMA_ENGINE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

struct ep93xx_dma_engine(9) πŸ’…

okay so bestie, welcome to the Kernel API Manual β€” this page is the EP93xx DMA engine instance and it's honestly a little iconic. ✨ The star is literally struct ep93xx_dma_engine, and we're gonna go through every field, no skipping, periodt. 🫢


🌸 NAME 🌸

struct ep93xx_dma_engine β€” the EP93xx DMA engine instance. that's the whole name, bestie πŸ’–


✨ SYNOPSIS ✨

here's the struct, exact spacing and semicolons and all β€” we do not "fix" code in this group chat, we respect it πŸŽ€:

       struct ep93xx_dma_engine {
           struct dma_device       dma_dev;
           bool m2m;
           int (*hw_setup)(struct ep93xx_dma_chan *);
           void (*hw_synchronize)(struct ep93xx_dma_chan *);
           void (*hw_shutdown)(struct ep93xx_dma_chan *);
           void (*hw_submit)(struct ep93xx_dma_chan *);
           int (*hw_interrupt)(struct ep93xx_dma_chan *);
         #define INTERRUPT_UNKNOWN       0;
         #define INTERRUPT_DONE          1;
         #define INTERRUPT_NEXT_BUFFER   2;
           size_t num_channels;
           struct ep93xx_dma_chan  channels[];
        };

🫢 Members 🫢

  • dma_dev β€” holds the dmaengine device. it's the holder of the dmaengine device, periodt πŸ‘‘
  • m2m β€” is this an M2M or M2P device? the little bool that answers that exact question πŸ‘€
  • hw_setup β€” method which sets the channel up for operation. setup era ✨
  • hw_synchronize β€” synchronizes DMA channel termination to current context. syncing the DMA channel termination to the current context, no cap πŸŒ€
  • hw_shutdown β€” shuts the channel down and flushes whatever is left. shutdown + flush whatever is left πŸ’€
  • hw_submit β€” pushes active descriptor(s) to the hardware. active descriptor(s) go to the hardware πŸ”₯
  • hw_interrupt β€” handle the interrupt. interrupt-handling duty ⚑
  • num_channels β€” number of channels for this instance. the count of channels for this instance πŸ”’
  • channels β€” array of channels. literally an array of channels 🧚

πŸ’– Description πŸ’–

okay so here's the tea: there is one instance of this struct for the M2P channels and one for the M2M channels. 🫢

The hw_xxx methods are used to perform operations which are different on M2M and M2P channels. so yeah, the hw_xxx squad is doing the M2M/M2P-specific work ✨

🚨 important caveat, bestie: these methods are called with channel lock held and interrupts disabled so they cannot sleep. like, do not try to sleep in there β€” the lock is held and interrupts are disabled. 😭

πŸ‘€ SEE ALSO πŸ‘€

Kernel file ./drivers/dma/ep93xx_dma.c is the source. then here's the whole linked bestie squad:


mwah πŸ’‹ okay that's the page! it lives in ./drivers/dma, it's dated October 2026, and it's the struct ep93xx_dma_engine(9) manual page. go be iconic with your DMA engine, bestie πŸŒˆβœ¨πŸ‘‘

πŸ“¦ where this page comes from