linux ALSA 驱动架构
一、kernel Audio驱动架构主流有两大类,一类是SOC Machine架构,另一类是simple-card架构。
MTK、QCom主要采用machine架构,rockchip采用simple card架构。
二、Machine架构驱动介绍
machine 架构每家平台实现并不完全相同,machine driver和platform driver都有平台厂商提供,codec driver无特殊要求,符合ALSA SOC-codec driver标准即可
(1)驱动组成
machine driver:主要负责注册card,并且注册dai-link下的codec(包括cpu dai和codec dai)dai-link一般在C文件中配置
platform driver:即cpu dai的驱动,包括DMA配置和I2S配置
codec driver:即外部codec的驱动,如ak4642、rt5644等
DTSI也分为三个部分:
sound:对应machine driver
i2s:对应platform driver
codec:对应外部codec ic driver
(2)platform driver和codec driver注册流程
两者原理一样,都是通过devm_snd_soc_register_component向SOC Core中注册两个component。
所有注册的component都保存在soc-core.c的component_list中。
(3)Machine driver流程
首先配置dai-link,然后通过devm_snd_soc_register_card 调用snd_soc_register_card注册card并且解析dai-link,
调用snd_soc_card_probe调用platform driver的dai_probe函数
调用soc_probe_link_components最终调用components的 codec probe函数
同时注册codec中的kconctrl和dpam
三、simple架构
(1)驱动组成
simple-card Driver: kernel\sound\soc\generic\simple-card.c ,标准Linux驱动,各平台通用
SOC-I2S Driver:
codec Driver:
DTSI:
大致和machine 架构类似,都分为三个部分,主要差异在simple-card架构DTSI可以配置dai-link和route
如:
rt5640-sound {compatible = "simple-audio-card";simple-audio-card,name = "rockchip,rt5640-codec";simple-audio-card,format = "i2s";simple-audio-card,mclk-fs = <256>;simple-audio-card,widgets ="Microphone", "Mic Jack","Headphone", "Headphone Jack";simple-audio-card,routing ="Mic Jack", "MICBIAS1","IN1P", "Mic Jack","Headphone Jack", "HPOL","Headphone Jack", "HPOR";simple-audio-card,cpu {sound-dai = <&i2s1>;};simple-audio-card,codec {sound-dai = <&rt5640>;};};
各Driver Probe流程和machine相同,都是调用 devm_snd_soc_register_card和devm_snd_soc_register_component两个函数。
以上函数是基于kernel5的,低版本接口类似,只是codec结构体名字变了。
四:其他
DTSI类似simple-card(支持dai-link)的machine driver
kernel\sound\soc\samsung\snow.c
linux ALSA 驱动架构相关推荐
- linux 音频架构绕过,linux音频驱动架构
1.linux音频驱动架构分为3部分组成:硬件无关层(核心层ALSA).板级音频数字接口层驱动(McASP.McBSP等).外部codes驱动 sound/soc/davinci/ti81xx-etv ...
- Linux网络驱动架构
转载来自:https://blog.csdn.net/zhoudengqing/article/details/47406821 转 Linux网络驱动架构 2015年08月10日 22:54:39 ...
- linux I2C驱动架构解析
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...
- Linux MMC驱动架构浅析
Linux MMC驱动架构浅析 MMC驱动模型 Linux内核设计了MMC子系统,用于管理MMC/SD等设备,MMC/SD存储设备是一种典型的块设备.MMC子系统的框架结构如下图所示. 块设备(MMC ...
- Linux ALSA驱动框架(一)--ALSA架构简介--声卡的创建
(1)ALSA简介 (1) Native ALSA Application:tinyplay/tinycap/tinymix,这些用户程序直接调用 alsa 用户库接口来实现放音.录音.控制 ALSA ...
- LINUX音频驱动架构
https://www.jianshu.com/p/0f5fe8f51b66 简介 LINUX下音频驱动开发,要遵循标准的ALSA架构, 下面分别从硬件架构.软件架构.驱动程序,3个方面分析. 硬件架 ...
- Linux 音频设备驱动架构及应用编程
最早出现在Linux上的音频编程接口是OSS(Open Sound System),它由一套完整的内核驱动程序模块组成,可以为绝大多数声卡提供统一的编程接口.OSS出现的历史相对较长,这些内核模块中的 ...
- linux网络驱动架构,Linux网络体系架构和网卡驱动设计
Linux网络体系架构 1.Linux的协议栈层次 2.Linux的网络子系统架构 Linux的协议栈层次 Linux的优点之一在于它丰富而稳定的网络协议栈.其范围从协议无关层(例如通用socket层 ...
- linux驱动架构变化,Linux网卡驱动架构分析
一.网卡驱动架构 由上到下层次依次为:应用程序→系统调用接口→协议无关接口→网络协议栈→设备无关接口→设备驱动. 二.重要数据结构 1.Linux内核中每一个网卡由一个net_device结构来描述. ...
最新文章
- LLVM编译器基础架构与DragonEgg示例
- [iOS]调和 pop 手势导致 AVPlayer 播放卡顿
- 算法 字符串转换为以为数组
- 尝试引用已删除的函数_学Excel函数公式,你必须要掌握这些知识
- Android UI滑动加载源码
- h5页面笔按下默认是拖动_屡屡刷屏的长页面H5原来是这样诞生的
- mfc的WM_PAINT笔记
- 【Elasticsearch】Curator 从入门到实战
- CSS中自适应屏幕分辨率
- MyBatis学习笔记(2)-MyBatis入门
- 第k小元素——分治法
- 基于php046学校固定资产管理系统
- 第十二届蓝桥杯模拟赛Python组(第一期)
- 什么是人工智能(AI)数据平台?
- 类似win7系统泡泡屏保
- 经典网络营销软文成功例子
- Oracle 实用技巧之不知道密码情况下 dblink 的迁移
- arduino 的红外遥控解码
- PyTorch-5 自定义 Datasets, DataLoaders 和 Transforms
- Android7.0 BatteryStatsService
热门文章
- 洛龙区:加快布局大数据产业
- 海南楼市充斥着传说 投机者必将自食其果
- 伦敦国王学院计算机申请要求,2020年伦敦国王学院高级计算机专业研究生申请条件及世界排名|学费介绍...
- 劈开迷雾:蘑菇街搜索架构及搜索排序实践
- android蓝牙配对 自动联接,如何实现android蓝牙开发 自动配对连接,并不弹出提示框...
- SDP最佳实践丨为室内亲子动物园注入新零售基因
- linux进程创建心得体会,Linux系统下计算机C语言编程心得体会
- python 法律检索_Python爬虫进阶必备 | 某裁判文书检索网站加密分析与自动登录实现...
- JavaScript动态加载效果
- 电脑找不到网络许可管理器_许可到网络