audio系统介绍之 ---Machine driver

本文详细介绍了音频系统(ASOC)中的platform设备注册过程及machinedriver的数据结构实现。包括平台驱动注册、声卡注册流程及关键数据结构如snd_soc_card、snd_soc_dai_link和snd_soc_ops的使用。

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

由于整个audio音频系统(ASOC)包含三个模块:platform,machine,codec部分,没有找到合适的文档描述machine部分,下面找到一个描述,虽然简单,至少能说明点问题。


2.1 注册platform设备
Machine就是一个嵌入式设备、机器或开发板,Board。Machine driver负责声卡注册、绑定platform driver和codec driver,实现与设备和开发板特定的代码等。


ASOC driver core注册为platform driver,sound/soc/soc-core.c
/* ASoC platform driver */
static struct platform_driver soc_driver = {
.driver = {
.name = "soc-audio",
.owner = THIS_MODULE,
.pm = &snd_soc_pm_ops,
},
.probe = soc_probe,
.remove = soc_remove,
};

Machine driver把声卡注册为platform device,name为soc-audio,按照linux设备驱动模型,platform总线会匹配soc-audio相同的device和driver,会触发调用soc_probe,soc_probe函数正是是ASOC驱动的入口。


2.2 machine driver实现数据结构
snd_soc_card表示一个声卡。
snd_soc_dai_link用来描述cpu_dai和codec_dai是如何连接的。根据硬件的接法来填充这个数据结构。Machine driver用platform、codec、cpu_dai、codec_dai的名字来填充,然后去匹配已经注册了的platform、codec、dai。每个dai_link代表一个stream,对应一个PCM设备文件。
snd_soc_ops是对dai_link的实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值