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
15
#include <asm/io.h>
L
Linus Torvalds 已提交
16 17

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

25 26 27 28 29
#define __ide_mm_insw(p, a, c)	_insw_ns((volatile u16 __iomem *)(p), (a), (c))
#define __ide_mm_insl(p, a, c)	_insl_ns((volatile u32 __iomem *)(p), (a), (c))
#define __ide_mm_outsw(p, a, c)	_outsw_ns((volatile u16 __iomem *)(p), (a), (c))
#define __ide_mm_outsl(p, a, c)	_outsl_ns((volatile u32 __iomem *)(p), (a), (c))

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

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 已提交
75 76 77 78 79
#endif /* __powerpc64__ */

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

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

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