diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-10-22 07:57:12 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-10-22 07:57:12 +0200 |
commit | b46882b6eb713245916100ac5b58664cd242a08d (patch) | |
tree | 68f3224aa639a7c76c55ad8a55d94d10cad17e8e /sound | |
parent | cf6814f2b5014ed5bbdef764a42e4abaa09b3a2e (diff) | |
parent | 3abb4f4d0e7aaad0d12004b5057f4486a688752b (diff) | |
download | linux-b46882b6eb713245916100ac5b58664cd242a08d.tar.bz2 |
Merge branch 'topic/hda-lo-jack' into for-next
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/hda_generic.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index 64220c08bd98..06d721085e72 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -1038,11 +1038,24 @@ static const char *get_line_out_pfx(struct hda_codec *codec, int ch, break; *index = ch; return "Headphone"; + case AUTO_PIN_LINE_OUT: + /* This deals with the case where we have two DACs and + * one LO, one HP and one Speaker */ + if (!ch && cfg->speaker_outs && cfg->hp_outs) { + bool hp_lo_shared = !path_has_mixer(codec, spec->hp_paths[0], ctl_type); + bool spk_lo_shared = !path_has_mixer(codec, spec->speaker_paths[0], ctl_type); + if (hp_lo_shared && spk_lo_shared) + return spec->vmaster_mute.hook ? "PCM" : "Master"; + if (hp_lo_shared) + return "Headphone+LO"; + if (spk_lo_shared) + return "Speaker+LO"; + } } /* for a single channel output, we don't have to name the channel */ if (cfg->line_outs == 1 && !spec->multi_ios) - return "PCM"; + return "Line Out"; if (ch >= ARRAY_SIZE(channel_name)) { snd_BUG(); @@ -4524,7 +4537,7 @@ static const char * const slave_pfxs[] = { "CLFE", "Bass Speaker", "PCM", "Speaker Front", "Speaker Surround", "Speaker CLFE", "Speaker Side", "Headphone Front", "Headphone Surround", "Headphone CLFE", - "Headphone Side", + "Headphone Side", "Headphone+LO", "Speaker+LO", NULL, }; |