iMX6q 音频系统调试

来源:互联网 发布:alias软件介绍 编辑:程序博客网 时间:2024/06/14 07:04

http://blog.sina.com.cn/s/blog_71e5db15010103op.html

ALSA的驱动很宏大,哪天一定要写一个完整的分析

首先说,3.0以后对音频管理的调整实在是很不错,结构明显清晰多了

sound/soc/soc-core.c是整个音频体系的核心,用于串联所有的模块。
模块包括两部分,SSI部分和i2c部分,前者负责数据,后者负责控制,通过dai_link连接在一起。

SSI部分的,在sound/soc/imx/imx-ssi.c中实现,通过在arch中定义的资源,注册cpu_dai,并出现在soc_core.c中的dai_list中

I2C部分是指的codecs,在sound/soc/codecs/tlv320aic3x.c中实现(不同的codecs会有差异),通过在arch中定义的i2c资源,初始化并注册codecs,并给这个codec一个唯一的名字,并且为这个codec的driver注册对应的dai

最关键的部分就是sound/soc/imx/imx-wm8962.c,(我直接用原来的文件改的,请忽略这些不着调的名字,如果正式写的时候,这些名字要对应起来),这里有一个dai_link数据结构,把这些信息串接了起来,指定好对应的cpu_dai_name,codec_dai_name,codec_name,就可以在soc-core里面把这些数据对应起来了,然后整体的逻辑是由soc-sound这个driver来控制的

这个过程中,唯一不理解的就是用字符串来传递这样的对应关系,似乎很不高效,也不够稳定,但好像也没有别的好办法了

这一部分写得太糙,过几天再补一个详细的