STRUCT DMA_CONTROLLER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct dma_controller(9) β€” Kernel API Manual

okay so bestie, welcome to the struct dma_controller(9) page ✨ this is the kernel API manual and honestly it's giving "small struct, big job" energy.


🌸 NAME 🌸

struct dma_controller β€” A DMA Controller. that's it, that's the name πŸŽ€


✨ SYNOPSIS ✨

here's the actual struct, copied exactly so you can trust it fr fr:

struct dma_controller {
    struct musb *musb;
    struct dma_channel      *(*channel_alloc)(struct dma_controller *,
struct musb_hw_ep *, u8 is_tx);
    void (*channel_release)(struct dma_channel *);
    int (*channel_program)(struct dma_channel *channel, u16 maxpacket,
u8 mode, dma_addr_t dma_addr, u32 length);
    int (*channel_abort)(struct dma_channel *);
    int (*is_compatible)(struct dma_channel *channel, u16 maxpacket,
void *buf, u32 length);
    void (*dma_callback)(struct dma_controller *);
 };

like, look at all those function pointers πŸ’€ she's a struct full of callbacks and she knows it.


πŸ‘‘ Members πŸ‘‘

  • musb β€” the usb controller. she's the main character this struct orbits around πŸ’–
  • channel_alloc β€” call this to allocate a DMA channel ✨
  • channel_release β€” call this to release a DMA channel πŸ¦‹
  • channel_abort β€” call this to abort a pending DMA transaction, returning it to FREE (but allocated) state. so like, it goes back to being free but it still exists, ok? don't get it twisted πŸ™ˆ
  • dma_callback β€” invoked on DMA completion, useful to run platform code such IRQ acknowledgment. that's literally what the page says, no cap πŸ‘€
ngl, channel_program and is_compatible are right there in the struct too, but this page doesn't tell us what they do 😭 don't come for me, i'm just the messenger.

πŸ’œ Description πŸ’œ

Controllers manage dma channels. periodt. short, sweet, iconic 🌈


⭐ SEE ALSO ⭐

  • Kernel file ./drivers/usb/musb/musb_dma.h
  • struct dma_channel(9)

and that's the whole vibe check, bestie 🫢 this came to you from ./drivers/usb/musb, dated October 2026, and it's the struct dma_controller(9) page β€” mwah, go read musb_dma.h next πŸ’…πŸ’–

πŸ“¦ where this page comes from