STRUCT DMA_SLAVE_CAPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

Okay so bestie, struct dma_slave_caps β€” it's literally just here to expose the capabilities of a slave channel, and that's it. Nothing more, nothing less. Periodt. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

struct dma_slave_caps {
    u32 src_addr_widths;
    u32 dst_addr_widths;
    u32 directions;
    u32 min_burst;
    u32 max_burst;
    u32 max_sg_burst;
    bool cmd_pause;
    bool cmd_resume;
    bool cmd_terminate;
    enum dma_residue_granularity residue_granularity;
    bool descriptor_reuse;
 };

🌸 Members 🌸

  • src_addr_widths β€” okay so this is a bit mask of all the src addr widths this channel supports. Width is measured in bytes, so like, if a channel supports a width of 4, the mask should have BIT(4) set. That's the vibe check right there. πŸŽ€
  • dst_addr_widths β€” same energy as above but for dst addr widths. A bit mask of everything the channel can handle on the destination side. Slay. ✨
  • directions β€” bit mask of the slave directions this channel supports. Now here's the thing: enum dma_transfer_direction is not defined as a bit flag for each type, so the DMA controller has to set BIT(<TYPE>) itself, and the controller should be checking it the same way too. Iykyk. πŸ’œ
  • min_burst β€” the min burst capability per-transfer. Literally the smallest burst it'll do. πŸ¦‹
  • max_burst β€” the max burst capability per-transfer. The biggest burst. Main character energy. πŸ”₯
  • max_sg_burst β€” max number of SG list entries that get executed in a single burst DMA transaction with no software intervention for reinitialization. And here's the cute part: a zero value means unlimited number of entries. No cap, fr fr. πŸ’€
  • cmd_pause β€” true if pause is supported (like, for reading residue or for resuming later). 🫢
  • cmd_resume β€” true if resume is supported. 🌈
  • cmd_terminate β€” true if the terminate cmd is supported. πŸ’…
  • residue_granularity β€” the granularity of the reported transfer residue. That's it, that's the whole vibe. ⭐
  • descriptor_reuse β€” if a descriptor can be reused by the client and resubmitted multiple times. Iconic behavior honestly. πŸ‘‘

πŸ”₯ SEE ALSO πŸ”₯

Bestie you have to check out the kernel file ./include/linux/dmaengine.h and all these iconic neighbors too:


πŸ’– That's the whole page bestie. Go forth and know your slave channel capabilities. No notes. 🧚

Last updated October 2026 by the absolute legends over in ./include/linux β€” mwah, love u, thanks for the docs πŸ“

πŸ“¦ where this page comes from