summaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/oldproc.c33
-rw-r--r--drivers/pci/pci.c8
-rw-r--r--drivers/pci/pcisyms.c8
-rw-r--r--drivers/pci/quirks.c28
4 files changed, 67 insertions, 10 deletions
diff --git a/drivers/pci/oldproc.c b/drivers/pci/oldproc.c
index 5134a129f..4d17639d9 100644
--- a/drivers/pci/oldproc.c
+++ b/drivers/pci/oldproc.c
@@ -139,7 +139,11 @@ struct pci_dev_info dev_info[] = {
DEVICE( MATROX, MATROX_MYS, "Mystique"),
DEVICE( MATROX, MATROX_MIL_2, "Millennium II"),
DEVICE( MATROX, MATROX_MIL_2_AGP,"Millennium II AGP"),
+ DEVICE( MATROX, MATROX_G200_PCI,"Matrox G200 PCI"),
+ DEVICE( MATROX, MATROX_G200_AGP,"Matrox G200 AGP"),
DEVICE( MATROX, MATROX_MGA_IMP, "MGA Impression"),
+ DEVICE( MATROX, MATROX_G100_MM, "Matrox G100 multi monitor"),
+ DEVICE( MATROX, MATROX_G100_AGP,"Matrox G100 AGP"),
DEVICE( CT, CT_65545, "65545"),
DEVICE( CT, CT_65548, "65548"),
DEVICE( CT, CT_65550, "65550"),
@@ -158,8 +162,8 @@ struct pci_dev_info dev_info[] = {
DEVICE( SI, SI_496, "85C496"),
DEVICE( SI, SI_601, "85C601"),
DEVICE( SI, SI_5107, "5107"),
- DEVICE( SI, SI_5511, "85C5511"),
- DEVICE( SI, SI_5513, "85C5513"),
+ DEVICE( SI, SI_5511, "85C5511"),
+ DEVICE( SI, SI_5513, "85C5513"),
DEVICE( SI, SI_5571, "5571"),
DEVICE( SI, SI_5591, "5591/5592 Host"),
DEVICE( SI, SI_5597, "5597/5598 Host"),
@@ -249,6 +253,8 @@ struct pci_dev_info dev_info[] = {
DEVICE( VISION, VISION_QD8580, "QD-8580"),
DEVICE( BROOKTREE, BROOKTREE_848, "Bt848"),
DEVICE( BROOKTREE, BROOKTREE_849A, "Bt849"),
+ DEVICE( BROOKTREE, BROOKTREE_878_1,"Bt878 2nd Contr. (?)"),
+ DEVICE( BROOKTREE, BROOKTREE_878, "Bt878"),
DEVICE( BROOKTREE, BROOKTREE_8474, "Bt8474"),
DEVICE( SIERRA, SIERRA_STB, "STB Horizon 64"),
DEVICE( ACC, ACC_2056, "2056"),
@@ -325,6 +331,7 @@ struct pci_dev_info dev_info[] = {
DEVICE( VIA, VIA_82C586_0, "VT 82C586 Apollo ISA"),
DEVICE( VIA, VIA_82C595, "VT 82C595 Apollo VP2"),
DEVICE( VIA, VIA_82C597_0, "VT 82C597 Apollo VP3"),
+ DEVICE( VIA, VIA_82C598_0, "VT 82C598 Apollo MVP3"),
DEVICE( VIA, VIA_82C926, "VT 82C926 Amazon"),
DEVICE( VIA, VIA_82C416, "VT 82C416MV"),
DEVICE( VIA, VIA_82C595_97, "VT 82C595 Apollo VP2/97"),
@@ -332,6 +339,8 @@ struct pci_dev_info dev_info[] = {
DEVICE( VIA, VIA_82C586_3, "VT 82C586B Apollo ACPI"),
DEVICE( VIA, VIA_86C100A, "VT 86C100A"),
DEVICE( VIA, VIA_82C597_1, "VT 82C597 Apollo VP3 AGP"),
+ DEVICE( VIA, VIA_82C598_1, "VT 82C598 Apollo MVP3 AGP"),
+ DEVICE( SMC2, SMC2_1211TX, "1211 TX"),
DEVICE( VORTEX, VORTEX_GDT60x0, "GDT 60x0"),
DEVICE( VORTEX, VORTEX_GDT6000B,"GDT 6000b"),
DEVICE( VORTEX, VORTEX_GDT6x10, "GDT 6110/6510"),
@@ -364,9 +373,9 @@ struct pci_dev_info dev_info[] = {
DEVICE( VORTEX, VORTEX_GDT6557RP2,"GDT 6557RP2"),
DEVICE( VORTEX, VORTEX_GDT6x11RP2,"GDT 6111RP2/6511RP2"),
DEVICE( VORTEX, VORTEX_GDT6x21RP2,"GDT 6121RP2/6521RP2"),
- DEVICE( EF, EF_ATM_FPGA, "155P-MF1 (FPGA)"),
- DEVICE( EF, EF_ATM_ASIC, "155P-MF1 (ASIC)"),
- DEVICE( FORE, FORE_PCA200PC, "PCA-200PC"),
+ DEVICE( EF, EF_ATM_FPGA, "155P-MF1 (FPGA)"),
+ DEVICE( EF, EF_ATM_ASIC, "155P-MF1 (ASIC)"),
+ DEVICE( FORE, FORE_PCA200PC, "PCA-200PC"),
DEVICE( FORE, FORE_PCA200E, "PCA-200E"),
DEVICE( IMAGINGTECH, IMAGINGTECH_ICPCI, "MVC IC-PCI"),
DEVICE( PHILIPS, PHILIPS_SAA7145,"SAA7145"),
@@ -428,6 +437,7 @@ struct pci_dev_info dev_info[] = {
DEVICE( O2, O2_6832, "6832"),
DEVICE( 3DFX, 3DFX_VOODOO, "Voodoo"),
DEVICE( 3DFX, 3DFX_VOODOO2, "Voodoo2"),
+ DEVICE( 3DFX, 3DFX_BANSHEE, "Banshee"),
DEVICE( SIGMADES, SIGMADES_6425, "REALmagic64/GX"),
DEVICE( STALLION, STALLION_ECHPCI832,"EasyConnection 8/32"),
DEVICE( STALLION, STALLION_ECHPCI864,"EasyConnection 8/64"),
@@ -441,7 +451,7 @@ struct pci_dev_info dev_info[] = {
DEVICE( SATSAGEM, SATSAGEM_TELSATTURBO,"Telsat Turbo DVB"),
DEVICE( HUGHES, HUGHES_DIRECPC, "DirecPC"),
DEVICE( ENSONIQ, ENSONIQ_AUDIOPCI,"AudioPCI"),
- DEVICE( ALTEON, ALTEON_ACENIC,"AceNIC"),
+ DEVICE( ALTEON, ALTEON_ACENIC, "AceNIC"),
DEVICE( PICTUREL, PICTUREL_PCIVST,"PCIVST"),
DEVICE( NVIDIA_SGS, NVIDIA_SGS_RIVA128, "Riva 128"),
DEVICE( CBOARDS, CBOARDS_DAS1602_16,"DAS1602/16"),
@@ -461,7 +471,7 @@ struct pci_dev_info dev_info[] = {
DEVICE( S3, S3_AURORA64VP, "Aurora64V+"),
DEVICE( S3, S3_TRIO64UVP, "Trio64UV+"),
DEVICE( S3, S3_ViRGE_VX, "ViRGE/VX"),
- DEVICE( S3, S3_868, "Vision 868"),
+ DEVICE( S3, S3_868, "Vision 868"),
DEVICE( S3, S3_928, "Vision 928-P"),
DEVICE( S3, S3_864_1, "Vision 864-P"),
DEVICE( S3, S3_864_2, "Vision 864-P"),
@@ -476,6 +486,7 @@ struct pci_dev_info dev_info[] = {
DEVICE( S3, S3_ViRGE_MXP, "ViRGE/MX+"),
DEVICE( S3, S3_ViRGE_MXPMV, "ViRGE/MX+MV"),
DEVICE( S3, S3_SONICVIBES, "SonicVibes"),
+ DEVICE( DCI, DCI_PCCOM4, "PC COM PCI Bus 4 port serial Adapter"),
DEVICE( GENROCO, GENROCO_HFP832, "TURBOstor HFP832"),
DEVICE( INTEL, INTEL_82375, "82375EB"),
DEVICE( INTEL, INTEL_82424, "82424ZX Saturn"),
@@ -532,8 +543,10 @@ struct pci_dev_info dev_info[] = {
DEVICE( ADAPTEC, ADAPTEC_7884, "AIC-7884U"),
DEVICE( ADAPTEC, ADAPTEC_1030, "ABA-1030 DVB receiver"),
DEVICE( ADAPTEC2, ADAPTEC2_2940U2,"AHA-2940U2"),
+ DEVICE( ADAPTEC2, ADAPTEC2_78902, "AIC-7890/1"),
DEVICE( ADAPTEC2, ADAPTEC2_7890, "AIC-7890/1"),
DEVICE( ADAPTEC2, ADAPTEC2_3940U2,"AHA-3940U2"),
+ DEVICE( ADAPTEC2, ADAPTEC2_3950U2D,"AHA-3950U2D"),
DEVICE( ADAPTEC2, ADAPTEC2_7896, "AIC-7896/7"),
DEVICE( ATRONICS, ATRONICS_2015, "IDE-2015PL"),
DEVICE( TIGERJET, TIGERJET_300, "Tiger300 ISDN"),
@@ -575,7 +588,7 @@ static struct pci_dev_info *pci_lookup_dev(unsigned int vendor, unsigned int dev
return 0;
continue;
}
-
+
return & dev_info[ i ];
}
}
@@ -734,6 +747,7 @@ static const char *pci_strvendor(unsigned int vendor)
case PCI_VENDOR_ID_INIT: return "Initio Corp";
case PCI_VENDOR_ID_TTI: return "Triones Technologies, Inc.";
case PCI_VENDOR_ID_VIA: return "VIA Technologies";
+ case PCI_VENDOR_ID_SMC2: return "SMC";
case PCI_VENDOR_ID_VORTEX: return "VORTEX";
case PCI_VENDOR_ID_EF: return "Efficient Networks";
case PCI_VENDOR_ID_FORE: return "Fore Systems";
@@ -782,6 +796,7 @@ static const char *pci_strvendor(unsigned int vendor)
case PCI_VENDOR_ID_AVANCE: return "Avance";
case PCI_VENDOR_ID_NETVIN: return "NetVin";
case PCI_VENDOR_ID_S3: return "S3 Inc.";
+ case PCI_VENDOR_ID_DCI: return "Decision Computer Int.";
case PCI_VENDOR_ID_GENROCO: return "Genroco";
case PCI_VENDOR_ID_INTEL: return "Intel";
case PCI_VENDOR_ID_KTI: return "KTI";
@@ -882,7 +897,7 @@ static int sprint_dev_config(struct pci_dev *dev, char *buf, int size)
if (len + 40 > size) {
return -1;
}
- len += sprintf(buf + len, "IRQ %x. ", dev->irq);
+ len += sprintf(buf + len, "IRQ %d. ", dev->irq);
}
if (dev->master) {
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 0f62a76c1..599253933 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -28,6 +28,9 @@
#endif
struct pci_bus pci_root;
+#ifdef CONFIG_VISWS
+struct pci_bus pci_other;
+#endif
struct pci_dev *pci_devices = NULL;
static struct pci_dev **pci_last_dev_p = &pci_devices;
static int pci_reverse __initdata = 0;
@@ -382,6 +385,11 @@ __initfunc(void pci_init(void))
memset(&pci_root, 0, sizeof(pci_root));
pci_root.subordinate = pci_scan_bus(&pci_root);
+#ifdef CONFIG_VISWS
+ pci_other.number = 1; /* XXX unless bridge(s) on pci_root */
+ pci_other.subordinate = pci_scan_bus(&pci_other);
+ pci_root.next = &pci_other;
+#endif
/* give BIOS a chance to apply platform specific fixes: */
pcibios_fixup();
diff --git a/drivers/pci/pcisyms.c b/drivers/pci/pcisyms.c
index f7399c9fb..f26adfc7c 100644
--- a/drivers/pci/pcisyms.c
+++ b/drivers/pci/pcisyms.c
@@ -9,6 +9,7 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/pci.h>
+#include <asm/dma.h> /* isa_dma_bridge_buggy */
EXPORT_SYMBOL(pcibios_present);
EXPORT_SYMBOL(pcibios_read_config_byte);
@@ -38,3 +39,10 @@ EXPORT_SYMBOL(pci_proc_detach_device);
EXPORT_SYMBOL(pcibios_find_class);
EXPORT_SYMBOL(pcibios_find_device);
+
+/* Quirk info */
+
+#ifdef CONFIG_PCI_QUIRKS
+EXPORT_SYMBOL(isa_dma_bridge_buggy);
+#endif
+
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 77ef16f91..3fe633030 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -125,6 +125,25 @@ __initfunc(static void quirk_passive_release(struct pci_dev *dev, int arg))
}
}
+/* The VIA VP2/VP3/MVP3 seem to have some 'features'. There may be a workaround
+ but VIA don't answer queries. If you happen to have good contacts at VIA
+ ask them for me please -- Alan
+
+ This appears to be BIOS not version dependent. So presumably there is a
+ chipset level fix */
+
+
+int isa_dma_bridge_buggy = 0; /* Exported */
+
+__initfunc(static void quirk_isa_dma_hangs(struct pci_dev *dev, int arg))
+{
+ if(!isa_dma_bridge_buggy)
+ {
+ isa_dma_bridge_buggy=1;
+ printk(KERN_INFO "Activating ISA DMA hang workarounds.\n");
+ }
+}
+
typedef void (*quirk_handler)(struct pci_dev *, int);
@@ -141,7 +160,8 @@ static struct quirk_name quirk_names[] __initdata = {
#ifdef CONFIG_PCI_OPTIMIZE
{ quirk_bridge, "Bridge optimization" },
#endif
- { quirk_passive_release, "Passive release enable" },
+ { quirk_passive_release,"Passive release enable" },
+ { quirk_isa_dma_hangs, "Work around ISA DMA hangs" },
};
@@ -176,6 +196,12 @@ static struct quirk_info quirk_list[] __initdata = {
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82430, quirk_bridge, 0x00 },
#endif
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release, 0x00 },
+ /*
+ * Its not totally clear which chipsets are the problematic ones
+ * This is the 82C586 variants. At the moment the 596 is an unknown
+ * quantity
+ */
+ { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_isa_dma_hangs, 0x00 },
};
__initfunc(void pci_quirks_init(void))