音频系统概述

音频系统通过数据+控制总线与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音频驱动一:音频系统概述相关推荐

  1. Linux ALSA声卡驱动之八:ASoC架构中的Platform

    1.  Platform驱动在ASoC中的作用 前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过C ...

  2. Linux ALSA声卡驱动之四:Codec 以及Codec_dai

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  3. Linux ALSA声卡驱动之二:Platform

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  4. Linux ALSA声卡驱动之五:Machine 以及ALSA声卡的注册

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  5. Linux ALSA声卡驱动之三:Platform之Cpu_dai

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  6. Linux ALSA声卡驱动之七:录音(Capture) 调用流程

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  7. Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  8. linux alsa声卡驱动原理分析- 设备打开过程和数据流程,linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料.ppt...

    linux alsa声卡驱动原理分析解析- 设备打开过程跟数据流程资料 Linux ALSA声卡驱动原理分析 -设备打开过程和数据流程;目 录;目 录;一.导 读;目 录;二.ALSA架构简介;二. ...

  9. Linux ALSA声卡驱动之三:PCM设备的创建

    1. PCM是什么 PCM 是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制.我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种 ...

  10. Linux ALSA声卡驱动之七:ASoC架构中的Codec

    1.  Codec简介 在移动设备中,Codec的作用可以归结为4种,分别是: 对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号 对Mic.Linein或者其他输入源的模拟信号进行A/D转 ...

最新文章

  1. Sqlite3支持的数据类型 日期函数 Sqlite3 函数
  2. 如何爬取知乎中问题的回答以及评论的数据?
  3. 关于SQLServer2000中触发器的使用——多行数据提交
  4. 人类血液中首次发现微塑料颗粒,饮料瓶塑料袋化妆品都是来源
  5. iOS tabBarController 初始化就执行了 viewDidLoad
  6. 在python中使用Ansible实现Devops的相关总结
  7. 《从问题到程序:用Python学编程和计算》——导读
  8. 中国主流的大数据分析厂商
  9. Axure插件axure-chrome-extension安装(非常方便)
  10. 嵌入式 Linux 入门 环境篇(一、开发板初体验)
  11. 关于STM32的IAP超详细图文解说
  12. 关于windows10系统连接隐藏网络时,显示无法连接问题的解决方式
  13. GLFWError #65542 Happen, WGL: The driver does not appear to support OpenGL 问题解决
  14. Android Tv wifi网络登录认证
  15. 平安好医生上半年营收28亿:同比降26% 净亏4.26亿
  16. android按键静音键功能实现
  17. 墨者学院Tomcat 远程代码执行漏洞利用
  18. 安卓 SDK 开发使用 VirtualAPK 实现插件化
  19. [附源码]Nodejs计算机毕业设计基于图书管理系统Express(程序+LW)
  20. 源支付最新版V6.52版本源码正版授权

热门文章

  1. 计算机 修改 虚拟ip,怎么样在电脑中设置虚拟IP地址?
  2. 基于SPCE061A的语音控制小车设计
  3. 读书《你能写出好故事:写作的诀窍、大脑的奥秘、认知的陷阱》
  4. 停车场车牌识别收费系统厂家
  5. Python数学问题17:鸡兔同笼问题
  6. 绿幕抠图在手机上使用认识.
  7. 进店率、提袋率、客单价
  8. 2020华为软件精英挑战赛历程总结——复赛篇
  9. SharePoint 常用开发工具
  10. 查看nginx是否启动成功