]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-mips/mach-generic/ide.h
drivers/power: fix platform driver hotplug/coldplug
[linux-2.6-omap-h63xx.git] / include / asm-mips / mach-generic / ide.h
index 6eba2e576aaa396e898823fd0e34c6b6d8effd10..73008f7bdc93708281e647889a7e3d6c6be87c41 100644 (file)
 #include <linux/stddef.h>
 #include <asm/processor.h>
 
-#ifndef MAX_HWIFS
-# ifdef CONFIG_BLK_DEV_IDEPCI
-#define MAX_HWIFS      10
-# else
-#define MAX_HWIFS      6
-# endif
-#endif
-
-#define IDE_ARCH_OBSOLETE_DEFAULTS
-
 static __inline__ int ide_probe_legacy(void)
 {
 #ifdef CONFIG_PCI
        struct pci_dev *dev;
-       if ((dev = pci_get_class(PCI_CLASS_BRIDGE_EISA << 8, NULL)) != NULL ||
-           (dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL)) != NULL) {
-               pci_dev_put(dev);
-
-               return 1;
-       }
+       /*
+        * This can be called on the ide_setup() path, super-early in
+        * boot.  But the down_read() will enable local interrupts,
+        * which can cause some machines to crash.  So here we detect
+        * and flag that situation and bail out early.
+        */
+       if (no_pci_devices())
+               return 0;
+       dev = pci_get_class(PCI_CLASS_BRIDGE_EISA << 8, NULL);
+       if (dev)
+               goto found;
+       dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL);
+       if (dev)
+               goto found;
        return 0;
+found:
+       pci_dev_put(dev);
+       return 1;
 #elif defined(CONFIG_EISA) || defined(CONFIG_ISA)
        return 1;
 #else
@@ -47,61 +48,6 @@ static __inline__ int ide_probe_legacy(void)
 #endif
 }
 
-static __inline__ int ide_default_irq(unsigned long base)
-{
-       if (ide_probe_legacy())
-               switch (base) {
-               case 0x1f0:
-                       return 14;
-               case 0x170:
-                       return 15;
-               case 0x1e8:
-                       return 11;
-               case 0x168:
-                       return 10;
-               case 0x1e0:
-                       return 8;
-               case 0x160:
-                       return 12;
-               default:
-                       return 0;
-               }
-       else
-               return 0;
-}
-
-static __inline__ unsigned long ide_default_io_base(int index)
-{
-       if (ide_probe_legacy())
-               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;
-               }
-       else
-               return 0;
-}
-
-#define IDE_ARCH_OBSOLETE_INIT
-#define ide_default_io_ctl(base)       ((base) + 0x206) /* obsolete */
-
-#ifdef CONFIG_BLK_DEV_IDEPCI
-#define ide_init_default_irq(base)     (0)
-#else
-#define ide_init_default_irq(base)     ide_default_irq(base)
-#endif
-
 /* MIPS port and memory-mapped I/O string operations.  */
 static inline void __ide_flush_prologue(void)
 {