ide.h 2.0 KB
Newer Older
L
Linus Torvalds 已提交
1
/*
S
Stephen Rothwell 已提交
2
 *  Copyright (C) 1994-1996 Linus Torvalds & authors
L
Linus Torvalds 已提交
3
 *
S
Stephen Rothwell 已提交
4
 *  This file contains the powerpc architecture specific IDE code.
L
Linus Torvalds 已提交
5
 */
S
Stephen Rothwell 已提交
6 7
#ifndef _ASM_POWERPC_IDE_H
#define _ASM_POWERPC_IDE_H
L
Linus Torvalds 已提交
8 9 10

#ifdef __KERNEL__

S
Stephen Rothwell 已提交
11
#ifndef __powerpc64__
L
Linus Torvalds 已提交
12 13
#include <linux/sched.h>
#include <asm/mpc8xx.h>
S
Stephen Rothwell 已提交
14
#endif
L
Linus Torvalds 已提交
15 16

#ifndef MAX_HWIFS
S
Stephen Rothwell 已提交
17 18 19
#ifdef __powerpc64__
#define MAX_HWIFS	10
#else
L
Linus Torvalds 已提交
20 21
#define MAX_HWIFS	8
#endif
S
Stephen Rothwell 已提交
22
#endif
L
Linus Torvalds 已提交
23

S
Stephen Rothwell 已提交
24
#ifndef  __powerpc64__
L
Linus Torvalds 已提交
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 75
#include <linux/config.h>
#include <linux/hdreg.h>
#include <linux/ioport.h>
#include <asm/io.h>

extern void __ide_mm_insw(void __iomem *port, void *addr, u32 count);
extern void __ide_mm_outsw(void __iomem *port, void *addr, u32 count);
extern void __ide_mm_insl(void __iomem *port, void *addr, u32 count);
extern void __ide_mm_outsl(void __iomem *port, void *addr, u32 count);

struct ide_machdep_calls {
        int         (*default_irq)(unsigned long base);
        unsigned long (*default_io_base)(int index);
        void        (*ide_init_hwif)(hw_regs_t *hw,
                                     unsigned long data_port,
                                     unsigned long ctrl_port,
                                     int *irq);
};

extern struct ide_machdep_calls ppc_ide_md;

#undef	SUPPORT_SLOW_DATA_PORTS
#define	SUPPORT_SLOW_DATA_PORTS	0

#define IDE_ARCH_OBSOLETE_DEFAULTS

static __inline__ int ide_default_irq(unsigned long base)
{
	if (ppc_ide_md.default_irq)
		return ppc_ide_md.default_irq(base);
	return 0;
}

static __inline__ unsigned long ide_default_io_base(int index)
{
	if (ppc_ide_md.default_io_base)
		return ppc_ide_md.default_io_base(index);
	return 0;
}

#ifdef CONFIG_PCI
#define ide_init_default_irq(base)	(0)
#else
#define ide_init_default_irq(base)	ide_default_irq(base)
#endif

#if (defined CONFIG_APUS || defined CONFIG_BLK_DEV_MPC8xx_IDE )
#define IDE_ARCH_ACK_INTR  1
#define ide_ack_intr(hwif) (hwif->hw.ack_intr ? hwif->hw.ack_intr(hwif) : 1)
#endif

S
Stephen Rothwell 已提交
76 77 78 79 80
#endif /* __powerpc64__ */

#define IDE_ARCH_OBSOLETE_INIT
#define ide_default_io_ctl(base)	((base) + 0x206) /* obsolete */

L
Linus Torvalds 已提交
81 82
#endif /* __KERNEL__ */

S
Stephen Rothwell 已提交
83
#endif /* _ASM_POWERPC_IDE_H */