From 338c1e2d8fb2bb54f0ae9fb88169123d01f4d8d4 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 21 Jan 2013 14:24:31 +0100 Subject: [PATCH] --- yaml --- r: 353191 b: refs/heads/master c: f87498b65197f951899d8bbd99e5553227c41ec9 h: refs/heads/master i: 353189: dce1bac89e32436f0567a62113a6fec6559154b8 353187: 431bdd3f171b4c08f49b6c85e2a07ccb3d8bb263 353183: a29ffcf413dd6bcca984ad51b9f2c1ef1d64813f v: v3 --- [refs] | 2 +- trunk/sound/pci/hda/hda_generic.c | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 8429495e251f..9bba2caee156 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1fa335b0b797811d66a5f88373edd523f947cce4 +refs/heads/master: f87498b65197f951899d8bbd99e5553227c41ec9 diff --git a/trunk/sound/pci/hda/hda_generic.c b/trunk/sound/pci/hda/hda_generic.c index 4e9761a91816..e26e8d3430f2 100644 --- a/trunk/sound/pci/hda/hda_generic.c +++ b/trunk/sound/pci/hda/hda_generic.c @@ -1313,14 +1313,26 @@ static int check_aamix_out_path(struct hda_codec *codec, int path_idx) { struct hda_gen_spec *spec = codec->spec; struct nid_path *path; + hda_nid_t dac, pin; path = snd_hda_get_path_from_idx(codec, path_idx); if (!path || !path->depth || is_nid_contained(path, spec->mixer_nid)) return 0; - path = snd_hda_add_new_path(codec, path->path[0], - path->path[path->depth - 1], - spec->mixer_nid); + dac = path->path[0]; + pin = path->path[path->depth - 1]; + path = snd_hda_add_new_path(codec, dac, pin, spec->mixer_nid); + if (!path) { + if (dac != spec->multiout.dac_nids[0]) + dac = spec->multiout.dac_nids[0]; + else if (spec->multiout.hp_out_nid[0]) + dac = spec->multiout.hp_out_nid[0]; + else if (spec->multiout.extra_out_nid[0]) + dac = spec->multiout.extra_out_nid[0]; + if (dac) + path = snd_hda_add_new_path(codec, dac, pin, + spec->mixer_nid); + } if (!path) return 0; /* print_nid_path("output-aamix", path); */