fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / asm-i386 / ide.h
index 859ebf4..0fc240c 100644 (file)
@@ -13,7 +13,6 @@
 
 #ifdef __KERNEL__
 
-#include <linux/config.h>
 
 #ifndef MAX_HWIFS
 # ifdef CONFIG_BLK_DEV_IDEPCI
@@ -41,13 +40,25 @@ static __inline__ int ide_default_irq(unsigned long base)
 
 static __inline__ unsigned long ide_default_io_base(int index)
 {
+       struct pci_dev *pdev;
+       /*
+        *      If PCI is present then it is not safe to poke around
+        *      the other legacy IDE ports. Only 0x1f0 and 0x170 are
+        *      defined compatibility mode ports for PCI. A user can 
+        *      override this using ide= but we must default safe.
+        */
+       if ((pdev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, NULL)) == NULL) {
+               switch(index) {
+                       case 2: return 0x1e8;
+                       case 3: return 0x168;
+                       case 4: return 0x1e0;
+                       case 5: return 0x160;
+               }
+       }
+       pci_dev_put(pdev);
        switch (index) {
                case 0: return 0x1f0;
                case 1: return 0x170;
-               case 2: return 0x1e8;
-               case 3: return 0x168;
-               case 4: return 0x1e0;
-               case 5: return 0x160;
                default:
                        return 0;
        }