ALSA: hda - Add missing initialization of aamix paths
authorTakashi Iwai <tiwai@suse.de>
Tue, 3 Dec 2013 09:51:37 +0000 (10:51 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 6 Dec 2013 16:10:32 +0000 (17:10 +0100)
The loopback mixing paths aren't initialized correctly at init
callback.  Mostly this is harmless as codecs usually set the mute
state as default, but we still should make sure.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_generic.c

index 5ba3106b9712890492032bdb83e8fcb57e3547cc..058318de1af42dcfbeb3f59fc3f920d73fbac831 100644 (file)
@@ -5140,6 +5140,23 @@ static void init_multi_io(struct hda_codec *codec)
        }
 }
 
+static void init_aamix_paths(struct hda_codec *codec)
+{
+       struct hda_gen_spec *spec = codec->spec;
+
+       if (!spec->have_aamix_ctl)
+               return;
+       update_aamix_paths(codec, spec->aamix_mode, spec->out_paths[0],
+                          spec->aamix_out_paths[0],
+                          spec->autocfg.line_out_type);
+       update_aamix_paths(codec, spec->aamix_mode, spec->hp_paths[0],
+                          spec->aamix_out_paths[1],
+                          AUTO_PIN_HP_OUT);
+       update_aamix_paths(codec, spec->aamix_mode, spec->speaker_paths[0],
+                          spec->aamix_out_paths[2],
+                          AUTO_PIN_SPEAKER_OUT);
+}
+
 /* set up input pins and loopback paths */
 static void init_analog_input(struct hda_codec *codec)
 {
@@ -5242,6 +5259,7 @@ int snd_hda_gen_init(struct hda_codec *codec)
        init_multi_out(codec);
        init_extra_out(codec);
        init_multi_io(codec);
+       init_aamix_paths(codec);
        init_analog_input(codec);
        init_input_src(codec);
        init_digital(codec);