-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi all,
this patch (against 2.3.99-pre6) provides PCI quirk for VIA ACPI
device (same as for Intel and ALI).
Possible conflict between resource[4] and resource[7] had beed fixed.
Best wishes,
Andrey
diff -urN /mnt/d/linux/drivers/pci/quirks.c
/linux/drivers/pci/quirks.c
- --- /mnt/d/linux/drivers/pci/quirks.c Tue May 2 20:02:00 2000
+++ /linux/drivers/pci/quirks.c Sat Apr 29 21:07:42 2000
@@ -164,6 +164,23 @@
}
/*
+ * VIA ACPI: One IO region pointed to by longword at
+ * 0x48 or 0x20 (256 bytes of ACPI registers)
+ */
+static void __init quirk_via_acpi(struct pci_dev *dev)
+{
+ u8 rev;
+ u32 region;
+
+ pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev);
+ if (rev & 0x10) {
+ pci_read_config_dword(dev, 0x48, ®ion);
+ region &= PCI_BASE_ADDRESS_IO_MASK;
+ quirk_io_region(dev, region, 256,
PCI_BRIDGE_RESOURCES);
+ }
+}
+
+/*
* The main table of quirks.
*/
@@ -192,6 +209,8 @@
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_82443BX_2, quirk_natoma },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_SI,
PCI_DEVICE_ID_SI_5597, quirk_nopcipci },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_SI,
PCI_DEVICE_ID_SI_496, quirk_nopcipci },
+ { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA,
PCI_DEVICE_ID_VIA_82C586_3, quirk_via_acpi },
+ { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA,
PCI_DEVICE_ID_VIA_82C686_4, quirk_via_acpi },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_82371AB_3, quirk_piix4acpi },
{ PCI_FIXUP_FINAL, PCI_VENDOR_ID_AL,
PCI_DEVICE_ID_AL_M7101, quirk_ali7101 },
{ 0 }
diff -urN /mnt/d/linux/arch/i386/kernel/acpi.c
/linux/arch/i386/kernel/acpi.c
- --- /mnt/d/linux/arch/i386/kernel/acpi.c Tue May 2 20:01:35
2000
+++ /linux/arch/i386/kernel/acpi.c Tue May 2 14:58:54 2000
@@ -631,11 +631,7 @@
if (!(pmregmisc & ACPI_PIIX4_PMIOSE))
return -ENODEV;
- - pci_read_config_dword(dev, 0x40, &base);
- - if (!(base & PCI_BASE_ADDRESS_SPACE_IO))
- - return -ENODEV;
- -
- - base &= PCI_BASE_ADDRESS_IO_MASK;
+ base = dev->resource[PCI_BRIDGE_RESOURCES].start &
PCI_BASE_ADDRESS_IO_MASK;
if (!base)
return -ENODEV;
@@ -688,16 +684,13 @@
if (!(tmp & 0x80))
return -ENODEV;
- - pci_read_config_byte(dev, PCI_CLASS_REVISION, &tmp);
- - tmp = (tmp & 0x10 ? 0x48 : 0x20);
- -
- - pci_read_config_dword(dev, tmp, &base);
- - if (!(base & PCI_BASE_ADDRESS_SPACE_IO))
- - return -ENODEV;
- -
+ base = pci_resource_start(dev, PCI_BRIDGE_RESOURCES);
+ if (!base) {
+ base = pci_resource_start(dev, PCI_BASE_ADDRESS_4);
+ if (!base)
+ return -ENODEV;
+ }
base &= PCI_BASE_ADDRESS_IO_MASK;
- - if (!base)
- - return -ENODEV;
pci_read_config_byte(dev, 0x42, &irq);
-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.3 for non-commercial use <http://www.pgp.com>
iQA/AwUBOQ+86Kqeo+LtKnHZEQJlRwCeL32tPjeJjpc5zr7daS0PP4WgQ1wAoNbM
FqGwLVOOkpmWlfwSbubf52Pl
=mVCs
-----END PGP SIGNATURE-----
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sun May 07 2000 - 21:00:11 EST