From: Takashi Iwai Date: Mon, 7 Jan 2013 14:07:00 +0000 (+0100) Subject: ALSA: hda - Clear path indices properly at each re-evaluation X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=cd5be3f9de8945f782e1bbeffd080876eb2aa9f8;p=openwrt%2Fstaging%2Fblogic.git ALSA: hda - Clear path indices properly at each re-evaluation The path indices must be reset at each evaluation of DAC assignment. Otherwise the badness value will be wrongly calculated and mixers may be inconsistently assigned. Signed-off-by: Takashi Iwai --- diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index 11436c115953..1b8fd4d6cae9 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -1138,6 +1138,16 @@ static int fill_and_eval_dacs(struct hda_codec *codec, memset(spec->multiout.extra_out_nid, 0, sizeof(spec->multiout.extra_out_nid)); spec->multi_ios = 0; snd_array_free(&spec->paths); + + /* clear path indices */ + memset(spec->out_paths, 0, sizeof(spec->out_paths)); + memset(spec->hp_paths, 0, sizeof(spec->hp_paths)); + memset(spec->speaker_paths, 0, sizeof(spec->speaker_paths)); + memset(spec->aamix_out_paths, 0, sizeof(spec->aamix_out_paths)); + memset(spec->digout_paths, 0, sizeof(spec->digout_paths)); + memset(spec->loopback_paths, 0, sizeof(spec->loopback_paths)); + memset(&spec->digin_path, 0, sizeof(spec->digin_path)); + badness = 0; /* fill hard-wired DACs first */