ASOC层

ALSA Soc Layer
ALSA 芯片系统(ASOC)层总体工程目标是对芯片处理器嵌入式系统提供更好ALSA支持(e.g.
Pxa2xx,au1x00,iMX,etc)和方便的音频codecs.当前内核有一些soc audio 支持,不过有一些限制:
(1)当前,codec驱动总是紧密和SOC cpu联系在一起,这不是真实想法以及将导致代码的重复,例如linux 有4个不同wm8731驱动对应4个不同的soc platforms.
(2)对于信号使用有一些不是标准的方法来初始audio事件,例如:耳机和耳麦插入,耳机和耳麦检测来自于插入事件.在便携式设备有一些很正常的事件以及常常需要machine指定的代码去re route 音频,使能amp等etc来自与一个事件.
(3)当播放和录音时候当前驱动试着去一直供电(power up),对于pc是很好的,但是对于portable devices容易浪费大量电,还有不支持改变codec的采样率和偏执电流来节省power.
ASOC 当前一直在进步并且大部分特性实现了以及当前主流内核支持PXA2xx和AT91xx和S3C24XX  Soc.

设计:
ASOC 层被设计去区分如下如下情况并且提供如下特性(features):
(1)Codec independence,允许重新使用codec 驱动在其他平台(platforms)和机器(machines).
(2)简单i2s/pcm音频接口配置(setup)在codec和soc之间,在应用hw params可知道情况下每一个soc接口和codec 注册它的音频接口兼容core以及之后matched和配置。
(3)动态音频电源管理(DAPM),DAPM在任何时候自动设置codec处于最小的功率状态。包含上电和下电内部电源模块取决与内部codec 音频路由和任何有效的streams.
(4)pop和click减小,通过正常上电和下电codec时序(包含使用数字mute 信号)可以减少pops和clicks.改变了电源状态影响了codec的信号.
(5)Machine指定的控制,允许机器添加控制了sound card .例如: speaker amp的音量控制。
为了实现所有这些,ASOC基本分成了嵌入式音频系统3个组成部分:
A: codec驱动:包含了平台独立和包含音频控制和音频接口兼容,codec DAPM定义和codec IO功能.
B:platform驱动:包含了音频DMA和音频接口驱动(I2S,AC97,PCM).
C:Machine驱动:处理机器指定的控制和音频事件,例如开始播放打开功放。
支持的SOCs:

下面soc cpus目前是支持的:
Intel/Marvell PXA2xx and PXA3xx (AC97, I2S & PCM)
Atmel AT91 and AVR32 (I2S)
S3C24xx (AC97 & I2S)
Freescale i.MX31 (I2S & PCM)
Renesas SH7760 (AC97 & I2S)
TI OMAP (I2S)
ADI Blackfin (AC97 & I2S)
TI DaVinci (I2S)
Freescale PPC (I2S)
AMD/RMI/Alchemy Au1200/Au1550 (AC97, I2S)
一勤天下无难事。
原文地址:https://www.cnblogs.com/nowroot/p/13669012.html