现象描述如下:
1.可以播放声音。
2.播放声音时录音,会听到有杂声的录音歌曲。这里选择的寄存器是line_in->adc->i2s_dout(0x0002寄存器值为0x73, 0x000a寄存器值为0x10,0x0024寄存器值为0x26)
3.不播放声音时录音,录音没有任何声音。line_in->adc->i2s_dout(0x0002寄存器值为0x72, 0x000a寄存器值为0x10,0x0024寄存器值为0x26).
请分析一下可能的原因!
谢谢!
Hi
播放路径和录音路径如下:
0x0002寄存器:
把DAP关掉的配置:采用上面3的路径配置,该寄存器配置为:
CHIP_DIG_POWER = 0x63
0x000A寄存器:
CHIP_SSS_CTRL = 0x10,没问题。
0x0024 寄存器:
CHIP_ANA_CTRL = 0x22
你要用的是MIC IN,而不是LINE IN.
Have a nice day!
BR,
Weidong
Hi,
我仔细看了一下驱动代码,发现有可疑的地方,如下,是不是需要改写以下地方
static const char *hp_mux_text[] = {
"DAC", "LINE_IN"
};
static SOC_ENUM_SINGLE_DECL(hp_enum,
SGTL5000_CHIP_ANA_CTRL, 6,
hp_mux_text);
static const struct snd_kcontrol_new hp_mux =
SOC_DAPM_ENUM("Headphone Mux", hp_enum);
/* input sources for DAC */
static const char *dac_mux_text[] = {
"ADC", "I2S", "Rsvrd", "DAP"
};
static SOC_ENUM_SINGLE_DECL(dac_enum,
SGTL5000_CHIP_SSS_CTRL, SGTL5000_DAC_SEL_SHIFT,
dac_mux_text);
static const struct snd_kcontrol_new dac_mux =
SOC_DAPM_ENUM("Digital Input Mux", dac_enum);
/* input sources for DAP */
static const char *dap_mux_text[] = {
"ADC", "I2S"
};
static SOC_ENUM_SINGLE_DECL(dap_enum,
SGTL5000_CHIP_SSS_CTRL, SGTL5000_DAP_SEL_SHIFT,
dap_mux_text);
static const struct snd_kcontrol_new dap_mux =
SOC_DAPM_ENUM("DAP Mux", dap_enum);
/* input sources for DAP mix */
static const char *dapmix_mux_text[] = {
"ADC", "I2S"
};
谢谢!