[PATCH] PCI quirk for VIA ACPI device (updated)

From: Andrey Panin (pazke@orbita.don.sitek.net)
Date: Wed May 03 2000 - 03:45:12 EST


-----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, &region);
+ 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