summaryrefslogtreecommitdiffstats
path: root/sys/pci/pcisupport.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/pci/pcisupport.c')
-rw-r--r--sys/pci/pcisupport.c37
1 files changed, 32 insertions, 5 deletions
diff --git a/sys/pci/pcisupport.c b/sys/pci/pcisupport.c
index 49aeacd..ea17ea2 100644
--- a/sys/pci/pcisupport.c
+++ b/sys/pci/pcisupport.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pcisupport.c,v 1.96 1999/04/16 21:22:52 peter Exp $
+** $Id: pcisupport.c,v 1.97 1999/04/17 19:48:45 dfr Exp $
**
** Device driver for DEC/INTEL PCI chipsets.
**
@@ -891,6 +891,19 @@ static devclass_t pcib_devclass;
DRIVER_MODULE(pcib, pci, pcib_driver, pcib_devclass, 0, 0);
static const char *
+eisab_match(device_t dev)
+{
+ switch (pci_get_devid(dev)) {
+ case 0x04828086:
+ /* Recognize this specifically, it has PCI-HOST class (!) */
+ return ("Intel 82375EB PCI-EISA bridge");
+ }
+
+
+ return NULL;
+}
+
+static const char *
isab_match(device_t dev)
{
unsigned rev;
@@ -901,8 +914,6 @@ isab_match(device_t dev)
if (rev == 3)
return ("Intel 82378ZB PCI to ISA bridge");
return ("Intel 82378IB PCI to ISA bridge");
- case 0x04828086:
- return ("Intel 82375EB PCI-EISA bridge");
case 0x122e8086:
return ("Intel 82371FB PCI to ISA bridge");
case 0x70008086:
@@ -947,10 +958,26 @@ static int
isab_probe(device_t dev)
{
const char *desc;
-
- desc = isab_match(dev);
+ int is_eisa;
+
+ is_eisa = 0;
+ desc = eisab_match(dev);
+ if (desc)
+ is_eisa = 1;
+ else
+ desc = isab_match(dev);
if (desc) {
device_set_desc_copy(dev, desc);
+
+ /* In case of a generic EISA bridge */
+ if (pci_get_subclass(dev) == PCIS_BRIDGE_EISA)
+ is_eisa = 1;
+
+ /* For PCI-EISA bridge, add both eisa and isa */
+ /* Don't bother adding more than one EISA bus */
+ if (is_eisa && !devclass_get_device(devclass_find("isa"), 0))
+ device_add_child(dev, "eisa", -1, 0);
+
/* Don't bother adding more than one ISA bus */
if (!devclass_get_device(devclass_find("isa"), 0))
device_add_child(dev, "isa", -1, 0);
OpenPOWER on IntegriCloud