alsa DMA 切入点

描述 DMA 的重点参数

snd_pcm_substream是pcm中间层的核心,绝大部分任务都是在substream中处理,尤其是他的ops(snd_pcm_ops)字段,
许多user空间的应用程序通过alsa-lib对驱动程序的请求都是由该结构中的函数处理。
它的runtime字段则指向snd_pcm_runtime结构,snd_pcm_runtime记录这substream的一些重要的软件和硬件运行环境和参数。

在声卡的hw_params阶段,snd_soc_platform_driver结构的ops->hw_params会被调用,在该回调用,
通常会使用api:snd_pcm_set_runtime_buffer()把substream->dma_buffer的数值拷贝
到substream->runtime的相关字段中(.dma_area, .dma_addr, .dma_bytes),
这样以后就可以通过substream->runtime获得这些地址和大小信息了。

注意 snd_pcm_substream 也包含很多信息

索引关键词 runtime
runtime->hw 设置硬件参数
runtime->dma_addr 物理地址
runtime->dma_area 指针地址
runtime->dma_area size大小

dma_free_coherent(struct device *dev, size_t size, void *cpu_addr,
dma_addr_t dma_handle) 函数
可以的得出 dma_addr 是(handle 物理地址) dma_area 是地址(指针地址) dma_bytes 是size
申请这些数据一般是在 platform 中 hw_params 中设置,关于具体怎么赋值的 索引 dma_area dma_addr

猜你喜欢

转载自blog.csdn.net/aningxiaoxixi/article/details/109710386