Kernel Bug Tracker – Bug 66321
AD1984A Unable to produce sound after updating to 3.12.0
Last modified: 2013-12-02 12:31:55 UTC
Everything works perfectly on 3.11.6 but after I update to 3.12.0 (now 3.12.2), my integrated sound card (which is AD1984A) can no longer produce any sound. I used roughly the same configuration for 3.11 and 3.12, and no matter how I change them, I am unable to get sound under 3.12.
When I try to list the audio devices, it is noticeable that although the device is identified correctly, a second fake device is also discovered with the name ...AD1984A alt ...(cannot remember exactly now since I find a temporary solution)
My temporary solution is to replace sound/pci/hda/patch_analog.c with the one from 3.11.6.
Anyone can help?
Please give alsa-info.sh output. Run it with --no-upload option and attach to bugzilla (don't paste).
Also, at best, give alsa-info.sh outputs on both working and non-working kernels, so that we can compare the results easily.
Created attachment 117131 [details]
alsa-info under 3.12.2 which is not producing sound
Created attachment 117141 [details]
alsa-info under modified 3.12.2 with files from 3.11.6, working normally
Through a quick glance, the major differences are EAPD on each output pin.
Try the following:
hda-verb /dev/snd/hwC0D0 0x16 SET_EAPD 0x00
hda-verb /dev/snd/hwC0D0 0x12 SET_EAPD 0x00
BTW, "PCM Playback Volume" is set relatively low in your setup. Try to adjust it to 0dB.
amixer -c0 set PCM 0dB
Also, which output are you testing? Don't both speaker and headphone outputs work?
Yet another thing to test. The following might be needed for HP machines, too:
hda-verb /dev/snd/hwC0D0 0x1c SET_PIN_WID 0x40
If the EAPD change in comment 5 doesn't give any difference, try this instead.
Thank you very much for the prompt reply.
After I performed the setting for EAPD, I can finally hear a faint sound. Although under 3.11.6, this setting will produce sufficient volume.
Now pushing everything to maximum will produce acceptable volume.
Thank you again for solving this problem for me!
Good to hear. Now need to understand what's really going wrong, and need to modify the driver accordingly...
Which command did fix the issue actually? The one for 0x16 or for 0x12?
In 3.11.x, EAPD on 0x16 is turned on/off dynamically per the headphone plugging, but EAPD on 0x12 is untouched.
You can turn each of them on by writing 0x20, e.g.
hda-verb /dev/snd/hwC0D0 0x12 SET_EAPD 0x20
so you'll be able to figure out which setup breaks which output.
Upon testing, it should be 0x12 that breaks the output
Wish this could help
OK, could you check whether the patch below fixes the problem with 3.12.x?
Created attachment 117151 [details]
Test fix patch
(BTW please don't change to RESOLVED/CODE_FIX, as we didn't fix any code yet :)
recompiled the kernel with this fix, now working perfectly
Thanks for a quick check. The patch is merged now, so finally we can close as CODE_FIX :)