[alsa-devel] PROBLEM: [Lenovo ThinkPad X61s] Speaker volume mutes itself in random intervals after upgrading from 3.11 to 3.15.
Takashi Iwai
tiwai at suse.de
Mon Jun 2 14:05:59 CEST 2014
At Mon, 02 Jun 2014 02:49:16 -0700,
Alex Fedora wrote:
>
> On 06/02/2014 02:15 AM, Takashi Iwai wrote:
> > At Mon, 02 Jun 2014 01:55:16 -0700,
> > Alex Fedora wrote:
> >> On 06/02/2014 01:03 AM, Takashi Iwai wrote:
> >>> At Sat, 31 May 2014 23:54:26 -0700,
> >>> Alex Fedora wrote:
> >>>> Hi,
> >>>>
> >>>> Please see problem description below. I've captured alsa info output for
> >>>> the latest kernel. Kernel just before the regression. And info from the
> >>>> kernel with the offending commit. But I had to calculate diff from first
> >>>> one to fit to 100K limit. If you want, I can send all 3 files as an
> >>>> attachments. Also the latest version of the kernel was took from
> >>>> http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/linux-image-3.15.0-999-generic_3.15.0-999.201405310205_amd64.deb
> >>>> .
> >>>>
> >>>> Thank you,
> >>>> Alex
> >>>>
> >>>> [1.] One line summary of the problem: [Lenovo ThinkPad X61s] Speaker
> >>>> volume mutes itself in random intervals after upgrade to latest kernel
> >>>> [2.] Full description of the problem/report:
> >>>>
> >>>> Speaker mutes itself in random intervals. Headphones are working fine at
> >>>> that moment. I can see what volume of the Speaker drops to 0% and then
> >>>> back to 100% using alsamixer. It seems like Internal Mic Boost also
> >>>> jumps from 100% to 0% and back. It is regression from
> >>>> 5ccc618fee67f0f0b2122dd4b32a02fd2b6a1569 (ALSA: hda - Remove static
> >>>> quirks for AD1884/1984 & variants). I've tested previous commit
> >>>> aa95d61b43e0fcb0b2ce68e5efa37174fd9e5cd3 (ALSA: hda - Remove static
> >>>> quirks for AD1882) and audio works as expected.
> >>>>
> >>>> New kernel shows two controls "Headphone Playback Volume" and "Speaker
> >>>> Playback Volume". But old one shows single control "PCM Playback
> >>>> Volume". "Speaker Playback Volume" is the one which gets muted randomly.
> >>> Are you using PulseAudio? If yes, does the problem happen without PA?
> >>> This kind of random mute/unmute tends to be an issue of bogus
> >>> headphone or mic jack detection.
> >>>
> >>>
> >>> Takashi
> >>>
> >> Hi Takashi,
> >>
> >> Yes, I'm using PulseAudio. I've removed it and issue gone away. It
> >> returned back after reinstalling it. This is still driver bug, right?
> > Yes. So PA seems confused by some bogus information by the driver.
> >
> > Try to run "alsactl monitor 0", maybe better without PA at first.
> > Do you see occasional events about the jack detection even if you
> > don't plug/unplug? And, try it also with PA.
> >
> >
> > Takashi
> >
> Yes, I can see a lot of events even if I don't plug/unplug anything.
> Even more if I'm using PA.
>
> No pulseaudio:
>
> card 0, #22 (0,0,0,Mic Jack,0) VALUE
> card 0, #23 (0,0,0,Headphone Jack,0) VALUE
> card 0, #23 (0,0,0,Headphone Jack,0) VALUE
Thanks. These are definitely bogus events. No wonder that PA gets
screwed up.
Could you try the patch below?
Takashi
---
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index 06275f8807a8..fa626648d746 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -191,7 +191,6 @@ static int ad198x_parse_auto_config(struct hda_codec *codec, bool indep_hp)
int err;
codec->spdif_status_reset = 1;
- codec->no_trigger_sense = 1;
codec->no_sticky_stream = 1;
spec->gen.indep_hp = indep_hp;
@@ -377,6 +376,8 @@ static int patch_ad1986a(struct hda_codec *codec)
/* AD1986A has the inverted EAPD implementation */
codec->inv_eapd = 1;
+ codec->no_trigger_sense = 1;
+
spec->gen.mixer_nid = 0x07;
spec->gen.beep_nid = 0x19;
set_beep_amp(spec, 0x18, 0, HDA_OUTPUT);
@@ -500,6 +501,8 @@ static int patch_ad1983(struct hda_codec *codec)
return err;
spec = codec->spec;
+ codec->no_trigger_sense = 1;
+
spec->gen.mixer_nid = 0x0e;
spec->gen.beep_nid = 0x10;
set_beep_amp(spec, 0x10, 0, HDA_OUTPUT);
@@ -588,6 +591,8 @@ static int patch_ad1981(struct hda_codec *codec)
return -ENOMEM;
spec = codec->spec;
+ codec->no_trigger_sense = 1;
+
spec->gen.mixer_nid = 0x0e;
spec->gen.beep_nid = 0x10;
set_beep_amp(spec, 0x0d, 0, HDA_OUTPUT);
@@ -913,6 +918,8 @@ static int patch_ad1988(struct hda_codec *codec)
return err;
spec = codec->spec;
+ codec->no_trigger_sense = 1;
+
spec->gen.mixer_nid = 0x20;
spec->gen.mixer_merge_nid = 0x21;
spec->gen.beep_nid = 0x10;
@@ -1140,6 +1147,8 @@ static int patch_ad1882(struct hda_codec *codec)
return err;
spec = codec->spec;
+ codec->no_trigger_sense = 1;
+
spec->gen.mixer_nid = 0x20;
spec->gen.mixer_merge_nid = 0x21;
spec->gen.beep_nid = 0x10;
More information about the Alsa-devel
mailing list