diff options
-rw-r--r-- | sound/pci/hda/hda_generic.c | 15 |
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 | ||