Resending a patch that still needs to be applied. From: Peter Horton <pdh@xxxxxxxxxxxxxxxxx> [MIPS] Fix long IDE detection delay by not scanning non-existent channels. Fix long delay during Cobalt boot whilst scanning non-existent interfaces. The logic is copied from i386 i.e. we only scan 2 legacy ports if we have PCI IDE. Signed-off-by: Peter Horton <pdh@xxxxxxxxxxxxxxxxx> Acked-by: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Martin Michlmayr <tbm@xxxxxxxxxx> --- ide.h | 49 +++++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 28 deletions(-) --- linux.git.orig/include/asm-mips/mach-generic/ide.h 2006-01-24 22:07:36.000000000 +0000 +++ linux.git/include/asm-mips/mach-generic/ide.h 2006-01-24 23:41:19.000000000 +0000 @@ -30,7 +30,7 @@ #define IDE_ARCH_OBSOLETE_DEFAULTS -static __inline__ int ide_probe_legacy(void) +static __inline__ int ide_legacy_ports(void) { #ifdef CONFIG_PCI struct pci_dev *dev; @@ -38,11 +38,11 @@ (dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL)) != NULL) { pci_dev_put(dev); - return 1; + return 2; } return 0; #elif defined(CONFIG_EISA) || defined(CONFIG_ISA) - return 1; + return 6; #else return 0; #endif @@ -50,30 +50,26 @@ 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; + 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; + } + return 0; } static __inline__ unsigned long ide_default_io_base(int index) { - if (ide_probe_legacy()) + if (index < ide_legacy_ports()) switch (index) { case 0: return 0x1f0; @@ -87,11 +83,8 @@ return 0x1e0; case 5: return 0x160; - default: - return 0; - } - else - return 0; + } + return 0; } #define IDE_ARCH_OBSOLETE_INIT -- Martin Michlmayr http://www.cyrius.com/