[alsa-devel] [RFC PATCH 1/2] ALSA: hda - Fix "PCM" name being used on one DAC when there are two DACs

Takashi Iwai tiwai at suse.de
Mon Oct 20 13:27:11 CEST 2014


At Mon, 20 Oct 2014 12:15:37 +0200,
David Henningsson wrote:
> 
> 
> 
> On 2014-10-20 12:02, Takashi Iwai wrote:
> > At Mon, 20 Oct 2014 11:59:30 +0200,
> > David Henningsson wrote:
> >>
> >>
> >>
> >> On 2014-10-20 11:55, Raymond Yau 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.
> >>>   >>  > > >>
> >>>   >>  > > >> Are there any examples ?
> >>>   >>  > > >>
> >>>   >>  > > >
> >>>   >>  > > > I used "hda-emu
> >>>   >>  > > codecs/canonical/alc3226-dell-precision-m2800-ccert-201404-14986 -i
> >>>   >> 1" when
> >>>   >>  > > developing the patches.
> >>>   >>  > > >
> >>>   >>  > > > I don't have any hardware available myself that exposes this
> >>>   >> behavior,
> >>>   >>  > > but I can maybe fake one with hdajackretask, if that counts...
> >>>   >>  > > >
> >>>   >>  > >
> >>>   >>  > > How about adding these names to slaves of virtual master
> >>>   >> volume/switch ?
> >>>   >>  > >
> >>>   >>  > > hdajackretask won't help if the topology of the codecs are
> >>> different
> >>>   >>  > >
> >>>   >>  > > Seem the badness still prevent the driver to support surround
> >>> 5.1 with
> >>>   >>  > > three rear panel jacks, internal speaker and front panel
> >>> headphone for
> >>>   >>  > > Thinkcenter A58 using alc662
> >>>   >>  > >
> >>>   >>  > >
> >>>   >>
> >>> https://www.mail-archive.com/alsa-user@lists.sourceforge.net/msg29203.html
> >>>   >>  > >
> >>>   >>  > > Why 3stack desktops with 6 channels codecs not using
> >>>   >> "Headphone+LO"  or
> >>>   >>  > > "Speaker+LO" ?
> >>>   >>  >
> >>>   >>  > The problem is just the lack of DACs, so it cannot cover all three
> >>>   >>  > outputs, no matter how the pins are chosen.  That is, it's no 6
> >>>   >>  > channels at all but 4 channels at most.
> >>>   >>  >
> >>>   >>  >
> >>>   >>
> >>>   >> http://shop.lenovo.com/us/en/desktops/thinkcentre/a-series/a58/
> >>>   >>
> >>>   >> The technical specification of a58
> >>>   >>
> >>>   >> 2 pin internal speaker connector
> >>>   >> Alc662 5.1
> >>>   >>
> >>>   >> https://bbs.archlinux.org/viewtopic.php?id=156433
> >>>   >>
> >>>   >> Seem windows support surround 5.1
> >>>   >
> >>>   >
> >>>   > Raymond, there can certainly be cases which this patch does not cover
> >>> - after all, it's mostly a band aid given the lack of topology
> >>> information - but do you see cases where this patch actually causes a
> >>> *regression*? If so, could you point me to alsa-info for the machine
> >>> where this patch causes a regression?
> >>>   >
> >>>
> >>> www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=24&PFid=27&Level=5&Conn=4
> >>> <http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=24&PFid=27&Level=5&Conn=4>
> >>>
> >>> I expect those desktop with 2+2 HD Audio codec support independent headphone
> >>>
> >>> This mean the driver should not create "Lineout+HP" Playback volume
> >>>
> >>> Line out and headphone cannot share same DAC
> >>
> >> I doubt that, but if they cannot share the same DAC, that needs to be
> >> addressed in a separate patch. This patch just deals with the naming,
> >> given that the previous logic has determined that headphone and Line out
> >> should share the same DAC.
> >>
> >> Takashi, are you planning to apply this patch? Or are you looking for
> >> more testing first?
> >
> > I'll test a bit more.  I have a machine that is affected by this
> > issue, so I can test on a real machine.
> >
> > How about the changes in PA side, BTW?  Is it ready?
> 
> I will cook up a quick patch once you have merged.

Both kernel and PA patches shouldn't give regressions and should be
applicable individually, so you don't have to wait for me merging it.
I'm fine with the new control names, so just go ahead.

> But there will not be 
> any big regression: we already control the vmaster, which in turn 
> controls the hw volume of the DAC. So I will expect things to just work, 
> assume the new controls will be initialized correctly. I'm attaching an 
> (untested) alsa-utils patch for that.

Actually these initializations are superfluous when they are vmaster
slaves.  Nowadays the slaves are initialized as 0dB.

But, in your patch, one piece is missing: the addition to slave
controls.  The additional fix patch is below.

With a quick test, it seems working fine.


thanks,

Takashi

---
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c
index 3ffbf94a6ce6..06d721085e72 100644
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -4537,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,
 };
 


More information about the Alsa-devel mailing list