summaryrefslogtreecommitdiffstats
path: root/sound/pci/hda
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-12-20 18:29:16 +0100
committerTakashi Iwai <tiwai@suse.de>2013-01-12 08:34:30 +0100
commitb3a8c74522ae7c992cd916c3bd4b685d742c0e2a (patch)
tree3dc8670c2b0b0740cd07770d041e864fcded392b /sound/pci/hda
parent4ac0eefa761f62b07d4b96884cf1acc625d7063f (diff)
ALSA: hda - Allow aamix in the primary output path
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>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r--sound/pci/hda/hda_generic.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 18b5fae546d..f3c6ace2c87 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -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;