STRUCT SND_DMAENGINE_DAI_DMA_DATA(9)
π 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 thesrc_addr_widthmember, 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 onlySND_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:
- Kernel file
./include/sound/dmaengine_pcm.h snd_pcm_substream_to_dma_direction(9)struct snd_dmaengine_pcm_config(9)
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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms