[alsa-devel] HD-audio regression after commit 34588709af61be1550b4e2bcee5c85d0ac4f34d4

Takashi Iwai tiwai at suse.de
Fri Jan 18 08:04:40 CET 2013


At Thu, 17 Jan 2013 21:40:43 +0100,
Manolo Díaz wrote:
> 
> El jue, 17 ene 2013 a las 21:16 horas
> Takashi Iwai escribió:
> 
> >At Thu, 17 Jan 2013 19:12:24 +0100,
> >Manolo Díaz wrote:
> >> 
> >> El jue, 17 ene 2013 a las 16:32 horas
> >> Takashi Iwai escribió:
> >> 
> >> >At Thu, 17 Jan 2013 09:59:20 -0500,
> >> >Miro Hodak wrote:
> >> >> 
> >> >> On Thu, Jan 17, 2013 at 7:49 AM, Raymond Yau <superquad.vortex2 at gmail.com>wrote:
> >> >> 
> >> >> >
> >> >> > >
> >> >> > > OK, now as far as Auto-Mute goes, should it do what expected when
> >> >> > enabled - i.e. muting the speakers when headphones are connected to the
> >> >> > front panel? I have tried that, does not seem to work.
> >> >> > >
> >> >> >
> >> >> > Do your computer chassis have a hda front audio panel with Jack detection ?
> >> >> >
> >> >> > The front headphone Jack should return true when headphone Jack is plugged
> >> >> >
> >> >> > control.35 {
> >> >> > iface CARD
> >> >> > name 'Front Headphone Jack'
> >> >> >
> >> >> > value false
> >> >> > comment {
> >> >> > access read
> >> >> > type BOOLEAN
> >> >> > count 1
> >> >> > }
> >> >> > }
> >> >> >
> >> >> > All ADI codecs support impedance measurement
> >> >> >
> >> >> > Try the modified hda-jack-sense-test which need hda-analyzer
> >> >> >
> >> >> > http://thread.gmane.org/gmane.linux.alsa.devel/90911/focus=91115
> >> >> >
> >> >> 
> >> >> Hmmm, ran into some python issues. Even hda-analyzer itself is not working:
> >> >> ...
> >> >> File "/dev/shm/hda-analyzer/hda_proc.py", line 143, in wrongfile
> >> >>     raise ValueError, "wrong proc file format (%s)" % msg
> >> >> ValueError: wrong proc file format (integer decode 'State of AFG node
> >> >> 0x01:' ('Node '))
> >> >
> >> >Ah, it's a new proc file entry that has been added recently.
> >> >hda-analyzer needs to be fixed.
> >> >
> >> >In anyway, only for checking the presence unsolicited events, you can
> >> >do without extra program.  Suppose you built your kernel with the
> >> >tracing support.  See "Tracepoints" option in
> >> >Documentation/sound/alsa/HD-Audio.txt.
> >> >
> >> >  # echo 1 > /sys/kernel/debug/tracing/events/hda/hda_unsol_event/enable
> >> >
> >> >  (plug and unplug your headphone jacks)
> >> >
> >> >  # cat /sys/kernel/debug/tracing/trace
> >> >
> >> >If you see some hda_unsol_event lines there, it implies that the jack
> >> >detection basically works in hardware level.
> >> >
> >> >
> >> >Takashi
> >> 
> >> I Suppose that when auto-mute is enabled an HP independent is disabled,
> >> inserting the HP jack should disable sound from front speakers. If so
> >> then auto-mute doesn't work. Jack insertion/extraction events are well
> >> detected for front speakers and HP.
> >> 
> >> #~ cat /sys/kernel/debug/tracing/trace
> >> # tracer: nop
> >> #
> >> # entries-in-buffer/entries-written: 4/4   #P:2
> >> #
> >> #                              _-----=> irqs-off
> >> #                             / _----=> need-resched
> >> #                            | / _---=> hardirq/softirq
> >> #                            || / _--=> preempt-depth
> >> #                            ||| /     delay
> >> #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
> >> #              | |       |   ||||       |         |
> >>           <idle>-0     [001] d.h.   137.881919: hda_unsol_event: [0] res=8000000, res_ex=10
> >>           <idle>-0     [001] d.h.   162.511102: hda_unsol_event: [0] res=8000000, res_ex=10
> >>           <idle>-0     [001] d.h.   246.529813: hda_unsol_event: [0] res=4000000, res_ex=10
> >>           <idle>-0     [001] d.h.   272.381719: hda_unsol_event: [0] res=4000000, res_ex=10
> >> 
> >> branch tested: test/hda-gen-parser
> >
> >Please test with either master or test/hda-migrate branch.
> >test/hda-gen-parser branch doesn't contain the patch for AD codecs.
> >
> >In anyway, please attach alsa-info.sh outputs before and after
> >plugging the headphone with the latest sound-unstable tree (and a
> >proper branch).
> >
> >
> >thanks,
> >
> >Takashi
> 
> branch tested: master
> 
> commit d89012bef4ad6d33c1050dd2924f010f5072ff52
> Merge: ad92fbe 36c9db7
> Author: Takashi Iwai <tiwai at suse.de>
> Date:   Thu Jan 17 17:47:19 2013 +0100
> 
> Just the same: auto-mute doesn't work.
> 
> alsa-info output show no differences (attached).

Thanks.  It turned out that simply missing unsol_event handlers in the
codec driver code.  The patch below should fix the issue.  It's
already merged in test/hda-migrate and master branches.


Takashi

---
From: Takashi Iwai <tiwai at suse.de>
Subject: [PATCH] ALSA: hda - Fix missing unsol event handler in some codec
 drivers

This resulted in non-working auto-mute behavior, of course...

Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 sound/pci/hda/patch_analog.c | 1 +
 sound/pci/hda/patch_ca0110.c | 1 +
 sound/pci/hda/patch_cmedia.c | 1 +
 3 files changed, 3 insertions(+)

diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 02fe0d1..6feaec4 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -595,6 +595,7 @@ static const struct hda_codec_ops ad198x_auto_patch_ops = {
 	.build_pcms = snd_hda_gen_build_pcms,
 	.init = snd_hda_gen_init,
 	.free = ad198x_free,
+	.unsol_event = snd_hda_jack_unsol_event,
 #ifdef CONFIG_PM
 	.check_power_status = snd_hda_gen_check_power_status,
 	.suspend = ad198x_suspend,
diff --git a/sound/pci/hda/patch_ca0110.c b/sound/pci/hda/patch_ca0110.c
index 8d09325..db7635c 100644
--- a/sound/pci/hda/patch_ca0110.c
+++ b/sound/pci/hda/patch_ca0110.c
@@ -36,6 +36,7 @@ static const struct hda_codec_ops ca0110_patch_ops = {
 	.build_pcms = snd_hda_gen_build_pcms,
 	.init = snd_hda_gen_init,
 	.free = snd_hda_gen_free,
+	.unsol_event = snd_hda_jack_unsol_event,
 };
 
 static int ca0110_parse_auto_config(struct hda_codec *codec)
diff --git a/sound/pci/hda/patch_cmedia.c b/sound/pci/hda/patch_cmedia.c
index 04dd3b6..087cabb 100644
--- a/sound/pci/hda/patch_cmedia.c
+++ b/sound/pci/hda/patch_cmedia.c
@@ -576,6 +576,7 @@ static const struct hda_codec_ops cmi_auto_patch_ops = {
 	.build_pcms = snd_hda_gen_build_pcms,
 	.init = snd_hda_gen_init,
 	.free = snd_hda_gen_free,
+	.unsol_event = snd_hda_jack_unsol_event,
 };
 
 static int cmi_parse_auto_config(struct hda_codec *codec)
-- 
1.8.1



More information about the Alsa-devel mailing list