Re: regression: from 3.8 to 3.9: headphones output no sound on Intel HDA, codec VIA VT1802

From: Takashi Iwai
Date: Tue May 14 2013 - 01:59:16 EST


At Mon, 13 May 2013 20:24:42 +0200,
Alex Riesen wrote:
>
> On Mon, May 13, 2013 at 5:53 PM, Takashi Iwai <tiwai@xxxxxxx> 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
--
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/