At Tue, 03 Aug 2010 09:18:24 +0200, I wrote: > > At Tue, 03 Aug 2010 08:49:05 +0200, > David Henningsson wrote: > > > > 2010-08-02 16:50, Takashi Iwai skrev: > > > At Mon, 02 Aug 2010 16:30:57 +0200, > > > David Henningsson wrote: > > >> > > >> Here's yet another ALC269 which I'm unsure of how to fix the right way. > > >> There is no way to enable the microphone, and I think the trouble has to > > >> do with that the auto parser does not check whether the node is a mixer > > >> or a selector. It might be that the "alc269" vs "alc269vb" detection is > > >> wrong as well (btw, what does vb stand for?). > > >> > > >> I unfortunately do not have the full alsa-info output, but the > > >> codec-proc is here: > > >> http://launchpadlibrarian.net/49076615/Card0.Codecs.codec.2.txt > > >> and PCI IDs: > > >> http://launchpadlibrarian.net/49076618/PciMultimedia.txt > > > > > > Are you sure that it's the result with the very latest driver? > > > > The codec-proc might not have been generated with the very latest > > driver, but when I run it through hda-emu (with a just-pulled > > sound-2.6.git as hda-dir), I get errors as: > > > > send: NID=0x23, VERB=0x701(set_connect_sel), PARM=0x1 > > invalid connect select for node 0x23 > > > > ...which makes me believe the error is still there. The error above > > comes from patch_realtek.c:14366, btw. > > This isn't a critical bug. The codec shall ignore this verb. > (of course it should be corrected, though.) ... and the fix patch is below. Takashi --- diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index cf14b00..e340eee 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -5166,6 +5166,19 @@ static void fixup_automic_adc(struct hda_codec *codec) spec->auto_mic = 0; /* disable auto-mic to be sure */ } +/* select or unmute the given capsrc route */ +static void select_or_unmute_capsrc(struct hda_codec *codec, hda_nid_t cap, + int idx) +{ + if (get_wcaps_type(get_wcaps(codec, cap)) == AC_WID_AUD_MIX) { + snd_hda_codec_amp_stereo(codec, cap, HDA_INPUT, idx, + HDA_AMP_MUTE, 0); + } else { + snd_hda_codec_write_cache(codec, cap, 0, + AC_VERB_SET_CONNECT_SEL, idx); + } +} + /* set the default connection to that pin */ static int init_capsrc_for_pin(struct hda_codec *codec, hda_nid_t pin) { @@ -5180,14 +5193,7 @@ static int init_capsrc_for_pin(struct hda_codec *codec, hda_nid_t pin) idx = get_connection_index(codec, cap, pin); if (idx < 0) continue; - /* select or unmute this route */ - if (get_wcaps_type(get_wcaps(codec, cap)) == AC_WID_AUD_MIX) { - snd_hda_codec_amp_stereo(codec, cap, HDA_INPUT, idx, - HDA_AMP_MUTE, 0); - } else { - snd_hda_codec_write_cache(codec, cap, 0, - AC_VERB_SET_CONNECT_SEL, idx); - } + select_or_unmute_capsrc(codec, cap, idx); return i; /* return the found index */ } return -1; /* not found */ @@ -14363,9 +14369,8 @@ static int alc269_parse_auto_config(struct hda_codec *codec) /* set default input source */ if (!spec->dual_adc_switch) - snd_hda_codec_write_cache(codec, spec->capsrc_nids[0], - 0, AC_VERB_SET_CONNECT_SEL, - spec->input_mux->items[0].index); + select_or_unmute_capsrc(codec, spec->capsrc_nids[0], + spec->input_mux->items[0].index); err = alc_auto_add_mic_boost(codec); if (err < 0) _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel