ASoC 简介可以在Documentation/sound/alsa/soc/overview.txt路径下看到,其中的ASoC Design详细说明了ASoC设计的目的:

ASoC设计
ASoC层旨在解决这些问题并提供以下功能:
-
Codec独立性。允许在其他平台和计算机上重用codec驱动程序。
-
Codec和SoC之间的简易I2S / PCM音频接口设置。每个SoC接口和编解码器都将其音频接口功能注册到内核,然后在知道应用硬件参数时进行匹配和配置。
-
动态音频电源管理(DAPM)。 DAPM始终自动将编解码器设置为其最小功率状态。这包括根据内部编解码器音频路由和任何活动流来启动/关闭内部电源块。
-
pop-click声音缩小。通过以正确的顺序上/下驱动编解码器可以减少pop-click声音(包括使用数字静音)。 ASoC在编码时发出信号,以便何时更改电源状态。
-
Machine特定控制:允许机器向声卡添加控制(例如扬声器放大器的音量控制)。
为了实现这一切,ASoC基本上将嵌入式音频系统分成多个可重复使用的组件驱动程序:
- Codec类驱动程序:Codec类驱动程序独立于平台,包含音频控件,音频接口功能,编解码器DAPM定义和编解码器IO功能。如果需要,该类可扩展至BT,FM和MODEM IC。Codec类驱动程序应该是可以在任何体系结构和机器上运行的通用代码。
-
Platform类驱动程序:Platform类驱动程序包括音频DMA引擎驱动程序,数字音频接口(DAI)驱动程序(例如I2S,AC97,PCM)以及该平台的任何音频DSP驱动程序。
-
Machine类驱动程序:Machine 驱动程序类充当描述和绑定其他组件驱动程序以形成ALSA“声卡设备”的粘合剂。它可以处理任何机器特定的控制和机器级音频事件(例如,在播放开始时打开放大器)。
从上面的描述中我们就可以知道,ASoC可以分为三部分来看,Codec和Platform是平台无关的,而Machine是平台相关的。
其实上面的描述中还缺少了一个很关键的内容,就是DTS的设置,这个可以说是这些设备驱动的源头了。