At Mon, 13 Feb 2012 14:59:16 +0100, Anisse Astier wrote:
On Mon, 13 Feb 2012 11:31:52 +0100, Takashi Iwai tiwai@suse.de wrote :
At Mon, 13 Feb 2012 11:06:53 +0100, Anisse Astier wrote:
On Mon, 13 Feb 2012 17:30:57 +0800, LydiaWang@viatech.com.cn wrote :
-----邮件原件----- 发件人: Anisse Astier [mailto:anisse@astier.eu] 发送时间: 2012年2月13日 17:20 收件人: Lydia Wang 抄送: tiwai@suse.de; alsa-devel@alsa-project.org 主题: Re: VT1705 : Mic not working with power_save
(adding back list in Cc, it was lost)
On Mon, 13 Feb 2012 10:02:27 +0800, LydiaWang@viatech.com.cn wrote :
Hi,
The log showed that your machine had two microphones, one is an internal mic, and the other is a rear mic. Which microphone did you use? The log showed currently used mic is the internal mic. The rear mic was not plugged in a
jack.
Lydia
On this hardware, there's only an internal mic, and no physical jack to plug another input.
So " mic doesn't work " means recording fail or playback as aa-path fail? And could you mail me log file when power_saver=1? Thanks.
Mic doesn't work means recording fails. Except if, during the recording, I use the "Input Source" control to change to another input, *and then back* to "Internal Mic". If I start another recording, it will still be silent unless I repeat the previous sequence.
I don't use mic directly for playback (with hardware a-a path)
Please find the full log and alsa-info in attachment with power_save=1.
Thanks.
I found the culprit. It's because VT1705 has a secondary ADC that has no input-mux while the primary ADC has one. At the initialization, the secondary ADC overwrites the MUX value always to zero because of it.
The patch below should fix the problem. Let me know if it works (at best give your tested-by line).
thanks,
Takashi
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index e5842fe..afeb3e19 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -666,6 +666,8 @@ static void via_auto_init_analog_input(struct hda_codec *codec) /* init input-src */ for (i = 0; i < spec->num_adc_nids; i++) { int adc_idx = spec->inputs[spec->cur_mux[i]].adc_idx;
if (i > 0 && !spec->mux_nids[i])
if (spec->mux_nids[adc_idx]) { int mux_idx = spec->inputs[spec->cur_mux[i]].mux_idx; snd_hda_codec_write(codec, spec->mux_nids[adc_idx], 0,break;
It works! Tested-by: Anisse Astier anisse@astier.eu
I wouldn't mind a Cc: stable too.
Yes, definitely. I applied the patch now to the sound git tree.
thanks,
Takashi