linux驱动:音频驱动(二)ASoc

本文介绍了ASoC声卡驱动框架的基本组成及工作原理,包括codec驱动、platform驱动和machine驱动,并以mini2440平台的UDA134X codec为例,详细阐述了如何将这些组件整合在一起。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:https://blog.youkuaiyun.com/u010168781/article/details/54561673

五、【ASoC声卡驱动框架】

1、ASoC将嵌入式设备的音频系统从软件层面划分为3个组件

1.1 codec驱动:音频编解码器驱动,与平台无关,实现音频控制项添加、音频接口实现、DAPM(动态音频电源管理)、音频编解码器的IO功能

snd_soc_codecsnd_soc_codec_device代表codec驱动

1.2platform驱动:与平台有关驱动,实现DMA和音频接口(I2S、PCM、AC97)驱动

snd_soc_platform代表plarform驱动

1.3machine驱动:与板级相关驱动,实现板级特有的一些控件和音频事件。 machine将codec与platform结合到一起,匹配两者的DAI(数字音频接口)。

1.4 snd_soc_devicesnd_soc_card代表machine驱动

snd_soc_dai_link负责连接plarform驱动和codec驱动

以上模块通过snd_soc_pcm_runtime进行关联,将下层具体功能与上层ALSA的pcm流进行关联

1.5 底层各个模块通过soc_bind_dai_link绑定:snd_soc_pcm_runtime中的codeccodec_daiplatformcpu_dai

1.6 整体card级别的初始化:snd_soc_instantiate_card --> (soc_bind_dai_link+ snd_card_create + soc_probe_dai_link + snd_card_register)

 

2、数字音频接口DAI

2.1 AC97接口:5线式,很多PC的声卡使用这种接口

2.2 I2S接口:4线式

2.3 PCM接口:4线式

 

3、machine驱动

3.1 以mini2440为例

s3c24xx_udal34x.c:将s3c2440的platform驱动和UDA134X的codec驱动整合到一起的machine驱动的实现

3.2 创建ASoC声卡平台设备

Sound/soc/s3c24xx/s3c24xx_uda134x.c中

s3c24xx_uda134x_snd_device= platform_device_alloc("soc-audio",-1);

3.3 ASoC声卡的平台驱动

sound/soc/soc-core.c  2378 行

/* ASoCplatform driver */

staticstruct platform_driver soc_driver = {

     .driver    = {

         .name       = "soc-audio",

         .owner      = THIS_MODULE,

         .pm    = &soc_pm_ops,

     },

     .probe     = soc_probe,

     .remove    = soc_remove,

 };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值