Re: [Regression] No sound on HP Pavilion dv6, STAC92xx

From: Takashi Iwai
Date: Tue Jun 26 2012 - 11:52:30 EST


At Tue, 26 Jun 2012 17:10:26 +0200,
Takashi Iwai wrote:
>
> At Tue, 26 Jun 2012 16:16:36 +0200,
> Takashi Iwai wrote:
> >
> > At Tue, 26 Jun 2012 15:13:43 +0100,
> > Luis Henriques wrote:
> > >
> > > Hi,
> > >
> > > After commit b0791dda813c179e539b0fc1ecd3f5f30f2571e2 ("ALSA: hda/idt
> > > - Fix power-map for speaker-pins with some HP laptops") we have
> > > several bug reports about not having sound on HP Pavilion laptops.
> > >
> > > Here's a link to one of these bug reports:
> > >
> > > http://bugs.launchpad.net/bugs/1013183
> > >
> > > After reverting the referred commit, everything seems to be working
> > > fine again.
> > >
> > > Any ideas/fixes?
> >
> > Could you give alsa-info.sh output on both working and non-working
> > kernels?
>
> Also, does it really happen with the upstream kernels (vanilla 3.2.y
> and Linus tree) without ubuntu changes? If yes, I'd need alsa-info.sh
> outputs on these, too.

Never mind, I found the culprit.
The fixed patch for 3.5 kernel is below.

For 3.4 and older kernels, another patch is necessary. Will put in
another post.


Takashi

---
From: Takashi Iwai <tiwai@xxxxxxx>
Subject: [PATCH] ALSA: hda - Fix power-map regression for HP dv6 & co

The recent fix for power-map controls (commit b0791dda813) caused
regressions on some other HP laptops. They have fixed pins but these
pins are exposed as jack-detectable. Thus the driver tries to control
the power-map dynamically per jack detection where it never gets on.

This patch adds the check of connection and it assumes the no jack
detection is available for fixed pins no matter what pin capability
says.

BugLink: http://bugs.launchpad.net/bugs/1013183
Reported-by: Luis Henriques <luis.henriques@xxxxxxxxxxxxx>
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---
sound/pci/hda/patch_sigmatel.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 7db8228..0767528 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -4367,7 +4367,7 @@ static int stac92xx_init(struct hda_codec *codec)
AC_PINCTL_IN_EN);
for (i = 0; i < spec->num_pwrs; i++) {
hda_nid_t nid = spec->pwr_nids[i];
- int pinctl, def_conf;
+ unsigned int pinctl, def_conf;

def_conf = snd_hda_codec_get_pincfg(codec, nid);
def_conf = get_defcfg_connect(def_conf);
@@ -4376,6 +4376,11 @@ static int stac92xx_init(struct hda_codec *codec)
stac_toggle_power_map(codec, nid, 0);
continue;
}
+ if (def_conf == AC_JACK_PORT_FIXED) {
+ /* no need for jack detection for fixed pins */
+ stac_toggle_power_map(codec, nid, 1);
+ continue;
+ }
/* power on when no jack detection is available */
/* or when the VREF is used for controlling LED */
if (!spec->hp_detect ||
--
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/