Android Q - 音频通路调试

对于当前模块不是很清楚,刚好有个项目这方面有点问题,根据展锐支持文档一步步检查就可以了。首先得先弄清楚硬件具体是怎么连接的,比如文档提到的案例:sprd codec speaker output 连接外部 PA。

耳机接的是什么,speaker接的是什么,receive接的是什么。

本文可能涉及到的文件路径信息参考如下:
 kernel/arch/<arch name>/boot/dts/sprd-sound-xxx.dtsi
 kernel/arch/<arch name>/boot/dts/<board>.dts
 kernel/sound/soc/sprd/sprd-asoc-card-utils.c
 kernel/sound/soc/sprd/sprd-asoc-card-utils-hook.c
 kernel/sound/soc/sprd/sprd-asoc-card-utils-legacy.c
 kernel/sound/soc/sprd/include/sprd-asoc-card-utils.h
 kernel/sound/soc/sprd/include/sprd-asoc-card-utils-legacy.h
 device/sprd/<chip>/<board>/rootdir/system/etc/audio_params/tiny_hw.xml
 device/sprd/<chip>/<board>/rootdir/system/etc/audio_params/codec_pga.xml
 device/sprd/<chip>/<board>/rootdir/system/etc/audio_params/audio_para
 device/sprd/<chip>/<board>/BoardConfig.mk 

这里只做简单记录,详细信息可看展锐提供的文档。

Kernel部分
    sprd-sound-xxx.dtsi 中已配置了 common 配置信息,与 common 有差异的配置在对应板级 DTS 中修改,板级 DTS 配置信息会覆盖 common中的定义。
    1、sprd-audio-card widgets 配置
        不使用外部 PA,需要定义 headphone、speaker、earpiece 三个 widgets。
        使用外部 PA,需要定义一个 widgets 表示一个外部 speaker,该 widgets 的 event 可以控制外部 PA 的开关。
    2、sprd-audio-card routing 配置
    3、sprd spk-ext-pa-info 配置
    4、sprd spk-ext-pa-gpio 配置
    5、sprd spk-ext-pa-names 配置
    
HAL 部分
    1 Xml 文件配置
        .1 Codec 通路配置

                这里记录一下正常情况下的配置文件吧

                speaker->喇叭,headphone->耳机,earpiece->听筒

tiny_hw.xml<device name="speaker"><path name="on"><ctl name="SPKL Mixer DACLSPKL Switch" val="1" /><ctl name="Speaker Function" val="1" /></path><path name="off"><ctl name="Speaker Function" val="0" /><ctl name="SPKL Mixer DACLSPKL Switch" val="0" /></path>
</device><device name="headphone"><path name="on"><ctl name="HPL EAR Sel" val="HPL" /><ctl name="HPL Mixer DACLHPL Switch" val="1" /><ctl name="HPR Mixer DACRHPR Switch" val="1" /><ctl name="HeadPhone Function" val="1" /></path><path name="off"><ctl name="HeadPhone Function" val="0" /><ctl name="HPL Mixer DACLHPL Switch" val="0" /><ctl name="HPR Mixer DACRHPR Switch" val="0" /><ctl name="HPL EAR Sel" val="EAR" /></path>
</device><device name="earpiece"><path name="on"><ctl name="EAR Mixer DACLEAR Switch" val="1"/><ctl name="Earpiece Function" val="1" /></path><path name="off"><ctl name="Earpiece Function" val="0" /><ctl name="EAR Mixer DACLEAR Switch" val="0"/></path>
</device>

        .2 Codec 参数配置
    
    2 Property 属性配置
           
ro.vendor.audio_tunning.dual_spk 属性 含义
ro.vendor.audio_tunning.dual_spk = 0 默认调试模式。
ro.vendor.audio_tunning.dual_spk = 1 双 SPK-HPR+HPL
ro.vendor.audio_tunning.dual_spk = 2 单 SPK-HPL/HPR
ro.vendor.audio_tunning.dual_spk = 3 听筒喇叭二合一。

    3 代码修改

        开启ENABLE_DEVICES_CTL_ON宏开关

最后补充两个方法:
        1、耳机测试AT命令----AT+SPVLOOP
Description:
Audio frequency loopback test
Set command:
AT+ SPVLOOP= <cmd>,<mode>< volume ><loopbacktype><voiceformat>
<delaytime><outdevice><indevice>

Return

OK
Parameter:
<cmd>:
cmd
Description
0 DISABLE
1 EABLE
2 SETMODE
3 SETVOLUME
4 SETDEVICE
<mode>:
Optional mode exists 0-7
0 handhold 1 : handfree 2: earphone
<volume>: the size of volume
<loopbacktype>:
0: AD->DA loop,
1: AD->ul_process->dl_process->DA loop,
2: AD->ul_process->encoder->decoder->dl_process->DA loop
<voiceformat>: (1-3)
1: EFS vocoder
2: HR Vocoder
3: AMR Vocoder
<delaytime>: (0-1000) ms
<outdevice>:
1 ear
2 spk
4 hp
<indevice>
1 mic_0
2 mic_1
4 mic_hp

        

        完整命令:AT+SPVLOOP=1,4,8,2,3,0 

        2、查看当前音频设备状态----tinymix

C:\Users\lichang>adb shell
sl8541e_1h10_32b:/ # tinymix
Mixer name: 'sprdphone'
Number of controls: 135
ctl     type    num     name                                     value

0       ENUM    1       VBC Switch                               AP
1       ENUM    1       VBC INT Switch                           AP
2       ENUM    1       VBC DMA Switch                           AP_AON
3       BOOL    1       VBC DA EQ Switch                         On
4       BOOL    1       VBC AD01 EQ Switch                       Off
5       BOOL    1       VBC AD02 EQ Switch                       Off
6       ENUM    1       VBC EQ FW Name                           vbc_eq
7       ENUM    1       VBC EQ Update                            loaded
8       INT     2       VBC DAC01 MIXERDG                        0 0
9       INT     2       VBC DAC23 MIXERDG                        0 0
10      INT     1       VBC MIXERDG_DA01 STEP                    4096
11      INT     1       VBC MIXERDG_DA23 STEP                    1
12      INT     1       VBC DACL DG Set                          35
13      INT     1       VBC DACR DG Set                          35
14      INT     1       VBC ADCL DG Set                          16
15      INT     1       VBC ADCR DG Set                          16
16      INT     1       VBC ADC23L DG Set                        24
17      INT     1       VBC ADC23R DG Set                        24
18      INT     1       VBC STL DG Set                           24
19      INT     1       VBC STR DG Set                           24
20      BOOL    1       VBC DACL DG Switch                       On
21      BOOL    1       VBC DACR DG Switch                       On
22      BOOL    1       VBC ADCL DG Switch                       On
23      BOOL    1       VBC ADCR DG Switch                       On
24      BOOL    1       VBC ADC23L DG Switch                     Off
25      BOOL    1       VBC ADC23R DG Switch                     Off
26      BOOL    1       VBC STL HPF Switch                       Off
27      BOOL    1       VBC STR HPF Switch                       Off
28      INT     1       VBC STL HPF Set                          3
29      INT     1       VBC STR HPF Set                          3
30      BOOL    1       VBC AD0 DG Mux                           Off
31      BOOL    1       VBC AD1 DG Mux                           Off
32      BOOL    1       VBC AD2 DG Mux                           Off
33      BOOL    1       VBC AD3 DG Mux                           Off
34      ENUM    1       VBC DA IIS Mux                           AUDIIS0
35      INT     1       VBC DA EQ Profile Select                 0
36      INT     1       VBC AD01 EQ Profile Select               -1
37      INT     1       VBC AD23 EQ Profile Select               -1
38      INT     1       VBC_DA_SRC                               0
39      BOOL    1       VBC_FM_MUTE_DIRECT                       Off
40      BOOL    1       VBC_FM_UNMUTE_SMOOTH                     Off
41      INT     1       VBC FM_MUTE_SMOOTHDG STEP                1
42      BOOL    1       VBC_IIS_WIDTH_SEL                        Off
43      BOOL    1       VBC_DA_IIS_LRMOD_SEL                     Off
44      BOOL    1       VBC_AD01_IIS_LRMOD_SEL                   Off
45      BOOL    1       VBC_AD23_IIS_LRMOD_SEL                   Off
46      ENUM    1       SYS_IIS0                                 ap_iis0
47      ENUM    1       SYS_IIS1                                 vbc_iis1
48      ENUM    1       SYS_IIS2                                 vbc_iis1
49      ENUM    1       SYS_IIS3                                 vbc_iis1
50      ENUM    1       SYS_IIS4                                 vbc_iis1
51      BOOL    1       IIS_BT_FM_LOOP                           Off
52      BOOL    1       vbc_access_en                            Off
53      ENUM    1       VBC DAC0 Mixer Mux Sel                   by eq
54      ENUM    1       VBC DAC1 Mixer Mux Sel                   by eq
55      ENUM    1       VBC ST0 Mixer Mux Sel                    by eq
56      ENUM    1       VBC ST1 Mixer Mux Sel                    by eq
57      ENUM    1       VBC DAC0 Mixer Out Sel                   by eq
58      ENUM    1       VBC DAC1 Mixer Out Sel                   by eq
59      ENUM    1       VBC ST0 Mixer Out Sel                    by eq
60      ENUM    1       VBC ST1 Mixer Out Sel                    by eq
61      INT     1       SPKL Playback Volume                     3
62      INT     1       HPL Playback Volume                      1
63      INT     1       HPR Playback Volume                      7
64      INT     1       EAR Playback Volume                      6
65      INT     1       ADCL Capture Volume                      6
66      INT     1       ADCR Capture Volume                      6
67      INT     1       DAC Playback Volume                      2
68      INT     1       Inter PA Config                          2
69      BOOL    1       DACL Switch                              On
70      BOOL    1       DACR Switch                              On
71      BOOL    1       MIC Bias Switch                          Off
72      BOOL    1       HEADMIC Bias Switch                      Off
73      BOOL    1       DACLSPKL Enable                          On
74      BOOL    1       DACRSPKL Enable                          On
75      ENUM    1       Aud Codec Info                           (null)
76      ENUM    1       DAC LRCLK Select                         normal
77      ENUM    1       ADC LRCLK Select                         normal
78      ENUM    1       ADC1 LRCLK Select                        normal
79      ENUM    1       DAS Input Mux                            L+R
80      INT     1       PCM_TOTAL_NORMAL                         0
81      INT     1       PCM_TOTAL_DEEPBUF                        0
82      BOOL    1       Speaker Function                         Off
83      BOOL    1       Speaker1 Function                        Off
84      BOOL    1       Earpiece Function                        Off
85      BOOL    1       HeadPhone Function                       On
86      BOOL    1       Line Function                            Off
87      BOOL    1       Mic Function                             Off
88      BOOL    1       Aux Mic Function                         On
89      BOOL    1       HP Mic Function                          Off
90      BOOL    1       DMic Function                            Off
91      BOOL    1       DMic1 Function                           Off
92      BOOL    1       Digital FM Function                      Off
93      BOOL    1       Speaker Mute                             Off
94      BOOL    1       Speaker2 Mute                            Off
95      BOOL    1       HeadPhone Mute                           Off
96      BOOL    1       Earpiece Mute                            Off
97      ENUM    1       SmartAmp Boost                           Bypass
98      ENUM    1       ST0 CHAN MUX                             AD01
99      ENUM    1       ST1 CHAN MUX                             AD01
100     ENUM    1       ST0 INMUX                                AD0(2)ST0
101     ENUM    1       ST1 INMUX                                AD1(3)ST1
102     ENUM    1       AD0 INMUX                                IIS0AD0
103     ENUM    1       AD1 INMUX                                IIS1AD1
104     ENUM    1       AD2 INMUX                                IIS2AD2
105     ENUM    1       AD3 INMUX                                IIS3AD3
106     ENUM    1       AD IISMUX                                DIGFM
107     ENUM    1       AD23 IISMUX                              AUDIIS1
108     ENUM    1       DA0 ADDFM MUX                            BYPASS(ST)
109     ENUM    1       DA1 ADDFM MUX                            BYPASS(ST)
110     ENUM    1       DA0 ADDST MUX                            BYPASS(ST)
111     ENUM    1       DA1 ADDST MUX                            BYPASS(ST)
112     BOOL    1       Aud Loop in VBC Switch                   Off
113     BOOL    1       Aud1 Loop in VBC Switch                  Off
114     ENUM    1       HPL EAR Sel                              EAR
115     BOOL    1       HPL Mixer DACLHPL Switch                 Off
116     BOOL    1       HPR Mixer DACRHPR Switch                 Off
117     BOOL    1       SPKL Mixer DACLSPKL Switch               On
118     BOOL    1       SPKL Mixer ADCLSPKL Switch               Off
119     BOOL    1       SPKL Mixer ADCRSPKL Switch               Off
120     BOOL    1       SPKR Mixer ADCLSPKR Switch               Off
121     BOOL    1       SPKR Mixer ADCRSPKR Switch               Off
122     BOOL    1       EAR Mixer DACLEAR Switch                 Off
123     BOOL    1       ADCL Mixer MainMICADCL Switch            Off
124     BOOL    1       ADCL Mixer AuxMICADCL Switch             Off
125     BOOL    1       ADCL Mixer HPMICADCL Switch              On
126     BOOL    1       ADCR Mixer MainMICADCR Switch            Off
127     BOOL    1       ADCR Mixer AuxMICADCR Switch             Off
128     BOOL    1       ADCR Mixer HPMICADCR Switch              On
129     BOOL    1       ADC-DAC Adie Loop switch                 Off
130     BOOL    1       ADC1-DAC Adie Loop switch                Off
131     BOOL    1       ADC-DAC Digital Loop switch              Off
132     BOOL    1       ADC1-DAC Digital Loop switch             Off
133     BOOL    1       Virt Output Switch                       On
134     BOOL    1       Virt HP Jack Switch                      Off

或者 

 针对某一条通路开关手动开关或者读取状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++关键字:extern

文章目录 一、extern&#xff1a;声明外部变量或外部函数1.extern的作用2.代码举例①例1②例2③例3 一、extern&#xff1a;声明外部变量或外部函数 1.extern的作用 extern的作用&#xff1a;声明外部的全局变量或外部的函数&#xff0c;以实现跨文件使用其他.c/.h文件的全局…

【Vue】vue项目中使用高德地图教程

在Vue项目中显示高德地图&#xff0c;你需要按照以下步骤进行 1. 注册高德开发者账号并获取API密钥2. 在Vue项目中引入高德地图API3. 在Vue组件中创建地图容器4. 在Vue组件中初始化地图5. 添加其他地图组件&#xff08;可选&#xff09;6. 处理地图事件&#xff08;可选&#x…

[链表专题]力扣82

1. 力扣82 : 删除排序链表中的重复元素 题 : 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。示例 1&#xff1a;输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5] 示例 …

【YOLO改进】换遍MMDET主干网络之Pyramid Vision Transformer(PVT)(基于MMYOLO)

Pyramid Vision Transformer&#xff08;PVT&#xff09; Pyramid Vision Transformer&#xff08;PVT&#xff09;是一种深度学习模型&#xff0c;它结合了Transformer架构和金字塔结构&#xff0c;旨在将Transformer的强大能力引入计算机视觉任务中&#xff0c;特别是那些需…

如何深入理解业务需求和业务流程?

要深入理解业务需求和业务流程&#xff0c;可以尝试以下方法&#xff1a; 1. 积极参与需求讨论&#xff1a;在相关会议中认真聆听&#xff0c;提出问题&#xff0c;与业务人员充分交流。 2. 研读业务文档&#xff1a;仔细分析业务规划、产品说明等文档&#xff0c;梳理出关键…

SQL练习题2.1

建表 # 学生表 create table t_student (stu_id varchar(10),stu_name varchar(10),stu_age datetime,stu_sex varchar(10) );# 课程表 create table t_t_course (c_id varchar(10),c_name varchar(10),c_teaid varchar(10) );# 教师表 create table t_t_teacher (tea…

C语言中数组与指针的区别

一. 简介 本文学习了 C语言中数组与指针的区别。这样的话&#xff0c;可以在编写C代码时规避掉出错的问题。 二. C语言中数组与指针的区别 1. 数组 定义字符串数组时&#xff0c;必须让编译器知道需要多少空间。 一种方法是用足够空间的数组存储字符串。例如如下&#xf…

DOM重点核心(注册事件+DOM事件流)

目录 1.注册事件 注册时间概述 addEventListener() 删除事件 2.DOM事件流 DOM事件流理论 事件对象 事件对象的常见属性和方法 e.targe 和 this的区别 阻止默认行为 阻止冒泡 事件委托 禁止右键菜单和禁止选中文字 获得鼠标的坐标&#xff08;可视区、页面、浏览器…

js原生弹框多选框

js原生弹框多选框 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>JavaS…

golang适配国产数据库

随着国产化的推进&#xff0c;越来越多的企业选择国产数据库替代mysql或者Oracle。 本篇主要介绍golang如何适配国产数据库 主流的国产数据库有达梦&#xff0c;金仓&#xff0c;神通&#xff0c;优炫&#xff0c;南大通用数据库等 前提环境 unixODBC安装 yum -y install un…

【深度学习实战(36)】模型转换之onnx模型转地平线J3 二进制bin模型

一、PTQ量化流程 &#xff08;1&#xff09; 核查onnx模型 &#xff08;2&#xff09;准备和生成模型校准数据集 &#xff08;3&#xff09;PTQ量化 &#xff08;4&#xff09;量化模型推理 二、具体流程 &#xff08;1&#xff09;使用01_check_onnx.sh脚本&#xff0c;对o…

Spring6 源码分析-ioc

&#xff08;1&#xff09;IDEA开发工具&#xff1a;2022.1.2 &#xff08;2&#xff09;JDK&#xff1a;Java17&#xff08;Spring6要求JDK最低版本是Java17&#xff09; &#xff08;3&#xff09;Spring&#xff1a;6.0.2 <dependencies><!--spring context依赖…

【教程】Linux/Jetson 安装X11VNC同步屏幕内容

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;请不吝给个[点赞、收藏、关注]哦~ 目录 背景说明 实际效果 安装步骤 安装 x11vnc 配置 x11vnc 配置 x11vnc 作为系统服务 使用 VNC 客户端连接 背景说明 通常vnc-server是单…

分享一个非常好用的安装包下载网站

当我们需要下载linux下的某些包,以便在自己的环境下进行编译自己的安装包的时候,可能需要用到一些各种版本的依赖包,从网上 百度会很麻烦。 这里分享一个很好用的安装包下载网站,记得点赞收藏 网站: Red Hat Enterprise Linux Repositories - pkgs.org 找到对应系统,然…

深入理解K8S【安全认证机制kubectlconfig】

深入理解K8S【安全认证机制】 1 核心概念 1.1 安全体系 对于大型系统来说&#xff0c;对业务的权限、网络的安全认证是必不可少的。 对于linux系统来说&#xff0c;用户和组、文件权限、SELinux、防火墙、pam、sudo等&#xff0c;究其核心的目的都是为了保证系统是安全的。 …

golang 中在for循环体内使用select case <-time.After定时器问题

在go语言的代码中&#xff0c;我们经常会看到在在for循环体内使用select case <-time.After 的类似语句&#xff0c; 其实这个地方不管你是用 time.After(2 * time.Second) 还是 time.NewTicker(2 * time.Second) 的方式&#xff0c;如果放到for循环体内select case 则这个c…

【element-plus】自动导入 + typescript 提示 + 自定义主题色

1、自动导入 2、引用加载组件类型提示 第一步&#xff1a;安装自动导入功能所需的插件 npm install -D unplugin-vue-components unplugin-auto-import 第二步&#xff1a; vite版&#xff1a; // vite.config.ts import { defineConfig } from vite import AutoImport fr…

四天学会JS高阶(学好vue的关键)——作用域解构箭头函数(理论+实战)(第一天)

一、作用域 提到作用域&#xff08;作用域又分为局部作用域和全局作用域&#xff09;&#xff0c;就要想到变量。因为作用域规定了变量能够被访问的范围&#xff08;也就是作用域是为变量而服务的&#xff09;&#xff0c;为了避免全局变量污染这一情况&#xff0c;所以需要使…

如何排查域名网站无法访问了页面报500错误

本周有一个客户&#xff0c;购买Hostease的虚拟主机&#xff0c;询问我们的在线客服&#xff0c;域名网站无法访问了报500错误页面&#xff0c;怎么办&#xff1f;我们为用户提供相关教程&#xff0c;用户很快解决了遇到的问题。在此&#xff0c;我们分享这个操作教程&#xff…

bugfix:遇见“隐形字符”:ⅰ与i的编码迷局

前言 在软件开发的世界里&#xff0c;遇到各种奇奇怪怪的bug是在所难免的。今天&#xff0c;我就遭遇了一个看似简单实则棘手的问题——用户反馈账号无法登录&#xff0c;系统一直提示“账号不存在”。一番抽丝剥茧后&#xff0c;我发现问题竟然出在一个不起眼的字符上&#x…