diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-10-07 09:12:27 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-10-07 09:12:27 -0400 |
commit | defb5ab2e0ff08ff9a942e2bb7e14c21a55ec26b (patch) | |
tree | 8943ce45b1fd9ab02b9eb0d799a64005b750dbe1 /sound | |
parent | 01d4825df62d1d405035b90294bf38616d3f380b (diff) |
ALSA: hda - Fix yet another auto-mic bug in ALC268
Since patch_alc268() doesn't call set_capture_mixer() (due to its h/w
design different from other siblings), it needs to call fixup_automic_adc()
explicitly to set up the auto-mic routing. Otherwise the indices for
int/ext mics aren't set properly.
Reference: Novell bnc#544899
http://bugzilla.novell.com/show_bug.cgi?id=544899
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index a61fbbb41b29..470fd74a0a1a 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -12859,12 +12859,15 @@ static int patch_alc268(struct hda_codec *codec) | |||
12859 | unsigned int wcap = get_wcaps(codec, 0x07); | 12859 | unsigned int wcap = get_wcaps(codec, 0x07); |
12860 | int i; | 12860 | int i; |
12861 | 12861 | ||
12862 | spec->capsrc_nids = alc268_capsrc_nids; | ||
12862 | /* get type */ | 12863 | /* get type */ |
12863 | wcap = get_wcaps_type(wcap); | 12864 | wcap = get_wcaps_type(wcap); |
12864 | if (spec->auto_mic || | 12865 | if (spec->auto_mic || |
12865 | wcap != AC_WID_AUD_IN || spec->input_mux->num_items == 1) { | 12866 | wcap != AC_WID_AUD_IN || spec->input_mux->num_items == 1) { |
12866 | spec->adc_nids = alc268_adc_nids_alt; | 12867 | spec->adc_nids = alc268_adc_nids_alt; |
12867 | spec->num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt); | 12868 | spec->num_adc_nids = ARRAY_SIZE(alc268_adc_nids_alt); |
12869 | if (spec->auto_mic) | ||
12870 | fixup_automic_adc(codec); | ||
12868 | if (spec->auto_mic || spec->input_mux->num_items == 1) | 12871 | if (spec->auto_mic || spec->input_mux->num_items == 1) |
12869 | add_mixer(spec, alc268_capture_nosrc_mixer); | 12872 | add_mixer(spec, alc268_capture_nosrc_mixer); |
12870 | else | 12873 | else |
@@ -12874,7 +12877,6 @@ static int patch_alc268(struct hda_codec *codec) | |||
12874 | spec->num_adc_nids = ARRAY_SIZE(alc268_adc_nids); | 12877 | spec->num_adc_nids = ARRAY_SIZE(alc268_adc_nids); |
12875 | add_mixer(spec, alc268_capture_mixer); | 12878 | add_mixer(spec, alc268_capture_mixer); |
12876 | } | 12879 | } |
12877 | spec->capsrc_nids = alc268_capsrc_nids; | ||
12878 | /* set default input source */ | 12880 | /* set default input source */ |
12879 | for (i = 0; i < spec->num_adc_nids; i++) | 12881 | for (i = 0; i < spec->num_adc_nids; i++) |
12880 | snd_hda_codec_write_cache(codec, alc268_capsrc_nids[i], | 12882 | snd_hda_codec_write_cache(codec, alc268_capsrc_nids[i], |