summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2003-01-08 17:44:36 +0000
committersos <sos@FreeBSD.org>2003-01-08 17:44:36 +0000
commit91969f27a52f9d750a308c792bbae8b36535db99 (patch)
treefae62afff8c344c5fa92321887cd74dea2ab97b1 /sys/dev/ata
parent45a362319313bfe4e2ef698d107d34b2db70b769 (diff)
downloadFreeBSD-src-91969f27a52f9d750a308c792bbae8b36535db99.zip
FreeBSD-src-91969f27a52f9d750a308c792bbae8b36535db99.tar.gz
Dont attach a Promise chip located behind a i960 bridge/chip.
This makes it possible to run a Promise SuperTrak SX6000 with OS type set to "Other" as well as "Linux".
Diffstat (limited to 'sys/dev/ata')
-rw-r--r--sys/dev/ata/ata-pci.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c
index ca545fa..d4375fa 100644
--- a/sys/dev/ata/ata-pci.c
+++ b/sys/dev/ata/ata-pci.c
@@ -287,10 +287,22 @@ ata_pci_match(device_t dev)
}
return "Promise TX2 ATA100 controller";
- case 0x4d69105a:
case 0x5275105a:
- case 0x6269105a:
case 0x7275105a:
+ {
+ uintptr_t devid = 0;
+
+ /* if we are on a SuperTrak SX6000 dont attach */
+ if (!BUS_READ_IVAR(device_get_parent(GRANDPARENT(dev)),
+ GRANDPARENT(dev), PCI_IVAR_DEVID, &devid) &&
+ devid == 0x09628086 &&
+ pci_get_class(GRANDPARENT(dev)) == PCIC_BRIDGE)
+ break;
+ }
+ /* FALLTHROUGH */
+
+ case 0x4d69105a:
+ case 0x6269105a:
return "Promise TX2 ATA133 controller";
case 0x00041103:
OpenPOWER on IntegriCloud