瑞芯微Rockchip开发者社区
直播中

陈霞

7年用户 873经验值
私信 关注
[问答]

请教大神怎样去修改RK817 mic的增益呢

请教大神怎样去修改RK817 mic的增益呢?

回帖(1)

蔡妮芩

2022-2-17 15:00:20
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;
                }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分