summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci/pci_pci.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2005-08-26 23:39:44 +0000
committerjkim <jkim@FreeBSD.org>2005-08-26 23:39:44 +0000
commit4fc433d8be1f9b634038dc43cb4b9610f7b8476e (patch)
treecb054ea634c314bf9cc43478cf8381d5b140ba19 /sys/dev/pci/pci_pci.c
parentb9888c74108302585cedd46373249abe78d27fc6 (diff)
downloadFreeBSD-src-4fc433d8be1f9b634038dc43cb4b9610f7b8476e.zip
FreeBSD-src-4fc433d8be1f9b634038dc43cb4b9610f7b8476e.tar.gz
fix CardBus issue for Compaq R3000 series laptop
Approved by: anholt (mentor)
Diffstat (limited to 'sys/dev/pci/pci_pci.c')
-rw-r--r--sys/dev/pci/pci_pci.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c
index 29a82e1..2795f02 100644
--- a/sys/dev/pci/pci_pci.c
+++ b/sys/dev/pci/pci_pci.c
@@ -186,6 +186,24 @@ pcib_attach_common(device_t dev)
case 0x060513d7: /* Toshiba ???? */
sc->flags |= PCIB_SUBTRACTIVE;
break;
+
+ /* Compaq R3000 BIOS sets wrong subordinate bus number. */
+ case 0x00dd10de:
+ {
+ char *cp;
+
+ cp = getenv("smbios.planar.maker");
+ if (cp == NULL || strncmp(cp, "Compal", 6) != 0)
+ break;
+ cp = getenv("smbios.planar.product");
+ if (cp == NULL || strncmp(cp, "08A0", 4) != 0)
+ break;
+ if (sc->subbus < 0xa) {
+ pci_write_config(dev, PCIR_SUBBUS_1, 0xa, 1);
+ sc->subbus = pci_read_config(dev, PCIR_SUBBUS_1, 1);
+ }
+ break;
+ }
}
/*
OpenPOWER on IntegriCloud