ALSA声卡笔记3--ASoC驱动重要结构体关系图

原创 2016年08月29日 20:17:48

                                

1、ASoC中重要的数据结构之间的关联方式

(1)Kernel-2.6.35-ASoC中各个结构的静态关系

       ASoC把声卡实现为一个Platform Device,然后利用Platform_device结构中的dev字段:dev.drvdata,它实际上指向一个snd_soc_device结构

       可以认为snd_soc_device是整个ASoC数据结构的根本,由他开始,引出一系列的数据结构用于表述音频的各种特性和功能。snd_soc_device结构引出了snd_soc_card和soc_codec_device两个结构

     然后snd_soc_card又引出snd_soc_platform、snd_soc_dai_link和snd_soc_codec结构。如上所述,ASoC被划分为Machine、Platform和Codec三大部分,如果从这些数据结构看来,snd_codec_device和snd_soc_card代表着Machine驱动snd_soc_platform则代表着Platform驱动snd_soc_codec和soc_codec_device则代表了Codec驱动,而snd_soc_dai_link则负责连接Platform和Codec


(2)3.0版内核对ASoC的改进

     3.0中的数据结构更为合理和清晰,取消了snd_soc_device结构,直接用snd_soc_card取代了它,并且强化了snd_soc_pcm_runtime的作用,同时还增加了另外两个数据结构snd_soc_codec_driver和snd_soc_platform_driver,用于明确代表Codec驱动和Platform驱动。


2、(如何写alsa声卡驱动)

(1)构造snd_card结构体,snd_card_create()构造snd_card结构体并自动创建控制接口。调用函数snd_ctrl_create

(2)初始化;如snd_pcm_new(),创建逻辑设备(播放设备或录音设备)

(3)注册 snd_card_register

3、关联分析

      之前说要写一个alsa声卡驱动程序,要构造、初始化、注册snd_card结构体。在内核里,针对嵌入式设备抽象出了ASoC,就不需要手工构造、初始化、注册snd_card结构体,虽然不用手工执行相关的函数,在ASoC里的Machine,Platform和Codec部分应该有函数帮我们执行构造、初始化、注册snd_card结构体的操作。


4、归纳

ASoC中重要的数据结构图可知snd_card结构体是snd_soc_card结构体的成员

在Soc-core.c的snd_soc_instantiate_card函数中有它们之间的关系



构造snd_card结构体


初始化结构体


snd_card结构体的driver成员是

注册结构体



alsa 音频路径的问题:

alsa 音频路径的问题: 在sound/soc/codecs目录中有很多音频codec的codec驱动,我使用的是wm9713,AP是s3c6410;这里个驱动文件中定义了很多widget和con...
  • bingqingsuimeng
  • bingqingsuimeng
  • 2012年12月26日 10:16
  • 2771

PCM data flow - part 3: ASoC codec driver

http://blog.csdn.net/azloong/article/details/17252843 上一章提到codec_drv的几个组成部分,下面逐一介绍,基本是以内核文档Do...
  • zhuxiaoping54532
  • zhuxiaoping54532
  • 2016年03月22日 16:31
  • 622

内核ASoC之path

ASoC的DAPM是怎么做到需要用户空间参与功耗最小的呢?以codec为例,它运行时的功耗 主要取决于:1. codec供电电压越低,功耗越低; 2. 将codec中没有使用的部件widget下电禁用...
  • u013531497
  • u013531497
  • 2015年09月10日 19:56
  • 368

misc设备和i2c设备创建的节点路径

misc设备: ./sys/class/misc/sim_i2c_port/sim_i2c_addr ./sys/devices/virtual/misc/sim_i2c_port/sim_i2c_...
  • xuecz1230
  • xuecz1230
  • 2015年11月27日 17:25
  • 787

Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

分类: Linux设备驱动 Linux音频子系统2012-01-17 14:16 19963人阅读 评论(9) 收藏 举报 linuxcodec数据结构嵌入式工作平台 目录(?...
  • mirkerson
  • mirkerson
  • 2015年06月06日 10:02
  • 711

ALSA System on Chip(ASOC)

此文档仅作为开发随笔记录文档,可作为正式文档做材料参考,但不做正式文档。   Written bywolfgang huang(stillinux@gmail.com)   此类文档仅记录Androi...
  • wolfgang9277
  • wolfgang9277
  • 2015年07月26日 10:27
  • 831

Asoc dapm(三) - dapm widgets & dapm kcontrol & dapm route

DAPM框架为我们提供了大量的宏来定义各种各样的widget。这些宏定义根据widget的类型被分为了几个域:dapm widgetscodec域比如VREF和VMID等提供参考电压的widget,这...
  • luckywang1103
  • luckywang1103
  • 2015年12月02日 19:29
  • 713

Asoc dapm(五) - dapm widget链表更新

有几个操作和dapm widget链表更新相关 1) soc_probe的时候调用snd_soc_dapm_new_widgets 2) 在用户空间通过tinymix设置路径 3) 在用户空间通...
  • luckywang1103
  • luckywang1103
  • 2015年12月06日 18:52
  • 915

ALSA声卡11_从零编写之调试——学习笔记

1、调试 (1)把程序拷贝到服务器上进行编译 (2)把程序放到内核上面去 重新配置内核,吧原来的声卡驱动程序去掉 a. 修改语法错误 11th_myalsa b. 配置内核去掉原来的...
  • qingkongyeyue
  • qingkongyeyue
  • 2017年01月21日 18:15
  • 443

用ALSA驱动声卡流程详解

用ALSA驱动声卡流程详解 作者:北南南北来自:LinuxSir.Org 提要:目前大多数发行版都已经支持主流声卡,声卡的驱动无非是用ALSA;本文主要讲述声卡驱动的流程;目的是帮助遇到声卡的驱动问题...
  • SuperLinux
  • SuperLinux
  • 2005年11月02日 18:45
  • 3169
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ALSA声卡笔记3--ASoC驱动重要结构体关系图
举报原因:
原因补充:

(最多只允许输入30个字)