diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-01-21 22:34:01 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-01-21 22:34:01 +0000 |
commit | 9e30c3705aed9fbec4c3304570e4d6e707856bcb (patch) | |
tree | b19e6acb5a67af31a4e7742e05c2166dc3f1444c /drivers/pci | |
parent | 72919904796333a20c6a5d5c380091b42e407aa9 (diff) |
Merge with Linux 2.3.22.
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/devlist.h | 9 | ||||
-rw-r--r-- | drivers/pci/pcisyms.c | 2 | ||||
-rw-r--r-- | drivers/pci/quirks.c | 54 |
3 files changed, 61 insertions, 4 deletions
diff --git a/drivers/pci/devlist.h b/drivers/pci/devlist.h index 276ae40df..6077bc8a5 100644 --- a/drivers/pci/devlist.h +++ b/drivers/pci/devlist.h @@ -1,4 +1,5 @@ VENDOR( COMPAQ, "Compaq" ) + DEVICE( COMPAQ, COMPAQ_TOKENRING, "Token Ring 4/16") DEVICE( COMPAQ, COMPAQ_1280, "QVision 1280/p") DEVICE( COMPAQ, COMPAQ_SMART2P, "Smart-2/P RAID Controller") DEVICE( COMPAQ, COMPAQ_NETEL100,"Netelligent 10/100") @@ -486,6 +487,10 @@ VENDOR( MACRONIX, "Macronix" ) DEVICE( MACRONIX, MACRONIX_MX987x5,"MX98715 / MX98725") ENDVENDOR() +VENDOR( TCONRAD, "Thomas-Conrad" ) + DEVICE( TCONRAD, TCONRAD_TOKENRING, "Token Ring 4/16") +ENDVENDOR() + VENDOR( CERN, "CERN" ) DEVICE( CERN, CERN_SPSB_PMC, "STAR/RD24 SCI-PCI (PMC)") DEVICE( CERN, CERN_SPSB_PCI, "STAR/RD24 SCI-PCI (PMC)") @@ -989,10 +994,6 @@ VENDOR( ATRONICS, "Atronics" ) DEVICE( ATRONICS, ATRONICS_2015, "IDE-2015PL") ENDVENDOR() -VENDOR( EXSYS, "Exsys" ) - DEVICE( EXSYS, EXSYS_4014, "EX-4014") -ENDVENDOR() - VENDOR( TIGERJET, "TigerJet" ) DEVICE( TIGERJET, TIGERJET_300, "Tiger300 ISDN") ENDVENDOR() diff --git a/drivers/pci/pcisyms.c b/drivers/pci/pcisyms.c index d1dcbef71..030e36f3d 100644 --- a/drivers/pci/pcisyms.c +++ b/drivers/pci/pcisyms.c @@ -43,3 +43,5 @@ EXPORT_SYMBOL(pcibios_find_device); /* Quirk info */ EXPORT_SYMBOL(isa_dma_bridge_buggy); +EXPORT_SYMBOL(pci_pci_problems); + diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index d25a0ed29..3a2ae4599 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -56,6 +56,47 @@ static void __init quirk_isa_dma_hangs(struct pci_dev *dev) } } +int pci_pci_problems = 0; + +/* + * Chipsets where PCI->PCI transfers vanish or hang + */ + +static void __init quirk_nopcipci(struct pci_dev *dev) +{ + if((pci_pci_problems&PCIPCI_FAIL)==0) + { + printk(KERN_INFO "Disabling direct PCI/PCI transfers.\n"); + pci_pci_problems|=PCIPCI_FAIL; + } +} + +/* + * Triton requires workarounds to be used by the drivers + */ + +static void __init quirk_triton(struct pci_dev *dev) +{ + if((pci_pci_problems&PCIPCI_TRITON)==0) + { + printk(KERN_INFO "Limiting direct PCI/PCI transfers.\n"); + pci_pci_problems|=PCIPCI_TRITON; + } +} + +/* + * Natoma has some interesting boundary conditions with Zoran stuff + * at least + */ + +static void __init quirk_natoma(struct pci_dev *dev) +{ + if((pci_pci_problems&PCIPCI_NATOMA)==0) + { + printk(KERN_INFO "Limiting direct PCI/PCI transfers.\n"); + pci_pci_problems|=PCIPCI_NATOMA; + } +} /* * S3 868 and 968 chips report region size equal to 32M, but they decode 64M. @@ -79,6 +120,7 @@ static void __init quirk_s3_64M(struct pci_dev *dev) static struct pci_fixup pci_fixups[] __initdata = { { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release }, /* * Its not totally clear which chipsets are the problematic ones * We know 82C586 and 82C596 variants are affected. @@ -88,6 +130,18 @@ static struct pci_fixup pci_fixups[] __initdata = { { PCI_FIXUP_FINAL, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C596, quirk_isa_dma_hangs }, { PCI_FIXUP_HEADER, PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M }, { PCI_FIXUP_HEADER, PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437, quirk_triton }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437VX, quirk_triton }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82439, quirk_triton }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82439TX, quirk_triton }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_natoma }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443LX_0, quirk_natoma }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443LX_1, quirk_natoma }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_0, quirk_natoma }, + { PCI_FIXUP_FINAL, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443BX_1, quirk_natoma }, + { 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 }, { 0 } }; |