[Linux Audio Driver] Solve line-out output is unstable

[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函数也可以说就干了一件 阅读详情

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. background

OK, let’s go straight to the topic. We will found the line-out output singal is not stable, while the hardware engineer test the speaker power.

The problem is confused and unbelievable.

在这里插入图片描述

1. Solution

The key problem that causes this problem is the HW delay. Qualcomm design is adapted to their own wsa pa. When we use the third party PA, we need to change to HW delay to stabilize the singal .

code path as sample:

./kernel/msm-3.18/sound/soc/codecs/msm8x16-wcd.c

static int msm8x16_wcd_lo_dac_event(struct snd_soc_dapm_widget *w,
	struct snd_kcontrol *kcontrol, int event)
{
	struct snd_soc_codec *codec = w->codec;

	dev_dbg(codec->dev, "%s %s %d\n", __func__, w->name, event);

	switch (event) {
	case SND_SOC_DAPM_PRE_PMU:
        ...
		msleep(5);
		break;
	case SND_SOC_DAPM_POST_PMU:
		snd_soc_update_bits(codec,
			MSM8X16_WCD_A_ANALOG_RX_LO_DAC_CTL, 0x80, 0x80);
		snd_soc_update_bits(codec,
			MSM8X16_WCD_A_ANALOG_RX_LO_DAC_CTL, 0x08, 0x00);
		snd_soc_update_bits(codec,
			MSM8X16_WCD_A_ANALOG_RX_LO_EN_CTL, 0x40, 0x40);
		msleep(20);//value is adjustable
		break;
	case SND_SOC_DAPM_POST_PMD:
        ...
		break;
	}
	return 0;
}

2. Author Note

/******
@article{Linux Audio Driver,
Author = { 1byte ≠ 8bit},
Year = { 2021},
}
******/
[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 阅读详情

相关推荐

IEC 61851-24:2023 电动汽车导电充电系统 - 第24部分:直流电动汽车供电设备与电动汽车之间的数字通信,用于控制直流充电 - 完整英文电子版(110页)

IEC 61851-24:2023 与 IEC 61851-23 共同适用于直流电动车供电设备与电动道路车辆(EV)之间的数字通信,用于控制导电直流电力传输,额定电源电压最高可达1000伏交流电或最高1500伏直流电,额定输出电压最高可达1500伏直流电。

【Qualcomm音频】音效调试_播放音乐后,有时声音正常,有时偏小/平台Lineout 输出电压不稳定

播放音乐后,有时声音正常,有时偏小/平台Lineout 输出电压不稳定 平台建立codec初始化时,需要一系列初始化,如果操作SND_SOC_DAPM_PRE_PMU后,直接继续调用建立函数,可能会导致建立音频通路失败,Lineout输出电压就会异常。所以需要在操作SND_SOC_DAPM_PRE_PMU后增加延迟,保证初始化成功。 MTK和Qcom代码位置类似,下面以Qcom为例(高...

crow_ch的博客 1149

Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典)

Linux下的段错误(Segmentation fault)产生的原因及调试方法(经典)

[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

编程菜汝狗 778

5G 网络的移动性管理上下文对比介绍

5G 网络的移动性管理上下文对比介绍 4G/5G MM移动性管理机制对比 5G引入了新移动性管理状态,通过mobility pattern(移动方式)实现按需的移动性管理等。 MM的相关状态分为一下几种: RM状态(用户注册管理 注册态/非注册态)和CM状态(用户连接态/空闲态)独立;RM状态标识UE是否注册到网络,CM状态标识UE和核心网的信令连接是否存在。 RAN侧引入RRC-inactive state:UE(用户端)对于CN(核心网)而言处于连接态,对RAN(接入网)而言处于Ld..

m0_59032675的博客 4818

Python实战:动态爬取国家地表水水质实时监测数据(附最新代码解析)

本文详细介绍了使用Python动态爬取国家地表水水质实时监测数据的实战方法。针对动态网站数据加载特点,重点解析了如何利用Selenium模拟浏览器操作、结合BeautifulSoup解析数据,并提供了最新的代码实现与常见问题解决方案,帮助开发者高效获取环境监测数据。

app77的博客 272

lineout是什么接口

lineout是音频线路输入接口,例如用户可以把其他播放器的声音信号通过line-in内录到电脑中;而line-out接口就是常用的音频线路输出,比较普及的应用就是电脑连接音箱。 推荐:《编程视频》 line-in接口是音频线路输入,例如你可以把其他播放器(复读机等非数字信号的)的声音信号通过line-in内录到电脑中。 line-out接口就是最常用的音频线路输出,最普及的应用就是电脑连接音箱。 mic接口就是麦克风接口,如果你有耳麦的话,就把麦克风接到这个口就行了。 ...

jingzhunhuoke9的博客 7248

使用 Mid360 从零开始搭建实物机器人入门级导航系统 —— 基于 Fast_Lio 和 Move_Base

本文详细介绍了如何使用Mid360机器人从零开始搭建一个基于Fast_Lio和Move_Base的入门级导航系统。通过配置 ROS2、集成激光雷达、IMU、Fast_Lio、Move_Base 等模块,我们成功构建了一个能够实现自动导航的机器人系统。在实际开发中,随着需求的变化,你可以不断调整参数、优化路径规划算法、增加新的传感器等,逐步提升机器人的智能与功能。

小蜗牛的珍贵百宝箱 3563

[Linux Audio Driver] 高通平台MI2S总线配置

0. 背景 hardware platform:骁龙865 android version:android10 Linux kernel version:msm-4.19 思维导图如下: 1. 遇到的一点坑 由于我没有拿到这个平台的MI2S高通配置文档,所以遇到了一点坑,同步也分享。 这个平台目前还没有具体codec器件的调试需求,但是我想验证下接口,于是找硬件,告诉我可以配置MI2S1,对应上面几个GPIO,然后我寻思,默认pri_mi2s应该是MI2S0,这个MI2S1不就应该是配置sec_mi2s

编程菜汝狗 1万+

MATLAB代码实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响

这段MATLAB代码主要实现了船舶航线优化的功能,使用混合遗传算法(结合模拟退火算法)来寻找从大连港到格拉斯通港的最优航线,同时考虑了船舶的参数、气象数据(风速、风向、有效波高、波浪阻力系数等)对航行的影响。通过以上步骤,该代码能够找到一条在考虑船舶性能和气象条件下,从大连港到格拉斯通港的较优航线,最小化燃油消耗和航行时间的加权和。

AI的内部世界的博客 512

PCL RANSAC拟合直线并插值

空间直线线性插值的原理与实现方法。

点云侠的博客 136

[Linux Audio Driver] 高通平台内部MIC_BIAS简介

1. 问题背景 今天一个学长,问我这个这个修改几个意思,我为啥要改这个;我随口就说,两个都是关闭主、副麦克内部供电,因为是MEMS麦克(硅麦),如果是驻极体麦克的话,就要打开这个两个偏置,分别写 (codec,micb_int_reg,0x80,0x80); (codec,micb_int_reg,0x02,0x02); 然后学长问是MIC_BIAS,我说应该是吧…(有点没底气…),我给他截了...

编程菜汝狗 9766

AI Agent在智能广告投放中的应用

随着互联网的快速发展,广告投放市场变得越来越复杂和竞争激烈。传统的广告投放方式往往难以精准地触达目标受众,导致广告资源的浪费。AI Agent作为一种智能的自动化程序,能够在复杂的环境中自主学习、决策和执行任务。本文章的目的在于深入探讨AI Agent在智能广告投放中的应用,研究如何利用AI Agent提高广告投放的精准度、效率和效果,降低成本。范围涵盖了AI Agent的基本原理、相关算法、在广告投放中的具体应用场景以及实际案例分析等方面。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 615

[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.c int acdb_loader_...

编程菜汝狗 8712

uni-app - 文本展开 / 收起折叠功能,支持自定义样式(当文本内容超出规定行数后,展开收起折叠的功能)兼容 H5 / App / 小程序且易用更容易修改的插件组件源码,超详细的示例代码及注释

uniapp实现文本的展开与收起功能,uniapp展开全部和收起,uniapp里文本的展开与收起,uniapp中文本内容超出规定行数后展开收起的处理,UNIAPP兼容h5、微信小程序多行文本展开或收起,uni-app中,文字超出隐藏并显示省略号(实现展开、收起全文),uni-app中文本过长-实现折叠与展开效果,中文本内容超出规定行数(字数)后展开收起的处理,超出部分...显示,uniapp适用于uniapp多行文本溢出显示...,多行文本展开或收起,uni-app-文本展开/收起折叠功能,支

🏆 前端领域优质创作者 5638

Transformer实战(40)——Transformer时间序列数据建模

Transformer 因其在自然语言处理 (Natural Language Processing, NLP) 任务中的优异表现而被广泛应用,其主要优势在于能够有效建模时间序列数据。这些数据可以是文本,也可以是非文本。本节将介绍如何使用 Transformer 进行时间序列数据建模和预测,将学习时间序列的基本概念,并在此基础上使用一个简单的模型,用以初步了解时间序列数据,并为各种预测任务奠定基础。

盼小辉丶的博客 2335

[Linux Audio Driver] 移植外部CODEC常见编译报错解决(持续更新)

0. 背景 最近一直在调试codec芯片,好多代码FAE给的和平台不适配,比如结构体改了之类的,一些编译问题老是忘记,就想着顺手写下总结。 1. function definition is not allowed here error: function definition is not allowed here 好家伙,它说函数不能够在这里定义。网上看了一下,这个报错的原因是在函数原型里面又定义了一个函数, 回头看下函数报错的位置,这里for循环的括号丢了一个,添上即可。 (其他还有类似报错,但

编程菜汝狗 8159

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

[Linux Audio Driver] 高通TDM总线配置

0. 背景 TDM接口与平台SOC相关,调试前需要确定平台支持TDM,目前一些中高端的平台都支持的。(转载请备注链接) 本文介绍配置: SEN_TDM_TX_0。 1. tinymix查看当前虚拟总线配置 adb shell tinymix > tinymix_source.txt RX_CDC_DMA_RX_0这个虚拟总线是一直用的,这个显然存在,然后检索TDM。 Line 248: 243 BOOL 1 RX_CDC_DMA_RX_0_DL_HL Switch Off

编程菜汝狗 8018

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[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

编程菜汝狗 6229

[Linux Audio Driver] ACDB文件加载流程(一)

声卡信息是acdb加载中最重要的信息,本文追踪代码,解释声卡名如何被取出来使用的; 环境: Qualcomm平台,android7 , 内核版本:msm-3.18 1. platform_init函数 代码路径: hardware/qcom/audio/hal/msm8916/platform.c void *platform_init(struct audio_device *adev) ...

编程菜汝狗 5397

[Linux Audio Driver] 高通音频相关汇总(持续更新)

0. 背景 之前写了一些音频的博客,但是比较散乱,就想着汇总下写的博客,也是对自己知识结构的梳理,这个会持续更新。 1. 代码分析&总结 I2S相关介绍 ACDB文件加载流程(一) ACDB文件加载流程(二) ACDB文件加载流程(完结篇) 高通平台内部MIC_BIAS简介 从设备地址理解 Android7 外部PA Speaker代码结构 MSM8953音频部分设备树调用关系 开启音频kernel内核debug功能 声卡与XML匹配流程 SDM660平台内部CODEC tinyalsa命令总结 S

编程菜汝狗 4962

[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里面去了。 最近准备写几篇从零开

编程菜汝狗 4136

[Linux Audio Driver] I2S相关介绍

1.概述 对于音频来说,常见的数据流总线就是I2S了,当然还有PCM总线,以及高通把I2S和PCM封装成的PDM数据总线,本文主要进行I2S相关的术语介绍。 2.I2S构成 I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,它一般有四根线:SCK、WS、Rx、Tx . SCK:串行时钟,也叫位时钟 WS:帧时钟,同步信号(左、右声道)...

编程菜汝狗 3982

cool edit pro生成2.7khz_0dB音源方法

1. 新建文件 相关参数配置选择:48Khz、单声道、16位。 2. 改变频率 注意基础频率调整为2700hz,调制频率调整位0Hz,音量dB选择为0dB,其他选择默认。 点确认之后,生成的波形如下所示,生成好了另存为就可以了。 ...

编程菜汝狗 3279

[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...

编程菜汝狗 3252

[Linux Audio Driver] 音频POP音问题归纳总结

1. 板级电容/电感发声 情况就是你设备开机之后,啥也没干,然后听到呲啦刺啦的声音,这种情况我遇到过一次,这个是 不合理的结构设计或者走线导致的,硬件实力挖坑,需要改版解决。 2.播放声音长时间有杂音 这个锅我们送给硬件,这个是芯片之间有干扰;需要硬件检查个别芯片的地是不是干净的。 3. 插拔USB出现POP音 还是需要硬件背锅,相关电路加磁珠有可能优化此问题. 4. 播放声音的瞬间有POP...

编程菜汝狗 2428
上一篇: [Linux Device Driver] 看门狗
下一篇: 第一次坐飞机的感受
1byte ≠ 8bit
博客等级 码龄8年 7242粉丝 170原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值