aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pci
diff options
context:
space:
mode:
authorSøren Schmidt <sos@FreeBSD.org>2004-04-20 20:57:29 +0000
committerSøren Schmidt <sos@FreeBSD.org>2004-04-20 20:57:29 +0000
commit470fcc93b919e0aef3e6cf8cd1ecac1d9ef1ee8c (patch)
treeab891df9cf544f6e2f290db534981a5a692873c1 /sys/dev/pci
parentc968be6d983c046758a9e9fde8a938480ee9c408 (diff)
Notes
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/pci.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index f7b7450d27c30..f23ab79d44d73 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -824,6 +824,15 @@ pci_add_map(device_t pcib, device_t bus, device_t dev,
*/
if (base == 0)
return 1;
+
+ /* if this is an ATA MASTERDEV on std addresses, resources are bogus */
+ if ((pci_get_class(dev) == PCIC_STORAGE) &&
+ (pci_get_subclass(dev) == PCIS_STORAGE_IDE) &&
+ (pci_get_progif(dev) & PCIP_STORAGE_IDE_MASTERDEV) &&
+ !(pci_get_progif(dev) &
+ (PCIP_STORAGE_IDE_MODEPRIM | PCIP_STORAGE_IDE_MODESEC)))
+ return 1;
+
start = base;
end = base + (1 << ln2size) - 1;
count = 1 << ln2size;