STRUCT SND_DMAENGINE_DAI_DMA_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct snd_dmaengine_dai_dma_data β€” NAME πŸ’–

okay bestie, so this is struct snd_dmaengine_dai_dma_data β€” the DAI DMA configuration data. that's it, that's the whole vibe ✨ (and yes, we're in the Kernel API Manual, section 9, if you were wondering πŸŽ€)


✨ SYNOPSIS ✨

here's the whole struct, literally copy-paste it exactly, no cap:

struct snd_dmaengine_dai_dma_data {
    dma_addr_t addr;
    enum dma_slave_buswidth addr_width;
    u32 maxburst;
    void *filter_data;
    const char *chan_name;
    unsigned int fifo_size;
    unsigned int flags;
    void *peripheral_config;
    size_t peripheral_size;
    u32 port_window_size;
 };

look at her. ten whole members. main character energy fr fr πŸ‘‘


🌸 Members 🌸

okay so now the part where we meet everybody one by one, like a little group chat roll call 🫢

  • addr β€” the address of the DAI data source register or the destination register. where the data actually lives, basically πŸ’…
  • addr_width β€” the width of that source/destination register. how wide the doorway is 🌈
  • maxburst β€” the maximum number of words that can be sent to or received from the DAI in one single burst. important note though, and I'm quoting the vibe exactly: words, as in units of the src_addr_width member, not bytes 😭 so do not come in here counting bytes, bestie, that's not the assignment.
  • filter_data β€” custom DMA channel filter data. this usually gets used when you're requesting the DMA channel. iykyk πŸ¦‹
  • chan_name β€” a custom channel name to use when requesting the DMA channel. name your channel, give it a little identity ✨
  • fifo_size β€” the FIFO size of the DAI controller, measured in bytes πŸ“
  • flags β€” PCM_DAI flags. and for now it's only SND_DMAENGINE_PCM_DAI_FLAG_PACK β€” that's the whole roster, that's the only one πŸ’€
  • peripheral_config β€” the peripheral configuration for programming the peripheral for a dmaengine transfer. the lil instruction manual for the peripheral πŸŽ€
  • peripheral_size β€” the size of that peripheral configuration buffer. how much room the instruction manual takes up πŸ“
  • port_window_size β€” the length of the register area, in words, that the data needs to be accessed on the device side. and listen, this one has lore: it's only used for devices which are using an area instead of a single register to send/receive the data. typically the DMA loops in that area in order to transfer the data πŸ” so like, a whole zone instead of one little spot, and the DMA just laps around it. iconic behaviour honestly πŸ‘‘

πŸ”₯ SEE ALSO πŸ”₯

go look at these next, bestie, they're the friends of this page:


okay that's the whole page!! πŸ’œ huge shoutout to ./include/sound for hosting this, and to the October 2026 era for stamping the date on it β€” and yes, the footer repeats struct snd_...dai_dma_data(9) at us one more time because she loves a dramatic exit πŸ’… mwah, go configure some DMA, you got this πŸ§šπŸ’–

πŸ“¦ where this page comes from