Linux ALSA 之十一:ALSA ASOC Path 完整路径追踪

news/2025/2/3 7:08:40/

ALSA ASOC Path 完整路径追踪

  • 一、ASoc Path 简介
  • 二、ASoc Path 完整路径
    • 2.1 tinymix 设置
    • 2.2 完整路径 route


一、ASoc Path 简介

如前面小节所描述,ASoc 中 Machine Driver 是 platform driver 和 codec driver 的粘合剂,audio path 离不开 FE/BE/DAI link,那它们是怎么串起来的呢?此时则需要根据 snd_soc_dapm_route 中的定义对完整路径涉及的 kcontrol 进行设置,即用 tinymix 去打开 audio path.

二、ASoc Path 完整路径

# Note:下面均以 mt2701 & wm8960 为例进行讲解

2.1 tinymix 设置

首先来一张 FE/BE/DAI link 在 ASoc path 中的位置图
在这里插入图片描述
其中根据 mt2701 & wm8960 定义 route 所画的路径图如下:
在这里插入图片描述

通过 tinymix 打开 audio path 时,需要敲如下 cmd:

wm8960-playback:tinymix 'O15 I12 Switch' 1tinymix 'O16 I13 Switch' 1tinymix 'PCM Playback Switch' 1adb shell tinyplay /sdcard/48k_2ch_test.wav -D 0 -d 0

2.2 完整路径 route

首先 Platform FE Driver 如下:
在这里插入图片描述
找到其对应的 dapm route,
在这里插入图片描述
可见 DL1->I12/I13->O15/O16->I2S0 Playback,其中红色部分表示有相应的 kcontrol,即需要 switch 打开,所以 tinymix 要敲入如下 cmd:

tinymix 'O15 I12 Switch' 1
tinymix 'O16 I13 Switch' 1

接下来 I2S0 Playback 对应的 Platform 的 BE dai_driver:
在这里插入图片描述
由于 Platform BE 后面需要连接 Codec Dai,它需要经过 Machine 的 dai link 连接,如下:
在这里插入图片描述
可见连接到的 Codec Dai 是 wm8960-hifi dai driver,
在这里插入图片描述
在这里插入图片描述
查看 Codec Driver 对应的 dapm route:
在这里插入图片描述
可见 Codec 这边的 path 为:
Left/Right DAC->Left/Right Output Mixer->L/ROUT1 PGA->HP_L/R
Left/Right DAC->Left/Right Output Mixer->Left/Right Speaker
PGA->Left/Right Speaker Output->SPK_LN/P、SPK_RN/P
其中红色部分需要 switch 打开,所以 tinymix 要敲入如下 cmd:

tinymix 'PCM Playback Switch' 1

至此,整个完整的 ASoc Path 路径追踪完成。


http://www.ppmy.cn/news/24473.html

相关文章

Redis集群搭建(主从、哨兵、分片)

1.单机安装Redis 首先需要安装Redis所需要的依赖: yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录: 例如,我放到了/tmp目录: 解压缩: tar -xzf redis-6.2.4.tar.gz解压后&#xff1…

c#数据结构-多维数组

多维数组使用多个参数的索引器进行访问。 且每个参数的范围不会随着其他参数改变。 可以很好的作为图像像素这种方方正正的东西的容器。 声明 多维数组的声明,相较于普通数组,区别在于在中括号加逗号分隔。 声明类型仅添加逗号,赋值时的构建…

电子技术——BJT差分输入对

电子技术——BJT差分输入对 本节我们来讨论BJT差分输入对。 共模输入 下图是BJT差分输入对的基本原理图: 首先我们考虑两端输入共模信号 VCMV_{CM}VCM​ : 此时 vB1vB2VCMv_{B1} v_{B2} V_{CM}vB1​vB2​VCM​ 因为电路的对称结构,所以 i…

React Hooks之useState详解

1. 什么是Hooks? React官方简介:Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 本文中讲解的useState就是React中的其中一个Hook。 2. useState useState 通过在函数组件里调用它来满足给组件添…

算法训练——剑指offer(Hash集合问题)

摘要 数据结构中有一个用于存储重要的数据结构,它们就是HashMap,HasSet,它典型特征就是存储key:value键值对。在查询制定的key的时候查询效率最高O(1)。Hashmap,HasSet的底层结构是如图所示。它们的区别就是是否存在重复的元素。 二、HashMa…

1.8 正则表达式

正则表示式是用来匹配与查找字符串的,从网上爬取数据不可避免的会用到正则表达式。 Python 的表达式要先引入 re 模块,正则表达式以 r 引导。Re库主要功能函数函数说明re.search()在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象…

【Day6】合并两个排序链表与合并k个已排序的链表,java代码实现

前言: 大家好,我是良辰丫🚀🚀🚀,今天与大家一起做两道牛客网的链表题,好久写关于链表题的博客了,这两道题可以帮大家巩固一下链表知识,我把两道题的链接放到下面&#xf…

MMSeg无法使用单类自定义数据集训练

文章首发及后续更新:https://mwhls.top/4423.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 摘要:将三通道图像转为一通道图像,…