(Sorry for removing some CC people from this mail, seems to be a mail problem at this end)
2011-10-18 10:46, Takashi Iwai skrev:
At Tue, 18 Oct 2011 10:38:06 +0200, Éric Piel wrote:
Op 18-10-11 10:23, Takashi Iwai schreef:
At Tue, 18 Oct 2011 10:10:14 +0200, Éric Piel wrote:
:
If that commit affects, the best fix would be to give a quirk specific to your device. Try to pass either position_fix=1 or position_fix=2. Only one of them should work (likely 2).
After checking it, you can add it to position_fix_list[] in sound/pci/hda/hda_intel.c together with PCI SSID.
Hello, Thanks for the quick response. Indeed forcing position_fix=1 does fix the bug. I'll not try to make a patch for my device.
Hm, interesting. So, in your case, the position-buffer exists and reports some valid values, but the values are sloppy actually. It's hard to detect in the driver, unfortunately. The relevant commit (and its original fix) were the attempts to detect better, but it seems that it fails...
FWIW, the patch below is what I'm committing to the tree.
I'm wondering if quirking this based on PCI Vendor-ID would be better than PCI SSID. After all, a broken position buffer should be more of a controller chip problem than a controller/codec/config problem, right?
From: Takashi Iwaitiwai@suse.de Subject: [PATCH] ALSA: hda - Add position_fix quirk for Dell Inspiron 1010
The previous fix for the position-buffer check gives yet another regression on a Dell laptop. The safest fix right now is to add a static quirk for this device (and better to apply it for stable kernels too).
Reported-by: Éric PielEric.Piel@tremplin-utc.net Cc:stable@kernel.org Signed-off-by: Takashi Iwaitiwai@suse.de
sound/pci/hda/hda_intel.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index e9a2a87..191284a 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2370,6 +2370,7 @@ static int azx_dev_free(struct snd_device *device) static struct snd_pci_quirk position_fix_list[] __devinitdata = { SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB), SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB),
- SND_PCI_QUIRK(0x1028, 0x02c6, "Dell Inspiron 1010", POS_FIX_LPIB),
As seen here there are several relatively similar IDs - even more reason to suspect they share the same controller chip perhaps?
// David