lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <s5h1u97jik9.wl%tiwai@suse.de>
Date:	Thu, 16 May 2013 13:00:22 +0200
From:	Takashi Iwai <tiwai@...e.de>
To:	Alex Riesen <raa.lkml@...il.com>
Cc:	alsa-devel@...a-project.org,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: regression: from 3.8 to 3.9: headphones output no sound on Intel HDA, codec VIA VT1802

At Wed, 15 May 2013 22:17:23 +0200,
Alex Riesen wrote:
> 
> On Wed, May 15, 2013 at 7:20 AM, Takashi Iwai <tiwai@...e.de> wrote:
> >> > The below is the revised patch, fixing not only for VT1802 but other
> >> > VIA codecs, too.  Please let me know if it works.
> >>
> >> With this patch headphones work, but Auto-Mute is inverted, as it was before.
> >
> > OK, could you give again alsa-info.sh outputs at HP plugged and
> > unplugged?
> 
> Attached.
> 
> Sadly, I must have made a mistake when testing last time (either that,
> or it broke all by itself): the revised patch also does not work, same
> as the previous: no output at all, even on the alternate PCM.

Ah, then the attached files are basically useless, unfortunately.

So, we need to disable the widgets power control in patch_via.c
completely as a quick workaround.  Could you check whether the patch
below is OK (except for the possible headphone mute issue)?
 
Regarding the headphone mute: after confirming the headphone itself
is working with the patch, please give alsa-info.sh outputs again
with and without the headphone plug.

Then, at the headphone plugged (and the speaker is still audible
wrongly), take a look at /proc/asound/card0/codec#0 file.
Look for "Node 0x24", and check whether Pin-ctls item shows 0x00.
If 0x00, it means that the driver behaves correctly, but the
hardware reacts unexpectedly -- it produces the sound even though
the pin control is cleared.
OTOH, if it's 0x40, then the driver didn't do it right.

In the former case (0x00), try to run like:

   hda-verb /dev/snd/hwC0D0 0x24 SET_EAPD 0x01

Does it mute the speaker?  If not, make it back via

   hda-verb /dev/snd/hwC0D0 0x24 SET_EAPD 0x03

then turn to D3 via

   hda-verb /dev/snd/hwC0D0 0x24 SET_POWER 0x03

Does this mute?  In return, after unplug, it may still be muted.
In that case, try to power up the pin again via

   hda-verb /dev/snd/hwC0D0 0x24 SET_POWER 0x00


thanks,

Takashi

---
From: Takashi Iwai <tiwai@...e.de>
Subject: [PATCH] ALSA: hda - Disable broken PM setup for VIA codecs

The set_widgets_power_state_*() callbacks in patch_via.c are converted
to evaluate spec->gen.indep_hp_enabled when the codec parser was
switched to use the generic parser.  However, the generic parser takes
the headphone paths in a different way as the original VIA parser; it
tries the paths with individual DACs as much as possible.  This ended
up with the incorrect check of the power status in the HP paths,
resulting in the silent output from the headphones.

As a band-aid fix, temporarily disable the callback calls.

Reported-by: Alex Riesen <raa.lkml@...il.com>
Cc: <stable@...r.kernel.org> [v3.9+]
Signed-off-by: Takashi Iwai <tiwai@...e.de>
---
 sound/pci/hda/patch_via.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index e0dadcf..7ee44a2 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -231,9 +231,11 @@ static void vt1708_update_hp_work(struct hda_codec *codec)
 
 static void set_widgets_power_state(struct hda_codec *codec)
 {
+#if 0 /* FIXME: mismatching with the mapping by the generic parser */
 	struct via_spec *spec = codec->spec;
 	if (spec->set_widgets_power_state)
 		spec->set_widgets_power_state(codec);
+#endif
 }
 
 static void update_power_state(struct hda_codec *codec, hda_nid_t nid,
-- 
1.8.2.1

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ