]>
Commit | Line | Data |
---|---|---|
d6b4d2a5 JR |
1 | --- ../kernel-2.4.20.orig/linux-2.4.20/drivers/pci/quirks.c 2003-01-27 16:58:29.000000000 -0500 |
2 | +++ linux-2.4.20/drivers/pci/quirks.c 2003-01-27 17:13:22.000000000 -0500 | |
3 | @@ -615,6 +615,25 @@ | |
4 | } | |
5 | } | |
6 | ||
7 | + | |
8 | +static void __init quirk_serverworks_writeoverlap(struct pci_dev *dev) | |
9 | +{ | |
10 | + /* extended memory controller configuration register 0 */ | |
11 | + static const int emccr = 0xCD; | |
12 | + static const u8 wovl = (1 << 1); /* Write Overlap Enable bit */ | |
13 | + u8 tmp; | |
14 | + | |
15 | + /* this is multi-function PCI device, only apply fixup to function 0 */ | |
16 | + if (PCI_FUNC(dev->devfn)) | |
17 | + return; | |
18 | + | |
19 | + pci_read_config_byte(dev, emccr, &tmp); | |
20 | + if (tmp & wovl) { | |
21 | + tmp &= ~wovl; /* clear Write Overlap Enable */ | |
22 | + pci_write_config_byte(dev, emccr, tmp); | |
23 | + } | |
24 | +} | |
25 | + | |
26 | /* | |
27 | * The main table of quirks. | |
28 | */ | |
29 | @@ -661,6 +680,7 @@ | |
30 | { PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_2, quirk_piix3_usb }, | |
31 | { PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_2, quirk_piix3_usb }, | |
32 | { PCI_FIXUP_FINAL, PCI_ANY_ID, PCI_ANY_ID, quirk_cardbus_legacy }, | |
33 | + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_SERVERWORKS, 0x0014, quirk_serverworks_writeoverlap }, | |
34 | ||
35 | #ifdef CONFIG_X86_IO_APIC | |
36 | { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic }, |