Linux ALSA音频驱动一:音频系统概述
音频系统概述
音频系统通过数据+控制总线与CODEC连接,控制通路用I2C,数据通常为I2S,框图如图1所示。
I2C:寄存器读写,用于配置CODEC控制通路。
I2S:音频数据传输,通常与platform驱动配合实现dma数据搬运。
图1 音频系统框图
ALSA驱动总的结构体即snd_soc_card。
/* SoC card */
struct snd_soc_card {const char *name;...int (*probe)(struct snd_soc_card *card);int (*late_probe)(struct snd_soc_card *card);int (*remove)(struct snd_soc_card *card);/* the pre and post PM functions are used to do any PM work before and* after the codec and DAI's do any PM work. */int (*suspend_pre)(struct snd_soc_card *card);int (*suspend_post)(struct snd_soc_card *card);int (*resume_pre)(struct snd_soc_card *card);int (*resume_post)(struct snd_soc_card *card);.../* CPU <--> Codec DAI links */struct snd_soc_dai_link *dai_link; /* predefined links only */int num_links; /* predefined links only */...};
该结构体在Machine驱动中通过snd_soc_register_card注册到ALSA,snd_soc_card成员dai_link中指定codec_name, platform_name,从而实现与platform, codec驱动的绑定,框图如图2所示。
图2 ALSA驱动框图
Machine驱动:该驱动实现snd_soc_card的定义与注册,并通过指定snd_soc_dai_link中的codec_name, platform_name, codec_dai_name, platform_dai_name从而实现与其它各个驱动组件的绑定。
Platform驱动:向ALSA platform_list注册snd_soc_platform_driver,并通过snd_soc_ops暴露其音频能力,
Codec驱动:向ALSA codec_list注册snd_soc_codec_driver,linux5.10有所调整,通过注册devm_snd_soc_register_component挂载自己的音频能力,但是原理类似,通常codec驱动还需要注册kcontrol, widget, route等通路信息。
Linux ALSA音频驱动一:音频系统概述相关推荐
- Linux ALSA声卡驱动之八:ASoC架构中的Platform
1. Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过C ...
- Linux ALSA声卡驱动之四:Codec 以及Codec_dai
ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...
- Linux ALSA声卡驱动之二:Platform
ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...
- Linux ALSA声卡驱动之五:Machine 以及ALSA声卡的注册
ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...
- Linux ALSA声卡驱动之三:Platform之Cpu_dai
ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...
- Linux ALSA声卡驱动之七:录音(Capture) 调用流程
ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...
- Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介
ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...
- linux alsa声卡驱动原理分析- 设备打开过程和数据流程,linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料.ppt...
linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料 Linux ALSA声卡驱动原理分析 -设备打开过程和数据流程;目 录;目 录;一.导 读;目 录;二.ALSA架构简介;二. ...
- Linux ALSA声卡驱动之三:PCM设备的创建
1. PCM是什么 PCM 是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制.我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种 ...
- Linux ALSA声卡驱动之七:ASoC架构中的Codec
1. Codec简介 在移动设备中,Codec的作用可以归结为4种,分别是: 对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号 对Mic.Linein或者其他输入源的模拟信号进行A/D转 ...
最新文章
- Sqlite3支持的数据类型 日期函数 Sqlite3 函数
- 如何爬取知乎中问题的回答以及评论的数据?
- 关于SQLServer2000中触发器的使用——多行数据提交
- 人类血液中首次发现微塑料颗粒,饮料瓶塑料袋化妆品都是来源
- iOS tabBarController 初始化就执行了 viewDidLoad
- 在python中使用Ansible实现Devops的相关总结
- 《从问题到程序:用Python学编程和计算》——导读
- 中国主流的大数据分析厂商
- Axure插件axure-chrome-extension安装(非常方便)
- 嵌入式 Linux 入门 环境篇(一、开发板初体验)
- 关于STM32的IAP超详细图文解说
- 关于windows10系统连接隐藏网络时,显示无法连接问题的解决方式
- GLFWError #65542 Happen, WGL: The driver does not appear to support OpenGL 问题解决
- Android Tv wifi网络登录认证
- 平安好医生上半年营收28亿:同比降26% 净亏4.26亿
- android按键静音键功能实现
- 墨者学院Tomcat 远程代码执行漏洞利用
- 安卓 SDK 开发使用 VirtualAPK 实现插件化
- [附源码]Nodejs计算机毕业设计基于图书管理系统Express(程序+LW)
- 源支付最新版V6.52版本源码正版授权