]> git.hungrycats.org Git - linux/commitdiff
ALSA: hda - Fix the detection of "Loopback Mixing" control for VIA codecs
authorTakashi Iwai <tiwai@suse.de>
Tue, 10 Jan 2012 14:16:02 +0000 (15:16 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 18 Jan 2012 15:31:53 +0000 (07:31 -0800)
commit 4808d12d1dddb046ec86425e5f6766f02e950292 upstream.

Currently the driver checks only the out_mix_path[] for the primary
output route for judging whether to create the loopback-mixing control
or not.  But, there are cases where aamix-routing is available only on
headphone or speaker paths but not on the primary output path.  So, the
driver ignores such cases inappropriately.

This patch fixes the check of the loopback-mixing control by testing
all mix-routing paths.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
sound/pci/hda/patch_via.c

index d636d939641596f9d43ab7e8699d9ae312e64a90..c3babe3c239d837da80ca56d2e35e8af8a4e1101 100644 (file)
@@ -2187,7 +2187,10 @@ static int via_auto_create_loopback_switch(struct hda_codec *codec)
 {
        struct via_spec *spec = codec->spec;
 
-       if (!spec->aa_mix_nid || !spec->out_mix_path.depth)
+       if (!spec->aa_mix_nid)
+               return 0; /* no loopback switching available */
+       if (!(spec->out_mix_path.depth || spec->hp_mix_path.depth ||
+             spec->speaker_path.depth))
                return 0; /* no loopback switching available */
        if (!via_clone_control(spec, &via_aamix_ctl_enum))
                return -ENOMEM;