问题
两只喇叭、右边音量大、左边音量小。
前言


喇叭的原理是、主控输出、经过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


1114

被折叠的 条评论
为什么被折叠?



