[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.
[3.] Keywords (i.e., modules, networking, kernel): [4.] Kernel version (from /proc/version): Linux version 3.15.0-999-generic (apw@gomeisa) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #201405310205 SMP Sat May 31 06:06:08 UTC 2014 [5.] Output of Oops.. message (if applicable) with symbolic information resolved (see Documentation/oops-tracing.txt) [6.] A small shell script or example program which triggers the problem (if possible)
Codec: Analog Devices AD1984 Address: 0 AFG Function Id: 0x1 (unsol 0) Vendor Id: 0x11d41984 Subsystem Id: 0x17aa20d6 Revision Id: 0x100400 Node 0x03 [Audio Output] wcaps 0x405: Stereo Amp-Out Control: name="Headphone Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Device: name="AD1984 Analog", type="Audio", device=0 Device: name="AD1984 Alt Analog", type="Audio", device=2 Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 Amp-Out vals: [0x27 0x27] Converter: stream=0, channel=0 Power states: D0 D3 Power: setting=D0, actual=D0 Node 0x04 [Audio Output] wcaps 0x405: Stereo Amp-Out Control: name="Speaker Playback Volume", index=0, device=0 ControlAmp: chs=3, dir=Out, idx=0, ofs=0 Amp-Out caps: ofs=0x27, nsteps=0x27, stepsize=0x05, mute=0 Amp-Out vals: [0x00 0x00] Converter: stream=0, channel=0 Power states: D0 D3 Power: setting=D0, actual=D0
APLAY
**** List of PLAYBACK Hardware Devices **** card 0: Intel [HDA Intel], device 0: AD1984 Analog [AD1984 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: Intel [HDA Intel], device 2: AD1984 Alt Analog [AD1984 Alt Analog] Subdevices: 1/1 Subdevice #0: subdevice #0
==> lo_type=2, wired=1, mio=1, badness=0x0 multi_outs = 11/0/0/0 : 3/0/0/0 (type HP) out path: depth=4 :03:22:07:11 spk_outs = 12/0/0/0 : 4/0/0/0 spk path: depth=3 :04:0a:12 ==> Best config: lo_type=2, wired=1, mio=1 multi_outs = 11/0/0/0 : 3/0/0/0 (type HP) out path: depth=4 :03:22:07:11 spk_outs = 12/0/0/0 : 4/0/0/0 spk path: depth=3 :04:0a:12
Even driver can handle automute when HP is transferred to multi out (Line out type = HP )
But independent headphone assume headphone must be placed in the hp path and line out in multi_out.
Device: name="AD1984 Analog", type="Audio", device=0 Device: name="AD1984 Alt Analog", type="Audio", device=2
this mean indep_hp_possible() should return false when Line out type is not AUTO_PIN_LINE_OUT
if (cfg->line_out_type != AUTO_PIN_LINE_OUT) return false;