linux/sound目录下ALSA体系SOC子系统中hw_params逻辑
链接分析:
core/pcm_native.c文件中snd_pcm_hw_params()函数调用err = substream->ops->hw_params(substream, params)。根据soc/soc-core.c文件中snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &soc_pcm_ops)和soc_pcm_ops定义中.hw_params = soc_pcm_hw_params提供的关联,可知soc/soc-core.c文件中soc_pcm_hw_params()函数被调用。此函数依次调用4个分支。
(1).ret = machine->ops->hw_params(substream, params);根据soc/soc-core.c文件中soc_new_pcm()函数中rtd->dai = dai_link;和/soc/pxa/littleton.c文件中snd_soc_machine_littleton定义.dai_link = littleton_dai的关联,以及littleton_dai和littleton_machine_ops的定义可知,没有关联项,此函数为空。
(2).ret = codec_dai->ops.hw_params(substream, params);根据soc/pxa/littleton.c文件中.codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],和wm9713_dai定义中提供的关联,可知,没有关联。
(3).ret = cpu_dai->ops.hw_params(substream, params);根据soc/

本文深入剖析了Linux内核sound目录下ALSA子系统在SOC层的hw_params逻辑。从核心的pcm_native.c调用到soc_pcm_hw_params(),再到machine、codec_dai、cpu_dai和platform的hw_params处理。通过分析pxa3xx_ac97_pcm_stereo_out的设置和dma链表的组织,揭示了如何完成dma配置,为播放和停止操作提供基础。后续会继续探讨dma在录音/放音数据流中的作用。
最低0.47元/天 解锁文章
3318

被折叠的 条评论
为什么被折叠?



