At Thu, 16 Oct 2014 15:33:45 +0200, David Henningsson wrote:
In the scenario where there is one "Line Out", one "Speaker" and one "Headphone", and there are only two DACs, two outputs will share a DAC. Currently any mixer on such a DAC will get the "PCM" name, which is misleading. Instead use "Headphone+LO" or "Speaker+LO" to better specify what the volume actually controls.
Signed-off-by: David Henningsson david.henningsson@canonical.com
The changes look good. If this passes the tests and is confirmed to work with the real machine, let's merge them. As this is rather a fix, we can merge them to 3.18, too, IMO.
thanks,
Takashi
sound/pci/hda/hda_generic.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index 64220c0..1d742ea 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, 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 */
-- 1.9.1