There is 'ide_init_hwif_ports' member in ide_ops structure but currently never used. This is a patch to use this (again). --- Atsushi Nemoto
diff -ur linux.sgi/arch/mips/lib/ide-std.c linux/arch/mips/lib/ide-std.c --- linux.sgi/arch/mips/lib/ide-std.c Thu Jun 17 22:25:49 1999 +++ linux/arch/mips/lib/ide-std.c Fri Aug 17 11:55:49 2001 @@ -60,6 +60,7 @@ } if (irq != NULL) *irq = 0; + hw->io_ports[IDE_IRQ_OFFSET] = 0; } static int std_ide_request_irq(unsigned int irq, diff -ur linux.sgi/include/asm-mips/ide.h linux/include/asm-mips/ide.h --- linux.sgi/include/asm-mips/ide.h Tue Apr 24 02:46:11 2001 +++ linux/include/asm-mips/ide.h Fri Aug 17 11:54:36 2001 @@ -56,21 +56,7 @@ static inline void ide_init_hwif_ports(hw_regs_t *hw, ide_ioreg_t data_port, ide_ioreg_t ctrl_port, int *irq) { - ide_ioreg_t reg = data_port; - int i; - - for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) { - hw->io_ports[i] = reg; - reg += 1; - } - if (ctrl_port) { - hw->io_ports[IDE_CONTROL_OFFSET] = ctrl_port; - } 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; + ide_ops->ide_init_hwif_ports(hw, data_port, ctrl_port, irq); } static __inline__ void ide_init_default_hwifs(void)