At Wed, 4 Jul 2007 00:12:46 +0100, Daniel J Blueman wrote:
On 03/07/07, Takashi Iwai tiwai@suse.de wrote:
At Mon, 2 Jul 2007 23:39:14 +0100, Daniel J Blueman wrote:
> With both 2.6.20 and 2.6.22 kernels on Ubuntu 7.04 on my Sony Vaio > SZ240, I'm unable to get my mic connector working at any cost.
First, show the contents of /proc/asound/card0/codec#* files...
[snip]
I have discovered the bug preventing me using the external mic socket before: in the mixer, the user has to select the [internal] mic input, then re-select the line-in (actually external mic) input; reading from (eg) /dev/dsp while changing this, the output suddenly is as expected when the line-in is re-selected.
Could you elaborate? What do yo mean "output" here, and what did you expect?
Looking at what is printed from the command 'cat /dev/dsp', what is shown changes when I de-select 'line-in' and then reselect it. Let me know if you're still unclear.
Since we've got started, where should I look for the 'before' and 'after' state to compare to see into this?
Yes, comparing the codec dump file would be helpful.
Changing from the initial mixer state of 'Line-in' being selected to 'Microphone' does not change anything in the /proc/asound/card0/codec#{0,1} files. After, changing the input back to 'Line-in' does show a change [1] (which we'd expect).
My interpretation of this is that (in the initial state) the STAC registers are set to record from the internal mic (which doesn't actually exist; there is a tiny amount of crosstalk) and the mixer settings ALSA reports show the line-in/external mic selected [2].
The problem sounds like a mismatch of initialization verb and the internal mixer state. If it's the case, the patch below should fix, then.
Takashi
diff -r 523aa7d0e49d pci/hda/patch_sigmatel.c --- a/pci/hda/patch_sigmatel.c Wed Jul 04 10:35:29 2007 +0200 +++ b/pci/hda/patch_sigmatel.c Wed Jul 04 14:38:39 2007 +0200 @@ -2337,7 +2337,7 @@ static struct hda_verb vaio_init[] = { {0x0d, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80 }, /* Mic? (<- 0x2) */ {0x0e, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN }, /* CD */ {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80 }, /* Mic? */ - {0x15, AC_VERB_SET_CONNECT_SEL, 0x2}, /* mic-sel: 0a,0d,14,02 */ + {0x15, AC_VERB_SET_CONNECT_SEL, 0x1}, /* mic-sel: 0a,0d,14,02 */ {0x02, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, /* HP */ {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, /* Speaker */ {0x09, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, /* capture sw/vol -> 0x8 */ @@ -2353,7 +2353,7 @@ static struct hda_verb vaio_ar_init[] = {0x0e, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN }, /* CD */ /* {0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT },*/ /* Optical Out */ {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80 }, /* Mic? */ - {0x15, AC_VERB_SET_CONNECT_SEL, 0x2}, /* mic-sel: 0a,0d,14,02 */ + {0x15, AC_VERB_SET_CONNECT_SEL, 0x1}, /* mic-sel: 0a,0d,14,02 */ {0x02, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, /* HP */ {0x05, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, /* Speaker */ /* {0x10, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},*/ /* Optical Out */