asoc 总结 1

it2023-10-02  75

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  ****************************************************
最新回复(0)