fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / asm-i386 / ide.h
index 0409c22..0fc240c 100644 (file)
@@ -13,7 +13,6 @@
 
 #ifdef __KERNEL__
 
-#include <linux/config.h>
 
 #ifndef MAX_HWIFS
 # ifdef CONFIG_BLK_DEV_IDEPCI
@@ -28,9 +27,6 @@
 static __inline__ int ide_default_irq(unsigned long base)
 {
        switch (base) {
-#ifdef CONFIG_X86_PC9800
-               case 0x640: return 9;
-#endif
                case 0x1f0: return 14;
                case 0x170: return 15;
                case 0x1e8: return 11;
@@ -44,49 +40,30 @@ 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) {
-#ifdef CONFIG_X86_PC9800
-               case 0:
-               case 1: return 0x640;
-#else
                case 0: return 0x1f0;
                case 1: return 0x170;
-               case 2: return 0x1e8;
-               case 3: return 0x168;
-               case 4: return 0x1e0;
-               case 5: return 0x160;
-#endif
                default:
                        return 0;
        }
 }
 
-#ifdef CONFIG_X86_PC9800
-static __inline__ void ide_init_hwif_ports(hw_regs_t *hw, unsigned long data_port,
-        unsigned long ctrl_port, int *irq)
-{
-       unsigned long reg = data_port;
-       int i;
-
-       unsigned long increment = data_port == 0x640 ? 2 : 1;
-
-       for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) {
-               hw->io_ports[i] = reg;
-               reg += increment;
-       }
-       if (ctrl_port) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port;
-       } else if (data_port == 0x640) {
-               hw->io_ports[IDE_CONTROL_OFFSET] = 0x74c;
-       } else {
-               hw->io_ports[IDE_CONTROL_OFFSET] = hw->io_ports[IDE_DATA_OFFSET] + 0x206;
-       }
-       if (irq != NULL)
-               *irq = 0;
-       hw->io_ports[IDE_IRQ_OFFSET] = 0;
-}
-#endif
-
 #define IDE_ARCH_OBSOLETE_INIT
 #define ide_default_io_ctl(base)       ((base) + 0x206) /* obsolete */