From patchwork Fri May 27 06:53:19 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Henningsson X-Patchwork-Id: 97657 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from chlorine.canonical.com (chlorine.canonical.com [91.189.94.204]) by ozlabs.org (Postfix) with ESMTP id BD0F7B6F6E for ; Fri, 27 May 2011 16:53:44 +1000 (EST) Received: from localhost ([127.0.0.1] helo=chlorine.canonical.com) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1QPqvF-0001ad-3J; Fri, 27 May 2011 06:53:25 +0000 Received: from adelie.canonical.com ([91.189.90.139]) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1QPqvB-0001aY-Eu for kernel-team@lists.ubuntu.com; Fri, 27 May 2011 06:53:21 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by adelie.canonical.com with esmtp (Exim 4.71 #1 (Debian)) id 1QPqvB-0005YE-82; Fri, 27 May 2011 06:53:21 +0000 Received: from c-83-233-18-148.cust.bredband2.com ([83.233.18.148] helo=[192.168.8.102]) by youngberry.canonical.com with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1QPqvA-0005uu-Qb; Fri, 27 May 2011 06:53:21 +0000 Message-ID: <4DDF4A5F.8020700@canonical.com> Date: Fri, 27 May 2011 08:53:19 +0200 From: David Henningsson User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110424 Thunderbird/3.1.10 MIME-Version: 1.0 To: 741825@bugs.launchpad.net, kernel-team@lists.ubuntu.com, Chris Van Hoof , Chris Gregan , Steve Magoun Subject: Bug 741825 (Broken recording/jack sense on recent ATI/AMD chipsets) - next step X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.13 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kernel-team-bounces@lists.ubuntu.com Errors-To: kernel-team-bounces@lists.ubuntu.com So, as some of you know, I've been working with bug 741825 for a while and thanks to our OEM/HWE team we're now quite certain that running an upstream snapshot of the alsa driver modules solves the problem. I'm now trying to SRU this into Natty. I'm attaching three fixes which I believe is what's needed to apply on top of natty to fix this problem, but I'd like verification. Note that nr 2 is to enable the Hudson chipset, which is also baked into this issue. Testing is easiest done using the following procedure: 1) Start off with a fresh Natty install with nothing but natty-updates installed. In particular, make sure the latest ALSA drivers are *not* installed (modinfo snd-hda-codec should say /lib/modules/2.6.38-8-generic/kernel/sound/pci/hda/snd-hda-codec.ko) 2) Install the attached deb and reboot. 3) Test both internal and external mic. Even though mics should autoswitch for the three below (I think), make sure the right mic is selected in gnome-volume-control so you control the volume of the right input. Testing for a larger period of time doesn't hurt here, e g you could leave gnome-volume-control on the input tab, go away a few minutes, then come back and notice that the level bar is still moving when you speak into the microphone. 4) When the above test is done, also test automute (speaker mutes when headphones plugged in). This is something that could start to fail after a while which is why this test should be done after the previous test. 5) If the machine does not work, please supply the output of "cat /proc/interrupts" and an alsa-info (wiki.ubuntu.com/Audio/AlsaInfo). If I'd make a wish, I'd like this to be tested on * One or two machines with the SB700/SB800 chipset * One or two machines with the Hudson chipset * One or two machines with an older ATI chipset, as this might impact them as well. This is to test for regressions, although I suspect that we actually improve the situation for them as well. Again, thanks for helping out! From 1547a9094c11baf60bb19b1e6dcb22778ee05e11 Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 26 Apr 2011 15:25:02 +0200 Subject: [PATCH 3/3] ALSA: hda - Enable sync_write workaround for AMD generically Backport for d507cd668a3f6d07 upstream. The workaround for AMD chipset via sync_write flag seems needed for machines with Realtek codecs. So, it's better to activate it generically in hda_intel.c from the beginning. Signed-off-by: David Henningsson Signed-off-by: Takashi Iwai --- sound/pci/hda/hda_intel.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 5fd012b..c9fb18e 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1449,6 +1449,17 @@ static int __devinit azx_codec_create(struct azx *chip, const char *model) } } + /* AMD chipsets often cause the communication stalls upon certain + * sequence like the pin-detection. It seems that forcing the synced + * access works around the stall. Grrr... + */ + if (chip->pci->vendor == PCI_VENDOR_ID_AMD || + chip->pci->vendor == PCI_VENDOR_ID_ATI) { + snd_printk(KERN_INFO SFX "Enable sync_write for AMD chipset\n"); + chip->bus->sync_write = 1; + chip->bus->allow_bus_reset = 1; + } + /* Then create codec instances */ for (c = 0; c < max_slots; c++) { if ((chip->codec_mask & (1 << c)) & chip->codec_probe_mask) { -- 1.7.4.1