Skip to content

Commit

Permalink
ALSA: hda - Check aamix-output paths from other DACs, too
Browse files Browse the repository at this point in the history
Many codecs provide routes to multiple output pins through an aamix
widget, but most of them do it only from a single DAC.  However, the
current generic parser checks only the aamix paths from the original
(directly bound) DACs through aamix NID, and miss the path:
  primary DAC -> aamix -> target out pin

This patch adds a more check for the routes like the above.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Jan 21, 2013
1 parent 1fa335b commit f87498b
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions sound/pci/hda/hda_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -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); */
Expand Down

0 comments on commit f87498b

Please sign in to comment.