Commit 6759dc32 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda/realtek - Fix missing inits of item indices for auto-mic

When the imux entries are rebuilt in alc_rebuild_imux_for_auto_mic(),
the initialization of index field is missing.  It may work without it
casually when the original imux was created by the auto-parser, but
it's definitely broken in the case of static configs where no imux was
parsed beforehand.  Because of this, the auto-mic switching doesn't
work properly on some model options.

This patch adds the missing initialization of index field.
Reported-by: default avatarDmitry Nezhevenko <dion@inhex.net>
Cc: <stable@kernel.org> [v3.1]
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 6dfeb703
...@@ -1054,8 +1054,20 @@ static bool alc_rebuild_imux_for_auto_mic(struct hda_codec *codec) ...@@ -1054,8 +1054,20 @@ static bool alc_rebuild_imux_for_auto_mic(struct hda_codec *codec)
spec->imux_pins[2] = spec->dock_mic_pin; spec->imux_pins[2] = spec->dock_mic_pin;
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
strcpy(imux->items[i].label, texts[i]); strcpy(imux->items[i].label, texts[i]);
if (spec->imux_pins[i]) if (spec->imux_pins[i]) {
hda_nid_t pin = spec->imux_pins[i];
int c;
for (c = 0; c < spec->num_adc_nids; c++) {
hda_nid_t cap = spec->capsrc_nids ?
spec->capsrc_nids[c] : spec->adc_nids[c];
int idx = get_connection_index(codec, cap, pin);
if (idx >= 0) {
imux->items[i].index = idx;
break;
}
}
imux->num_items = i + 1; imux->num_items = i + 1;
}
} }
spec->num_mux_defs = 1; spec->num_mux_defs = 1;
spec->input_mux = imux; spec->input_mux = imux;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment