ASoC框架分为3部分:
- platform(用来描述芯片的DAI接口,负责数据传输):含有 DMA
DAI:snd_soc_dai_driver,
用来表示支持哪些格式数据,
提供设置格式的函数,
启动数据传输
数据传输:snd_soc_platform_driver
- codec (用来描述音频编解码芯片,含有2部分:DAI接口,控制接口):
DAI:snd_soc_dai_driver,
用来表示支持哪些格式数据,
提供设置格式的函数
控制接口:snd_soc_codec_driver
读写芯片的寄存器
- machine (snd_soc_card,snd_soc_dai_link,
用来确定使用哪一个platform,哪一个codec芯片)
最后会注册一个名为“soc-audio”的平台设备,
导致soc-core.c中的soc_probe函数被调用,
进而分配/设置/注册 snd_card
****************************************************
- 分配注册一个名为soc-audio的平台设备
- 这个平台设备有一个私有数据 snd_soc_card
snd_soc_card里有一项snd_soc_dai_link
snd_soc_dai_link被用来决定ASOC各部分的驱动
3 snd_soc_dai_link 描述
A snd_soc_dai_link结构体中的部分成员,通过各种name的字符串描述了框架中使用的是哪一个平台,哪一个CPU DAI接口,哪一个codec,codec中的DAI接口等信息。
B 其中 平台 、CPU的DAI接口 、codec的名字 都使用的是 platform_device 和对应的 platform_driver的 .name
(name 会被相关的函数 继承给 各个模块的结构体)
而 codec中的DAI 使用的是 static struct snd_soc_dai_driver 的 .name
****************************************************
最后
以上就是强健灯泡最近收集整理的关于asoc 总结 1的全部内容,更多相关asoc内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复