mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 22:50:56 +07:00
ALSA: hda - Check aamix-output paths from other DACs, too
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>
This commit is contained in:
parent
1fa335b0b7
commit
f87498b651
@ -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); */
|
||||
|
Loading…
Reference in New Issue
Block a user