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;
}
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;
}
举报