| From 4808d12d1dddb046ec86425e5f6766f02e950292 Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Tue, 10 Jan 2012 15:16:02 +0100 |
| Subject: ALSA: hda - Fix the detection of "Loopback Mixing" control for VIA codecs |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| 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 | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/sound/pci/hda/patch_via.c |
| +++ b/sound/pci/hda/patch_via.c |
| @@ -2200,7 +2200,10 @@ static int via_auto_create_loopback_swit |
| { |
| 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; |