2023-9-21-----Android11(MTK)-----解决双喇叭一边音量大一边音量小以及破音的问题

问题

两只喇叭、右边音量大、左边音量小。

前言

在这里插入图片描述
在这里插入图片描述

喇叭的原理是、主控输出、经过PA(放大电路),输出给喇叭播放。
这三个环节排查原因。

尝试

首先一定要检查硬件有没有问题!!!也就是喇叭规格是否一样。
然后把两个喇叭对调了一下位置,依然是同样的问题(右边音量大、左边音量小)。
那说明主控的输出是有问题的。
通过上边的硬件原理图、快速查一下驱动、看看157和73脚。
查查dts、是有定义了157、但没定义73、那这样问题就确定了、这样就是主控没配置好73。
在这里插入图片描述
硬件工程师也给我发了这个资料、让我知道了怎么配置。
这个放大倍数是跟拉高之前的脉冲个数有关。
如果没有脉冲,放大倍数12
如果一个脉冲,放大倍数16
如果两个脉冲,放大倍数24
如果三个脉冲,放大倍数27.5

修改

查查代码是哪里设置了脉冲,然后发现是在下面这个代码里

kernel-4.14/sound/soc/mediatek/codec/mt6358/mtk-soc-codec-6358.c
static void Ext_Speaker_Amp_Change(bool enable)
{
   
   
#define SPK_WARM_UP_TIME        (25)	/* unit is ms */
	if (enable) {
   
   
		pr_debug("%s() ON+\n", __func__);

		AudDrv_GPIO_EXTAMP_Select(false, 2);

		/*udelay(1000); */
		usleep_range(1 * 1000, 20 * 1000);

		AudDrv_GPIO_EXTAMP_Select(true, 2);

		msleep(SPK_WARM_UP_TIME);

		pr_debug("%s() ON-\n", __func__);
	} else {
   
   
		pr_debug("%s(), OFF+\n", __func__);

		AudDrv_GPIO_EXTAMP_Select(false, 2);

		udelay(500);

		pr_debug("%s(), OFF-\n", __func__);
	}
}

其中看一下这个 AudDrv_GPIO_EXTAMP_Select 这个函数,定义在

kernel-4.14/sound/soc/mediatek/common_int/mtk-auddrv-gpio.c
int AudDrv_GPIO_EXTAMP_Select(int bEnable, int mode)
{
   
   
	int retval = 0;

#if MT6755_PIN
	int extamp_mode;
	int i;

	mutex_lock(&gpio_request_mutex);
	if (bEnable == 1) {
   
   
		if 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值