RK3326 rk817 codec mic 增益修改

RK817对于mic的增益修改,没有提取到dts里面,通过查看规格书,发现CODEC_DMIC_PGA_GAIN寄存器,可以修改mic的增益,最近有项目在调试过程,发现录音杂音很大,原因是增益太大造成的,把增益降低就可以解决了。

--- a/kernel/sound/soc/codecs/rk817_codec.c
+++ b/kernel/sound/soc/codecs/rk817_codec.c

@@ -113,7 +113,7 @@ static const struct reg_default rk817_reg_defaults[] = {
        { RK817_CODEC_DADC_RVOLR, 0xff },
        { RK817_CODEC_AMIC_CFG0, 0x70 },
        { RK817_CODEC_AMIC_CFG1, 0x00 },
-       { RK817_CODEC_DMIC_PGA_GAIN, 0x66 },
+       { RK817_CODEC_DMIC_PGA_GAIN, 0x44 },
        { RK817_CODEC_DMIC_LMT1, 0x00 },
        { RK817_CODEC_DMIC_LMT2, 0x00 },
        { RK817_CODEC_DMIC_NG1, 0x00 },
        { RK817_CODEC_DMIC_NG1, 0x00 },
@@ -313,7 +313,7 @@ static struct rk817_reg_val_typ capture_power_up_list[] = {
        {RK817_CODEC_DI2S_TXCR3_TXCMD, 0x88},
        {RK817_CODEC_DDAC_POPD_DACST, 0x02},
        /* 0x29: -18db to 27db */
-       {RK817_CODEC_DMIC_PGA_GAIN, 0xaa},
+       {RK817_CODEC_DMIC_PGA_GAIN, 0x44},
 };
 
 #define RK817_CODEC_CAPTURE_POWER_UP_LIST_LEN \
@@ -642,9 +642,9 @@ static int rk817_capture_path_put(struct snd_kcontrol *kcontrol,
                if (rk817->adc_for_loopback) {
                        /* don't need to gain when adc use for loopback */
                        snd_soc_write(codec, RK817_CODEC_AMIC_CFG0, 0x00);
-                       snd_soc_write(codec, RK817_CODEC_DMIC_PGA_GAIN, 0x66);
-                       snd_soc_write(codec, RK817_CODEC_DADC_VOLL, 0x00);
-                       snd_soc_write(codec, RK817_CODEC_DADC_VOLR, 0x00);
+                       snd_soc_write(codec, RK817_CODEC_DMIC_PGA_GAIN, 0x44);
+                       snd_soc_write(codec, RK817_CODEC_DADC_VOLL, 0xff);
+                       snd_soc_write(codec, RK817_CODEC_DADC_VOLR, 0xff);
                        break;
                }
                if (!rk817->mic_in_differential) {
@@ -662,9 +662,9 @@ static int rk817_capture_path_put(struct snd_kcontrol *kcontrol,
                if (rk817->adc_for_loopback) {
                        /* don't need to gain when adc use for loopback */
                        snd_soc_write(codec, RK817_CODEC_AMIC_CFG0, 0x00);
-                       snd_soc_write(codec, RK817_CODEC_DMIC_PGA_GAIN, 0x66);
-                       snd_soc_write(codec, RK817_CODEC_DADC_VOLL, 0x00);
-                       snd_soc_write(codec, RK817_CODEC_DADC_VOLR, 0x00);
+                       snd_soc_write(codec, RK817_CODEC_DMIC_PGA_GAIN, 0x44);
+                       snd_soc_write(codec, RK817_CODEC_DADC_VOLL, 0xff);
+                       snd_soc_write(codec, RK817_CODEC_DADC_VOLR, 0xff);
                        break;
                }
 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值