![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Qualcomm Audio
文章平均质量分 67
由于外部codec一直挂载不上,所以没有声卡。
1byte ≠ 8bit
大家好,我是黑客,我本来想盗这个哥们的账号的。但是我看这老哥平时就是乐于分享,积极进取,尊老爱幼,与人为善,关键还长的帅,不禁泪水就模糊了双眼。真的,希望大家多多鼓励他,支持他,没事给他支付宝转点钱,激发他的创作热情,让世界充满爱。
展开
-
[Linux Audio Driver] 高通平台MI2S总线配置
0. 背景hardware platform:骁龙865android version:android10Linux kernel version:msm-4.19思维导图如下:1. 遇到的一点坑由于我没有拿到这个平台的MI2S高通配置文档,所以遇到了一点坑,同步也分享。这个平台目前还没有具体codec器件的调试需求,但是我想验证下接口,于是找硬件,告诉我可以配置MI2S1,对应上面几个GPIO,然后我寻思,默认pri_mi2s应该是MI2S0,这个MI2S1不就应该是配置sec_mi2s原创 2022-03-02 18:50:08 · 17180 阅读 · 13 评论 -
cool edit pro生成2.7khz_0dB音源方法
1. 新建文件相关参数配置选择:48Khz、单声道、16位。2. 改变频率注意基础频率调整为2700hz,调制频率调整位0Hz,音量dB选择为0dB,其他选择默认。点确认之后,生成的波形如下所示,生成好了另存为就可以了。...原创 2021-11-18 14:05:43 · 2911 阅读 · 1 评论 -
[Linux Audio Driver] ADSP分析网络造成通话数据丢失方法
0. 背景有时候通话会出现丢失数据的情况,而且这种问题往往和网络制式有关系,比如移动卡没问题,联通有问题,根本原因是射频器件或者modem相关的配置不良,这个其实有办法分析和软件(audio software)或者硬件参数(audio tuning)无关。1. 抓取log需要找一个哥们配合抓log,两边通话接通(近端一个人说话,远端另一个人接听),同时抓取音频的QXDM log,抓完之后使用高通QCAT工具解析log。两份QXDM log整合到一起,重点是取出near,近端0x1804 log点(就原创 2021-08-03 20:38:47 · 1110 阅读 · 3 评论 -
[Linux Audio Driver] Solve line-out output is unstable
Recently I experience some thing and want to improve my English, so i will try to use English to write the new document completely.0. backgroundOK, let’s go straight to the topic. We will found the line-out output singal is not stable, while原创 2021-05-13 18:02:26 · 786 阅读 · 5 评论 -
[Linux Audio Driver] 高通TDM总线配置
0. 背景TDM接口与平台SOC相关,调试前需要确定平台支持TDM,目前一些中高端的平台都支持的。(转载请备注链接)本文介绍配置: SEN_TDM_TX_0。1. tinymix查看当前虚拟总线配置adb shell tinymix > tinymix_source.txtRX_CDC_DMA_RX_0这个虚拟总线是一直用的,这个显然存在,然后检索TDM。Line 248: 243 BOOL 1 RX_CDC_DMA_RX_0_DL_HL Switch Off原创 2021-02-20 20:51:04 · 6705 阅读 · 13 评论 -
[Linux Audio Driver] 高通音频相关汇总(持续更新)
0. 背景之前写了一些音频的博客,但是比较散乱,就想着汇总下写的博客,也是对自己知识结构的梳理,这个会持续更新。1. 代码分析&总结I2S相关介绍ACDB文件加载流程(一)ACDB文件加载流程(二)ACDB文件加载流程(完结篇)高通平台内部MIC_BIAS简介从设备地址理解Android7 外部PA Speaker代码结构MSM8953音频部分设备树调用关系开启音频kernel内核debug功能声卡与XML匹配流程SDM660平台内部CODEC tinyalsa命令总结S原创 2021-02-20 13:01:26 · 3771 阅读 · 3 评论 -
[Linux Audio Driver] 移植外部CODEC常见编译报错解决(持续更新)
0. 背景最近一直在调试codec芯片,好多代码FAE给的和平台不适配,比如结构体改了之类的,一些编译问题老是忘记,就想着顺手写下总结。1. function definition is not allowed hereerror: function definition is not allowed here好家伙,它说函数不能够在这里定义。网上看了一下,这个报错的原因是在函数原型里面又定义了一个函数,回头看下函数报错的位置,这里for循环的括号丢了一个,添上即可。(其他还有类似报错,但原创 2021-02-03 20:09:49 · 6817 阅读 · 8 评论 -
[Linux Audio Driver] Android 10 machine driver probe函数分析
0. 背景平台:Qualcomm 5G SM6350、android10、kernel version: msm-4.19。本文重点分析machine driver里面的msm_asoc_machine_probe函数,这个是machie驱动的核心代码,涉及声卡解析注册,CPU dai和codec dai绑定,麦克偏置解析配置routing、耳机麦克检测(欧-美标兼容)、MI2S主、从模式配置,以及新增的LPASS音频投票机制。此外,msm_asoc_machine_probe函数也可以说就干了一件原创 2020-12-18 20:54:47 · 3183 阅读 · 13 评论 -
[Linux Audio Driver] 高通平台麦克偏置电压取值范围
以SDM660平台为例,代码位置:vendor/qcom/opensource/audio-kernel/asoc/codecs/sdm660_cdc/msm-analog-cdc.c#define MICBIAS_DEFAULT_VAL 1800000 //这里可以修改麦克的偏置电压参考高通寄存器文档,打开之后检索micbias,之后检索0x0001F141 CDC_A_MICB_1_VAL这个寄存器介绍,会发现取值范围是:1.6-2.85V,相邻间隔0.05V...原创 2020-12-18 14:53:55 · 1103 阅读 · 0 评论 -
[Linux Audio Driver] line-out强制配置成headset
0. 背景平台: android 7、 MSM8953、kernel version: msm-3.18别问为啥要改这个,问就是硬件的坑mmp。1. 修改方法文件路径: kernel/msm-3.18/sound/soc/codecs/wcd-mbhc-v2.c@@ -816,6 +816,10 @@ static void wcd_mbhc_find_plug_and_report(struct wcd_mbhc *mbhc, __func__, mbhc->current_p原创 2020-10-15 17:49:12 · 556 阅读 · 0 评论 -
[Linux Audio Driver] SM6350 平台外部CODEC WCD9370 tinyalsa 命令总结
1. 听筒tinymix “RX_CDC_DMA_RX_0 Audio Mixer MultiMedia1” “1”tinymix “RX_MACRO RX0 MUX” “AIF1_PB”tinymix “RX_CDC_DMA_RX_0 Channels” “One”tinymix “RX INT0_1 MIX1 INP0” “RX0”tinymix “RX_RX0 Digital Volume” “100”tinymix “RX INT0 DEM MUX” “CLSH_DSM_OUT”tin原创 2020-10-15 16:56:29 · 2321 阅读 · 0 评论 -
[Linux Audio Driver] SDM660平台内部CODEC tinyalsa命令总结
1. 单MIC(主MIC)通过adb端口执行以下指令adb root && adb remountadb shelltinymix "MultiMedia1 Mixer INT3_MI2S_TX" "1"tinymix "INT3_MI2S_TX Channels" "One"tinymix "ADC1 Volume" "6"tinymix "DEC1 MUX" "ADC1"tinymix "ADC1_INP1 Switch" "1"tinycap /data/input原创 2020-10-19 17:09:41 · 1111 阅读 · 0 评论 -
[Linux Audio Driver] SM6350平台音频bring up ( 一 )
0. 背景这个是高通5G平台,音频的内容改的比较多,比较直接的是platform.c就直接移动到vendor了;目前高通那边的趋势还是把音频逐渐把vendor剥离,android 7/android 8的时候,machine driver,codec driver都在kernel;android 9、android 10之后machine driver,codec driver都移动到了vendor;到这个5G平台的时候,platform.c以及XML都移到vendor里面去了。 最近准备写几篇从零开原创 2020-09-21 21:07:44 · 3402 阅读 · 8 评论 -
[Linux Audio Driver] 声卡与XML匹配流程
0. usecaseusecase只是qcom内部定义的一个数据结构,位于hal层,用作处理处理内部声卡逻辑和输出方案。代码路径: LA.UM.5.6\hardware\qcom\audio\hal\audio_hw.h/* These are the supported use cases by the hardware. * Each usecase is mapped to a specific PCM device. * Refer to pcm_device_table[]. */e原创 2020-09-09 18:05:06 · 1420 阅读 · 6 评论 -
[Linux Audio Driver] 开启音频kernel内核debug功能
adb shellecho -n "file msm-pcm-q6-v2.c +p" > /sys/kernel/debug/dynamic_debug/controlecho -n "file msm-dai-q6-v2.c +p" > /sys/kernel/debug/dynamic_debug/controlecho -n "file soc-dapm.c +p" > /sys/kernel/debug/dynamic_debug/controlecho -n "file原创 2020-09-09 14:49:11 · 1025 阅读 · 2 评论 -
[Linux Audio Driver] MSM8953音频部分设备树调用关系
这个是以前实习的时候画的图,调用关系是后面的覆盖前面的,右边的覆盖左边的。(此图为例-第二个加载的会覆盖第一个加载的)如上图,一般我习惯使用msm8953-audio.dtsi原创 2020-09-09 10:25:40 · 989 阅读 · 1 评论 -
[Linux Audio Driver] Android7 外部PA Speaker代码结构
0. 背景平台:MSM8953、Android7、kernel versio msm-3.18。1. enable_spk_ext_pa代码路径:LA.UM.5.6\kernel\msm-3.18\sound\soc\msm\msm8952.c然后我们在SI里面检索enable,然后用F4跳转几下,就找到这个函数了。static int enable_spk_ext_pa(struct snd_soc_codec *codec, int enable){ struct snd_soc_card原创 2020-09-08 16:29:36 · 1493 阅读 · 1 评论 -
[Linux Audio Driver] Audio Frequency Unprocessed Test Fail
GMS测试项:Audio Frequency Unprocessed Test,fail重要修改, patch如下:diff --git a/hardware/qcom/audio/configs/msm8953/mixer_paths_qrd_sku3.xml b/hardware/qcom/audio/configs/msm8953/mixer_paths_qrd_sku3.xmlindex 4336237..de0fc3b 100755--- a/hardware/qcom/audio/con原创 2020-09-04 18:01:30 · 769 阅读 · 0 评论 -
[Linux Audio Driver] SDM660平台内部PA Boost功能关闭
0. 背景平台: android_9\LA.UM.7.2.r1\ ,SDM660LA.UM.7.2.r1\kernel\msm-4.4\sound\soc\codecs\sdm660_cdc\msm-analog-cdc.c高通代码默认打开了Boost模式,这玩意会影响功耗,如下:static const DECLARE_TLV_DB_SCALE(analog_gain, 0, 25, 1);static struct snd_soc_dai_driver msm_anlg_cdc_i2s_da原创 2020-05-30 15:55:20 · 1159 阅读 · 0 评论 -
[Linux Audio Driver] QACT音效处理
随便写篇音频tuning的文档,这是前年实习的时候写的,恍如昨日。1.概述QACT(Qualcomm Audio Calibration Tool),高通音频处理工具,本文会介绍常见的acdb设备id以及以喇叭和麦克为例,介绍QACT中常见的音效处理模块。2.常见acdb设备id介绍2.1新增音频设备若要新增一个音频设备的话,首先在hardware/qcom/audio/hal/msm8916/platform.h里面的enum里面增加一个枚举常量,然后在hardware/qcom/audio/h原创 2020-05-22 20:20:47 · 4441 阅读 · 1 评论 -
[Linux Audio Driver] Qualcomm平台单双麦的fluence属性意义
Android7对应配置如下:ro.qc.sdk.audio.fluencetype=fluence 双麦属性;修改为none则全部为单麦属性//以下可分别修改,true为双麦,false为单麦persist.audio.fluence.voicecall=true 听筒通话persist.audio.fluence.voicerec=false 通话录音persist.audio.fluence.audiorec=true 录音机原创 2020-05-21 11:03:58 · 1379 阅读 · 0 评论 -
[Linux Audio Driver] 小技巧找到设备里面acdb文件位置
先按照我下面操作一波C:\Users\Administrator>adb shellRS51NoGMS:/ # ps -A | grep audiops -A | grep audioroot 357 2 0 0 rescuer_thread 0 S [soc:audio_etm0]audioserver 551 1 36972 10744 binder_thread_read e99150a4 S a.原创 2020-05-14 20:30:08 · 894 阅读 · 0 评论 -
[Linux Audio Driver] ACDB文件加载流程(完结篇)
0 背景之前两篇文章提到,拿到声卡名字以及在platform.c里面通过dlsym的方式,加载acdb_loader_init_v2函数, 今天继续分析;代码路径:LA.UM.5.6\vendor\qcom\proprietary\mm-audio\audio-acdb-util\acdb-loader\src\family-b\acdb-loader.cint acdb_loader_...原创 2020-05-01 21:44:43 · 6928 阅读 · 7 评论 -
[Linux Audio Driver] PDM CLOCK导致的耳机右声道POP音问题
0. 背景此问题现象是,当音乐播放器里面有两首歌时,正在播放一首,然后双击耳机的中间按键会出现POP音;这里会发现,直接在界面上切歌,是不会有这样的问题的;(注:如此时音乐的名字mute1,我使用两个静音文件来做测试以排除音源本身的问题)这是由于,直接用界面切歌,会默认触发提示音,进入设置里面,把所有的提示音都关闭,此问题即可通过在音乐播放器界面切歌复现;以下开始debug.1. 软件修...原创 2020-04-29 17:33:58 · 1012 阅读 · 1 评论 -
[Linux Audio Driver] am命令启动第三方音频APK方法
背景: 我们有时会遇到这样的问题,使用客户的版本的时候,由于launcher被客制化,我们安装一些第三方APK的时候,根本使用不了。比如,如上图所示,我安装了一个华为音乐播放器(网上找的);然后用total control打开客户的桌面,傻眼了,根本没办法进入我的第三方APK.以下开始骚操作:1. 下载解析工具先从网上下一个apk分析工具: aapt.exe2. 获取这个华为音...原创 2020-04-13 10:23:33 · 1007 阅读 · 0 评论 -
[Linux Audio Driver] 如何在shell里面手动控制gpio
有时候,我们可以通过手动控制gpio方法来做些测试,比如有些gpio控制的PA,我们可以通过这种方法快速分析问题;命令如下:adb shellcd sys/class/gpioecho 96 > exportcd gpio96cat valueecho out > directionecho 1 > valuecat value备注:...原创 2020-03-24 17:25:14 · 715 阅读 · 0 评论 -
[Linux Audio Driver] 从设备地址理解
背景: 以前调试了一个音频codec芯片es7543,当时在想这个codec_name如何配置;网上看了些调试codec的心得文档,有的博主瞎写,以这个es7243e.5-0010为例,说es7243e-5这个5的意识是i2c的地址减1. 它这样理解应该是把i2c的地址配错了;1. 正确的理解首先要说的是,当你调试的codec芯片挂载OK之后,进入shellcat /d/asoc/...原创 2020-03-23 11:38:47 · 1362 阅读 · 0 评论 -
[Linux Audio Driver] ACDB文件加载流程(二)
1.概述上篇文章,我们通过分析snd_card_name = mixer_get_name(adev->mixer);这句代码,我们拿到了声卡名字,详情见以下超链接:ACDB文件加载流程(一)然后今天接着分析void *platform_init(struct audio_device *adev)函数,探讨acdb是如何被加载的,其代码路径是:hardware\qcom\audi...原创 2020-03-13 17:27:04 · 2419 阅读 · 4 评论 -
[Linux Audio Driver] 音频POP音问题归纳总结
1. 板级电容/电感发声情况就是你设备开机之后,啥也没干,然后听到呲啦刺啦的声音,这种情况我遇到过一次,这个是不合理的结构设计或者走线导致的,硬件实力挖坑,需要改版解决。2.播放声音长时间有杂音这个锅我们送给硬件,这个是芯片之间有干扰;需要硬件检查个别芯片的地是不是干净的。3. 插拔USB出现POP音还是需要硬件背锅,相关电路加磁珠有可能优化此问题.4. 播放声音的瞬间有POP...原创 2020-03-02 20:55:08 · 1964 阅读 · 6 评论 -
[Linux Audio Driver] Qualcomm平台音频GMS认证器件要求
从GMS测试常见的fail项来明确其器件要求,常见的fail测试项主要是以下三个;后面是分析,要看结论的话直接拉到文末;一:Audio Frequency Speaker Test此测试使用外部 USB 参照麦克风抓取的信号来评估左侧(和右侧,如果存在)扬声器的频率响应。参照麦克风是指频响平缓、自然的麦克风,它们通常用于分析和测量设备;我接触的第三方音频GMS认证公司推荐使用:Dayt...原创 2020-03-02 19:40:42 · 1470 阅读 · 3 评论 -
[Linux Audio Driver] 高通平台内部MIC_BIAS简介
1. 问题背景今天一个学长,问我这个这个修改几个意思,我为啥要改这个;我随口就说,两个都是关闭主、副麦克内部供电,因为是MEMS麦克(硅麦),如果是驻极体麦克的话,就要打开这个两个偏置,分别写(codec,micb_int_reg,0x80,0x80);(codec,micb_int_reg,0x02,0x02);然后学长问是MIC_BIAS,我说应该是吧…(有点没底气…),我给他截了...原创 2020-01-09 20:41:19 · 8336 阅读 · 16 评论 -
[Linux Audio Driver] ACDB文件加载流程(一)
声卡信息是acdb加载中最重要的信息,本文追踪代码,解释声卡名如何被取出来使用的;环境: Qualcomm平台,android7 , 内核版本:msm-3.181. platform_init函数代码路径:hardware/qcom/audio/hal/msm8916/platform.cvoid *platform_init(struct audio_device *adev)...原创 2020-01-08 22:57:12 · 4557 阅读 · 0 评论 -
[Linux Audio Driver] I2S相关介绍
1.概述对于音频来说,常见的数据流总线就是I2S了,当然还有PCM总线,以及高通把I2S和PCM封装成的PDM数据总线,本文主要进行I2S相关的术语介绍。2.I2S构成I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,它一般有四根线:SCK、WS、Rx、Tx .SCK:串行时钟,也叫位时钟WS:帧时钟,同步信号(左、右声道)...原创 2019-04-13 22:07:47 · 3221 阅读 · 1 评论