[alsa-devel] [PATCH] ALSA: hda - Set TLV_DB_SCALE_MUTE bit for cx5051 vmaster

Takashi Iwai tiwai at suse.de
Tue Aug 19 07:55:58 CEST 2014


At Tue, 19 Aug 2014 13:16:47 +0800,
Raymond Yau wrote:
> 
> > >
> > > > Conexnat HD-audio driver has a workaround for cx5051 (aka CX20561)
> > > > chip to add fake mute controls to each amp (commit 3868137e).  This
> > > > implies the minimum-as-mute TLV bit in TLV for each corresponding
> > > > control.  Meanwhile we build the virtual master from these, but the
> > > > TLV bit is missing, even though the slaves have it.
> > > >
> > > > This patch simply adds the missing TLV_DB_SCALE_MUTE bit for vmaster,
> > > > as already done in patch_sigmatel.c.
> > > >
> > > > Signed-off-by: Takashi Iwai <tiwai at suse.de>
> > > > ---
> > > >  sound/pci/hda/patch_conexant.c | 6 ++++++
> > > >  1 file changed, 6 insertions(+)
> > > >
> > > > diff --git a/sound/pci/hda/patch_conexant.c
> > > b/sound/pci/hda/patch_conexant.c
> > > > index 7627a69ca6d7..6f2fa838b635 100644
> > > > --- a/sound/pci/hda/patch_conexant.c
> > > > +++ b/sound/pci/hda/patch_conexant.c
> > > > @@ -26,6 +26,7 @@
> > > >  #include <linux/module.h>
> > > >  #include <sound/core.h>
> > > >  #include <sound/jack.h>
> > > > +#include <sound/tlv.h>
> > > >
> > > >  #include "hda_codec.h"
> > > >  #include "hda_local.h"
> > > > @@ -859,6 +860,11 @@ static int patch_conexant_auto(struct hda_codec
> > > *codec)
> > > >         if (err < 0)
> > > >                 goto error;
> > > >
> > > > +       if (codec->vendor_id == 0x14f15051) {
> > > > +               /* minimum value is actually mute */
> > > > +               spec->gen.vmaster_tlv[3] |= TLV_DB_SCALE_MUTE;
> > > > +       }
> > > > +
> > > >         codec->patch_ops = cx_auto_patch_ops;
> > > >
> > > >         /* Some laptops with Conexant chips show stalls in S3 resume,
> > > > --
> > >
> > > Does this mean that when there is no hardware mute switch, the driver
> > > create a fake one using mindB of volume as mute ?
> >
> > The fake mutes are, yes.
> >
> > > But this mean that the volume control and mute are not independent
> anymore,
> > > just like those pulseaudio volume controls,  volume always change to
> zero
> > > after mute and unmute
> >
> > No, the mute controls are handled individually.
> > And, this commit itself isn't about the fake mute implementations.
> > It just give the hint to TLV.
> >
> 
> If the codec  support mute in default amp out caps of afg node, should the
> driver still use min as mute for the virtual master since all slaves have
> real mute switch
> 
> Why the driver add fake mute switch when the hardware real mute switches ?
> 
> https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/?id=3868137ea41866773e75d9ac4b9988dcc361ff1d
> 
> https://launchpadlibrarian.net/182545365/AlsaInfo.txt
> 
> Codec: IDT 92HD73C1X5

You're looking at a codec that is irrelevant with the patch.

Again, TLV bit just informs that the minimum volume is actually mute
for the corresponding volume.  This itself has nothing to do with the
fake mute.  The fake mute is cx5051-specific implementation.


Takashi


More information about the Alsa-devel mailing list