aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/pci/hda/hda_generic.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 64220c08bd98..dc13cce70932 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -1038,6 +1038,19 @@ static const char *get_line_out_pfx(struct hda_codec *codec, int ch,
1038 break; 1038 break;
1039 *index = ch; 1039 *index = ch;
1040 return "Headphone"; 1040 return "Headphone";
1041 case AUTO_PIN_LINE_OUT:
1042 /* This deals with the case where we have two DACs and
1043 * one LO, one HP and one Speaker */
1044 if (!ch && cfg->speaker_outs && cfg->hp_outs) {
1045 bool hp_lo_shared = !path_has_mixer(codec, spec->hp_paths[0], ctl_type);
1046 bool spk_lo_shared = !path_has_mixer(codec, spec->speaker_paths[0], ctl_type);
1047 if (hp_lo_shared && spk_lo_shared)
1048 return spec->vmaster_mute.hook ? "PCM" : "Master";
1049 if (hp_lo_shared)
1050 return "Headphone+LO";
1051 if (spk_lo_shared)
1052 return "Speaker+LO";
1053 }
1041 } 1054 }
1042 1055
1043 /* for a single channel output, we don't have to name the channel */ 1056 /* for a single channel output, we don't have to name the channel */
@@ -4524,7 +4537,7 @@ static const char * const slave_pfxs[] = {
4524 "CLFE", "Bass Speaker", "PCM", 4537 "CLFE", "Bass Speaker", "PCM",
4525 "Speaker Front", "Speaker Surround", "Speaker CLFE", "Speaker Side", 4538 "Speaker Front", "Speaker Surround", "Speaker CLFE", "Speaker Side",
4526 "Headphone Front", "Headphone Surround", "Headphone CLFE", 4539 "Headphone Front", "Headphone Surround", "Headphone CLFE",
4527 "Headphone Side", 4540 "Headphone Side", "Headphone+LO", "Speaker+LO",
4528 NULL, 4541 NULL,
4529}; 4542};
4530 4543