lkml.org 
[lkml]   [2001]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.4.4 Sound corruption [PATCH] NEW, ignore previous patch
Please IGNORE the previous patch, it was faulty (I blame it on the time of
day). The one attached with this is guaranteed to be perfect(tm).

On Mon, Apr 30, 2001 at 03:06:26AM +0200, Charl P. Botha wrote:
> Attached is a patch to the quirks.c in linux kernel 2.4.4 that fixes the
> sound corruption problem (thanks to Dan Hollis for the info). Do I have to
> send this anywhere else as well?

--
charl p. botha | computer graphics and cad/cam
http://cpbotha.net/ | http://www.cg.its.tudelft.nl/
--- quirks.c-2.4.4 Mon Apr 30 01:50:36 2001
+++ quirks.c Mon Apr 30 03:54:08 2001
@@ -88,23 +88,44 @@
* VIA Apollo KT133 needs PCI latency patch
* Made according to a windows driver based patch by George E. Breese
* see PCI Latency Adjust on http://www.viahardware.com/download/viatweak.shtm
+ * Also see http://home.tiscalinet.de/au-ja/review-kt133a-1-en.html for
+ * the info on which Mr Breese based his work.
*/
static void __init quirk_vialatency(struct pci_dev *dev)
{
u8 r70;
-
- printk(KERN_INFO "Applying VIA PCI latency patch.\n");
- /*
- * In register 0x70, mask off bit 2 (PCI Master read caching)
- * and 1 (Delay Transaction)
+ u8 rev;
+ struct pci_dev *vt82c686;
+
+
+ /* we want to look for a VT82C686 south bridge, and then apply the via latency
+ * patch if we find that it's a 686B (by revision) <cpbotha@ieee.org>
*/
- pci_read_config_byte(dev, 0x70, &r70);
- r70 &= 0xf9;
- pci_write_config_byte(dev, 0x70, r70);
- /*
- * Turn off PCI Latency timeout (set to 0 clocks)
- */
- pci_write_config_byte(dev, 0x75, 0x80);
+ vt82c686 = pci_find_device(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, NULL);
+ if (vt82c686)
+ {
+ pci_read_config_byte(vt82c686, PCI_CLASS_REVISION, &rev);
+ /* 0x40 - 0x4f == 686B, 0x10 - 0x2f == 686A; thanks Dan Hollis */
+ if (rev >= 0x40 && rev <= 0x4f)
+ {
+ printk(KERN_INFO "Applying VIA PCI latency patch (found VT82C686B).\n");
+ /*
+ * In register 0x70, mask off bit 2 (PCI Master read caching)
+ * and 1 (Delay Transaction)
+ */
+ pci_read_config_byte(dev, 0x70, &r70);
+ r70 &= 0xf9;
+ pci_write_config_byte(dev, 0x70, r70);
+ /*
+ * Turn off PCI Latency timeout (set to 0 clocks)
+ */
+ pci_write_config_byte(dev, 0x75, 0x80);
+ }
+ else
+ {
+ printk(KERN_INFO "Found VT82C686A, not applying VIA latency patch.\n");
+ }
+ } /* if (vt82c686) ... */
}

/*
\
 
 \ /
  Last update: 2005-03-22 12:52    [W:0.049 / U:0.512 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site