ALSA: hda - Allow aamix in the primary output path
authorTakashi Iwai <tiwai@suse.de>
Thu, 20 Dec 2012 17:29:16 +0000 (18:29 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sat, 12 Jan 2013 07:34:30 +0000 (08:34 +0100)
Allow the path including the loopback mixer widget in the primary
output channel as an alternative in the generic codec parser.

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

index 18b5fae546d0b8ba84e58e0de5835ca1bb3ae885..f3c6ace2c87fd505f41890824e0ecb3b4dab71a3 100644 (file)
@@ -864,6 +864,10 @@ static int try_assign_dacs(struct hda_codec *codec, int num_outs,
                                badness += bad->no_dac;
                }
                path = snd_hda_add_new_path(codec, dac, pin, HDA_PARSE_NO_AAMIX);
+               if (!path && i > 0 && spec->mixer_nid) {
+                       /* try with aamix */
+                       path = snd_hda_add_new_path(codec, dac, pin, HDA_PARSE_ALL);
+               }
                if (!path)
                        dac = dacs[i] = 0;
                else
@@ -1020,6 +1024,7 @@ static int fill_multi_ios(struct hda_codec *codec,
 static bool map_singles(struct hda_codec *codec, int outs,
                        const hda_nid_t *pins, hda_nid_t *dacs)
 {
+       struct hda_gen_spec *spec = codec->spec;
        int i;
        bool found = false;
        for (i = 0; i < outs; i++) {
@@ -1031,6 +1036,8 @@ static bool map_singles(struct hda_codec *codec, int outs,
                if (!dac)
                        continue;
                path = snd_hda_add_new_path(codec, dac, pins[i], HDA_PARSE_NO_AAMIX);
+               if (!path && i > 0 && spec->mixer_nid)
+                       path = snd_hda_add_new_path(codec, dac, pins[i], HDA_PARSE_ALL);
                if (path) {
                        dacs[i] = dac;
                        found = true;