五、【ASoC声卡驱动框架】

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

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

snd_soc_codec和snd_soc_codec_device代表codec驱动

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

snd_soc_platform代表plarform驱动

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

1.4 snd_soc_device和snd_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中的codec、codec_dai、platform、cpu_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,

};

linux驱动:音频驱动(二)ASoc相关推荐

  1. 为什么Linux的音频驱动位于sound目录下而不是driver/sound?

    原文见链接 为什么Linux的音频驱动位于sound目录下而不是driver/sound?

  2. zedboard 音频芯片 adau1761 linux 下音频驱动(一)简介

    一.概述 这其实和 ZedBoard 板卡无关,只要音频芯片是 adau1761 ,都可以使用.有两种方法可以驱动此芯片,在此只介绍第二种: 1.Linux uio 方式. 2.本文 adi kern ...

  3. Linux/Android 音频驱动从概念到 APP

    这里写自定义目录标题 前言 硬件介绍 Codec 通用结构 ADC 框图 DAC 框图 常用数字接口 其他相关术语 Codec 实际结构 硬件原理图 芯片手册框图 软硬件对应示例 Codec 硬件逻辑 ...

  4. 关于linux的音频驱动

    为了实现mp3播放,我们最近在sep4020上完成了i2s的驱动,主要经验总结如下: 1.       首先是要在probe函数里进行一系列的初始化,这些初始化对于i2s是很重要的,而且很多 ●    ...

  5. Linux ALSA音频驱动之一:框架概述

    1.ALSA概述 ALSA表示高级Linux声音体系结构(Advanced Linux Sound Architecture).它由一系列内核驱动,应用程序编译接口(API)以及支持Linux下声音的 ...

  6. zedboard 音频芯片 adau1761 linux 下音频驱动(三)PetaLinux

    一.概述 在这一篇文章,我们使用PetaLinux生成BOOT.bin.image.ub内核文件,用于下一步播放音乐调试.我们使用的Linux环境是Ubuntu14.04.4,软件为petalinux ...

  7. Linux ALSA音频驱动一:音频系统概述

    音频系统概述 音频系统通过数据+控制总线与CODEC连接,控制通路用I2C,数据通常为I2S,框图如图1所示. I2C:寄存器读写,用于配置CODEC控制通路. I2S:音频数据传输,通常与platf ...

  8. Linux ALSA音频子系统二

    From 本文以高通平台为例,介绍一下android下的音频结构.android使用的是tinyALSA作为音频系统,使用方法和基本框架与linux中常用的ALSA音频子系统是一致的. ALSA音频框 ...

  9. LINUX音频驱动架构

    https://www.jianshu.com/p/0f5fe8f51b66 简介 LINUX下音频驱动开发,要遵循标准的ALSA架构, 下面分别从硬件架构.软件架构.驱动程序,3个方面分析. 硬件架 ...

  10. linux音频时钟bclk,linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系

    转:https://blog.csdn.net/lugandong/article/details/72468831 一. 拿512fs说话: 看图知道采样的位深是32bit(位),左右声道各占了8* ...

最新文章

  1. CloudCompare基础架构介绍(PPT)
  2. Android开发中应避免的重大错误
  3. Java中intentfiler_【Android - 组件】之IntentFilter的匹配规则
  4. R语言compareGroups包绘制组间趋势(p for trend)实战:基于survival包lung数据集示例
  5. Linux笔记:vim
  6. git将代码提交到多个远程仓库
  7. hdu 3392 Pie
  8. 数据的设计命名的十个要点
  9. 分布式MQ消息存储选择
  10. 单硬盘上mac + win7双系统,GUID-GPT分区
  11. Hadoop伪分布安装配置
  12. [Python] L1-051 打折-PAT团体程序设计天梯赛GPLT
  13. 【李宏毅2020 ML/DL】P115-117 Actor-Critic Sparse Reward Imitation Learning
  14. insert_text
  15. Idea 我的快捷键总结
  16. 教学案例分析 计算机应用,计算机教学案例分析
  17. android中屏幕保护的实现的,Android 屏幕保护程序制做及源码
  18. 使用强化学习评估训练数据,准确量化训练样本
  19. 阿里云MVP精选2018年终盘点:大咖专访+最佳实践,丰富干货等你来!...
  20. Google AppOps

热门文章

  1. 相机标定 matlab opencv ROS三种方法标定步骤(3)
  2. active set + serving cell
  3. Rocksdb 写流程,读流程,WAL文件,MANIFEST文件,ColumnFamily,Memtable,SST文件原理详解
  4. Linux下控制环境变量
  5. python的with语句
  6. javascript数组集锦
  7. 如何用CSS快速布局(一)—— 布局元素详细
  8. Spark Steaming 点滴
  9. Sourse Insight使用教程及常见的问题解决办法
  10. Creating Apps With Material Design —— Defining Custom Animations