[alsa-devel] regression: from 3.8 to 3.9: headphones output no sound on Intel HDA, codec VIA VT1802

Takashi Iwai tiwai at suse.de
Tue May 14 07:59:07 CEST 2013


At Mon, 13 May 2013 20:24:42 +0200,
Alex Riesen wrote:
> 
> On Mon, May 13, 2013 at 5:53 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > At Mon, 13 May 2013 17:26:04 +0200, Takashi Iwai wrote:
> >> At Sun, 12 May 2013 11:53:41 +0200, Alex Riesen wrote:
> >> >
> >> > I just noticed (use the headphones rarely) that the headphones on this
> >> > System76 Lemur Ultra (lemu4) stopped working. There is absolutely no
> >> > output.
> >> >
> >>
> >> It's strange that the pin 0x25 shows EAPD 0x00 and pin-control 0x00.
> >> They should be 0x02 and 0xc0 constantly.  Is it taken at the moment
> >> the headphone is plugged, right?  Please give alsa-info.sh outputs at
> >> both the headphone plugged and unplugged.
> 
> Attached. Sorry for gzipping, the alsa-devel rejects two at a time: too large.
> 
> >> Could you check whether changing them makes the headphone output
> >> working?  For example, get hda-verb program (see
> >> Documentation/sound/alsa/HD-Audio.txt) and run it like
> >>
> >>       hda-verb /dev/snd/hwC0D0 0x25 SET_PIN_WID 0xc0
> >>       hda-verb /dev/snd/hwC0D0 0x25 SET_EAPD 0x02
> 
> It helps, headphones start working.
> 
> > Also, what happens if you apply the patch below?
> > -       spec->set_widgets_power_state =  set_widgets_power_state_vt2002P;
> > +       //spec->set_widgets_power_state =  set_widgets_power_state_vt2002P;
> 
> This helps as well. Yay!
> Thanks :) Whatever the outcome, I have them back more or less (more,
> for me) properly.

OK, then we know the place to fix now.
Try the patch below instead.  Does it fix the problem as well?

> Probably unrelated, but I better mention it anyway: the "Auto-Mute Mode"
> works strangely, it never mutes anything but headphones. It might work
> as designed, but it is useless in this case: one still has to mute the
> speaker manually when plugging headphones (or do something with input
> events, which I failed to get to work).

Does the problem still happen with the patch?

> And "Independent HP" has absolutely no effect, which is probably as it
> should be on this laptop.

With the independent HP turned on, there should be no output to the
headphone through the normal PCM.  There is a secondary PCM device,
and this is routed to the headphone when the independent HP is on.


thanks,

Takashi

---
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index e0dadcf..09fd395 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -1410,6 +1410,7 @@ static void set_widgets_power_state_vt2002P(struct hda_codec *codec)
 	/* outputs */
 	/* AOW0 (8h)*/
 	update_power_state(codec, 0x8, parm);
+	update_power_state(codec, 0x9, parm);
 
 	if (spec->codec_type == VT1802) {
 		/* PW4 (28h), MW4 (18h), MUX4(38h) */
@@ -1439,16 +1440,14 @@ static void set_widgets_power_state_vt2002P(struct hda_codec *codec)
 		update_power_state(codec, 0x35, parm);
 	}
 
-	if (spec->gen.indep_hp_enabled)
-		update_power_state(codec, 0x9, AC_PWRST_D0);
-
 	/* Class-D */
 	/* PW0 (24h), MW0(18h/14h), MUX0(34h) */
 	present = snd_hda_jack_detect(codec, 0x25);
 
 	parm = AC_PWRST_D3;
 	set_pin_power_state(codec, 0x24, &parm);
-	parm = present ? AC_PWRST_D3 : AC_PWRST_D0;
+	if (parm == AC_PWRST_D0)
+		parm = present ? AC_PWRST_D3 : AC_PWRST_D0;
 	if (spec->codec_type == VT1802)
 		update_power_state(codec, 0x14, parm);
 	else


More information about the Alsa-devel mailing list