1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* This file contains the MIPS architecture specific IDE code.
*
* Copyright (C) 1994-1996 Linus Torvalds & authors
*/
#ifndef __ASM_IDE_H
#define __ASM_IDE_H
#ifdef __KERNEL__
#include <linux/config.h>
#include <asm/byteorder.h>
#include <asm/io.h>
#ifndef MAX_HWIFS
# ifdef CONFIG_PCI
#define MAX_HWIFS 10
# else
#define MAX_HWIFS 6
# endif
#endif
struct ide_ops {
int (*ide_default_irq)(ide_ioreg_t base);
ide_ioreg_t (*ide_default_io_base)(int index);
void (*ide_init_hwif_ports)(hw_regs_t *hw, ide_ioreg_t data_port,
ide_ioreg_t ctrl_port, int *irq);
};
extern struct ide_ops *ide_ops;
static __inline__ int ide_default_irq(ide_ioreg_t base)
{
return ide_ops->ide_default_irq(base);
}
static __inline__ ide_ioreg_t ide_default_io_base(int index)
{
return ide_ops->ide_default_io_base(index);
}
static inline void ide_init_hwif_ports(hw_regs_t *hw, ide_ioreg_t data_port,
ide_ioreg_t ctrl_port, int *irq)
{
ide_ops->ide_init_hwif_ports(hw, data_port, ctrl_port, irq);
}
static __inline__ void ide_init_default_hwifs(void)
{
#ifndef CONFIG_PCI
hw_regs_t hw;
int index;
for(index = 0; index < MAX_HWIFS; index++) {
ide_init_hwif_ports(&hw, ide_default_io_base(index), 0, NULL);
hw.irq = ide_default_irq(ide_default_io_base(index));
ide_register_hw(&hw, NULL);
}
#endif
}
#define __ide_mm_insw ide_insw
#define __ide_mm_insl ide_insl
#define __ide_mm_outsw ide_outsw
#define __ide_mm_outsl ide_outsl
#endif /* __KERNEL__ */
#endif /* __ASM_IDE_H */
|