diff options
Diffstat (limited to 'include/asm-powerpc/ide.h')
-rw-r--r-- | include/asm-powerpc/ide.h | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/include/asm-powerpc/ide.h b/include/asm-powerpc/ide.h index 6d50310ecaea..3d90bf7d3d73 100644 --- a/include/asm-powerpc/ide.h +++ b/include/asm-powerpc/ide.h | |||
@@ -31,39 +31,48 @@ | |||
31 | #include <linux/hdreg.h> | 31 | #include <linux/hdreg.h> |
32 | #include <linux/ioport.h> | 32 | #include <linux/ioport.h> |
33 | 33 | ||
34 | struct ide_machdep_calls { | 34 | /* FIXME: use ide_platform host driver */ |
35 | int (*default_irq)(unsigned long base); | ||
36 | unsigned long (*default_io_base)(int index); | ||
37 | void (*ide_init_hwif)(hw_regs_t *hw, | ||
38 | unsigned long data_port, | ||
39 | unsigned long ctrl_port, | ||
40 | int *irq); | ||
41 | }; | ||
42 | |||
43 | extern struct ide_machdep_calls ppc_ide_md; | ||
44 | |||
45 | #define IDE_ARCH_OBSOLETE_DEFAULTS | ||
46 | |||
47 | static __inline__ int ide_default_irq(unsigned long base) | 35 | static __inline__ int ide_default_irq(unsigned long base) |
48 | { | 36 | { |
49 | if (ppc_ide_md.default_irq) | 37 | #ifdef CONFIG_PPLUS |
50 | return ppc_ide_md.default_irq(base); | 38 | switch (base) { |
39 | case 0x1f0: return 14; | ||
40 | case 0x170: return 15; | ||
41 | } | ||
42 | #endif | ||
43 | #ifdef CONFIG_PPC_PREP | ||
44 | switch (base) { | ||
45 | case 0x1f0: return 13; | ||
46 | case 0x170: return 13; | ||
47 | case 0x1e8: return 11; | ||
48 | case 0x168: return 10; | ||
49 | case 0xfff0: return 14; /* MCP(N)750 ide0 */ | ||
50 | case 0xffe0: return 15; /* MCP(N)750 ide1 */ | ||
51 | } | ||
52 | #endif | ||
51 | return 0; | 53 | return 0; |
52 | } | 54 | } |
53 | 55 | ||
56 | /* FIXME: use ide_platform host driver */ | ||
54 | static __inline__ unsigned long ide_default_io_base(int index) | 57 | static __inline__ unsigned long ide_default_io_base(int index) |
55 | { | 58 | { |
56 | if (ppc_ide_md.default_io_base) | 59 | #ifdef CONFIG_PPLUS |
57 | return ppc_ide_md.default_io_base(index); | 60 | switch (index) { |
61 | case 0: return 0x1f0; | ||
62 | case 1: return 0x170; | ||
63 | } | ||
64 | #endif | ||
65 | #ifdef CONFIG_PPC_PREP | ||
66 | switch (index) { | ||
67 | case 0: return 0x1f0; | ||
68 | case 1: return 0x170; | ||
69 | case 2: return 0x1e8; | ||
70 | case 3: return 0x168; | ||
71 | } | ||
72 | #endif | ||
58 | return 0; | 73 | return 0; |
59 | } | 74 | } |
60 | 75 | ||
61 | #ifdef CONFIG_PCI | ||
62 | #define ide_init_default_irq(base) (0) | ||
63 | #else | ||
64 | #define ide_init_default_irq(base) ide_default_irq(base) | ||
65 | #endif | ||
66 | |||
67 | #ifdef CONFIG_BLK_DEV_MPC8xx_IDE | 76 | #ifdef CONFIG_BLK_DEV_MPC8xx_IDE |
68 | #define IDE_ARCH_ACK_INTR 1 | 77 | #define IDE_ARCH_ACK_INTR 1 |
69 | #define ide_ack_intr(hwif) ((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1) | 78 | #define ide_ack_intr(hwif) ((hwif)->ack_intr ? (hwif)->ack_intr(hwif) : 1) |
@@ -71,8 +80,6 @@ static __inline__ unsigned long ide_default_io_base(int index) | |||
71 | 80 | ||
72 | #endif /* __powerpc64__ */ | 81 | #endif /* __powerpc64__ */ |
73 | 82 | ||
74 | #define ide_default_io_ctl(base) ((base) + 0x206) /* obsolete */ | ||
75 | |||
76 | #endif /* __KERNEL__ */ | 83 | #endif /* __KERNEL__ */ |
77 | 84 | ||
78 | #endif /* _ASM_POWERPC_IDE_H */ | 85 | #endif /* _ASM_POWERPC_IDE_H */ |