diff options
-rw-r--r-- | drivers/ide/ide-generic.c | 32 | ||||
-rw-r--r-- | include/asm-alpha/ide.h | 24 | ||||
-rw-r--r-- | include/asm-ia64/ide.h | 29 | ||||
-rw-r--r-- | include/asm-m32r/ide.h | 50 | ||||
-rw-r--r-- | include/asm-mips/mach-generic/ide.h | 28 | ||||
-rw-r--r-- | include/asm-x86/ide.h | 28 |
6 files changed, 29 insertions, 162 deletions
diff --git a/drivers/ide/ide-generic.c b/drivers/ide/ide-generic.c index 567fd843c7ff..8fe8b5b9cf7d 100644 --- a/drivers/ide/ide-generic.c +++ b/drivers/ide/ide-generic.c | |||
@@ -20,6 +20,11 @@ | |||
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/ide.h> | 21 | #include <linux/ide.h> |
22 | 22 | ||
23 | /* FIXME: convert m32r to use ide_platform host driver */ | ||
24 | #ifdef CONFIG_M32R | ||
25 | #include <asm/m32r.h> | ||
26 | #endif | ||
27 | |||
23 | #define DRV_NAME "ide_generic" | 28 | #define DRV_NAME "ide_generic" |
24 | 29 | ||
25 | static int probe_mask = 0x03; | 30 | static int probe_mask = 0x03; |
@@ -80,6 +85,21 @@ static int __init ide_generic_sysfs_init(void) | |||
80 | return 0; | 85 | return 0; |
81 | } | 86 | } |
82 | 87 | ||
88 | #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_MAPPI2) \ | ||
89 | || defined(CONFIG_PLAT_OPSPUT) | ||
90 | static const u16 legacy_bases[] = { 0x1f0 }; | ||
91 | static const int legacy_irqs[] = { PLD_IRQ_CFIREQ }; | ||
92 | #elif defined(CONFIG_PLAT_MAPPI3) | ||
93 | static const u16 legacy_bases[] = { 0x1f0, 0x170 }; | ||
94 | static const int legacy_irqs[] = { PLD_IRQ_CFIREQ, PLD_IRQ_IDEIREQ }; | ||
95 | #elif defined(CONFIG_ALPHA) | ||
96 | static const u16 legacy_bases[] = { 0x1f0, 0x170, 0x1e8, 0x168 }; | ||
97 | static const int legacy_irqs[] = { 14, 15, 11, 10 }; | ||
98 | #else | ||
99 | static const u16 legacy_bases[] = { 0x1f0, 0x170, 0x1e8, 0x168, 0x1e0, 0x160 }; | ||
100 | static const int legacy_irqs[] = { 14, 15, 11, 10, 8, 12 }; | ||
101 | #endif | ||
102 | |||
83 | static int __init ide_generic_init(void) | 103 | static int __init ide_generic_init(void) |
84 | { | 104 | { |
85 | hw_regs_t hw[MAX_HWIFS], *hws[MAX_HWIFS]; | 105 | hw_regs_t hw[MAX_HWIFS], *hws[MAX_HWIFS]; |
@@ -94,8 +114,10 @@ static int __init ide_generic_init(void) | |||
94 | printk(KERN_INFO DRV_NAME ": please use \"probe_mask=0x3f\" module " | 114 | printk(KERN_INFO DRV_NAME ": please use \"probe_mask=0x3f\" module " |
95 | "parameter for probing all legacy ISA IDE ports\n"); | 115 | "parameter for probing all legacy ISA IDE ports\n"); |
96 | 116 | ||
97 | for (i = 0; i < MAX_HWIFS; i++) { | 117 | memset(hws, 0, sizeof(hw_regs_t *) * MAX_HWIFS); |
98 | io_addr = ide_default_io_base(i); | 118 | |
119 | for (i = 0; i < ARRAY_SIZE(legacy_bases); i++) { | ||
120 | io_addr = legacy_bases[i]; | ||
99 | 121 | ||
100 | hws[i] = NULL; | 122 | hws[i] = NULL; |
101 | 123 | ||
@@ -117,7 +139,11 @@ static int __init ide_generic_init(void) | |||
117 | 139 | ||
118 | memset(&hw[i], 0, sizeof(hw[i])); | 140 | memset(&hw[i], 0, sizeof(hw[i])); |
119 | ide_std_init_ports(&hw[i], io_addr, io_addr + 0x206); | 141 | ide_std_init_ports(&hw[i], io_addr, io_addr + 0x206); |
120 | hw[i].irq = ide_default_irq(io_addr); | 142 | #ifdef CONFIG_IA64 |
143 | hw[i].irq = isa_irq_to_vector(legacy_irqs[i]); | ||
144 | #else | ||
145 | hw[i].irq = legacy_irqs[i]; | ||
146 | #endif | ||
121 | hw[i].chipset = ide_generic; | 147 | hw[i].chipset = ide_generic; |
122 | 148 | ||
123 | hws[i] = &hw[i]; | 149 | hws[i] = &hw[i]; |
diff --git a/include/asm-alpha/ide.h b/include/asm-alpha/ide.h index f44129abc02c..55f9f6870249 100644 --- a/include/asm-alpha/ide.h +++ b/include/asm-alpha/ide.h | |||
@@ -13,30 +13,6 @@ | |||
13 | 13 | ||
14 | #ifdef __KERNEL__ | 14 | #ifdef __KERNEL__ |
15 | 15 | ||
16 | static inline int ide_default_irq(unsigned long base) | ||
17 | { | ||
18 | switch (base) { | ||
19 | case 0x1f0: return 14; | ||
20 | case 0x170: return 15; | ||
21 | case 0x1e8: return 11; | ||
22 | case 0x168: return 10; | ||
23 | default: | ||
24 | return 0; | ||
25 | } | ||
26 | } | ||
27 | |||
28 | static inline unsigned long ide_default_io_base(int index) | ||
29 | { | ||
30 | switch (index) { | ||
31 | case 0: return 0x1f0; | ||
32 | case 1: return 0x170; | ||
33 | case 2: return 0x1e8; | ||
34 | case 3: return 0x168; | ||
35 | default: | ||
36 | return 0; | ||
37 | } | ||
38 | } | ||
39 | |||
40 | #include <asm-generic/ide_iops.h> | 16 | #include <asm-generic/ide_iops.h> |
41 | 17 | ||
42 | #endif /* __KERNEL__ */ | 18 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-ia64/ide.h b/include/asm-ia64/ide.h index 8fa3f8cd067a..5a0aedea4764 100644 --- a/include/asm-ia64/ide.h +++ b/include/asm-ia64/ide.h | |||
@@ -13,37 +13,8 @@ | |||
13 | 13 | ||
14 | #ifdef __KERNEL__ | 14 | #ifdef __KERNEL__ |
15 | 15 | ||
16 | |||
17 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
18 | 17 | ||
19 | static inline int ide_default_irq(unsigned long base) | ||
20 | { | ||
21 | switch (base) { | ||
22 | case 0x1f0: return isa_irq_to_vector(14); | ||
23 | case 0x170: return isa_irq_to_vector(15); | ||
24 | case 0x1e8: return isa_irq_to_vector(11); | ||
25 | case 0x168: return isa_irq_to_vector(10); | ||
26 | case 0x1e0: return isa_irq_to_vector(8); | ||
27 | case 0x160: return isa_irq_to_vector(12); | ||
28 | default: | ||
29 | return 0; | ||
30 | } | ||
31 | } | ||
32 | |||
33 | static inline unsigned long ide_default_io_base(int index) | ||
34 | { | ||
35 | switch (index) { | ||
36 | case 0: return 0x1f0; | ||
37 | case 1: return 0x170; | ||
38 | case 2: return 0x1e8; | ||
39 | case 3: return 0x168; | ||
40 | case 4: return 0x1e0; | ||
41 | case 5: return 0x160; | ||
42 | default: | ||
43 | return 0; | ||
44 | } | ||
45 | } | ||
46 | |||
47 | #include <asm-generic/ide_iops.h> | 18 | #include <asm-generic/ide_iops.h> |
48 | 19 | ||
49 | #endif /* __KERNEL__ */ | 20 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-m32r/ide.h b/include/asm-m32r/ide.h index d755d41b9931..0f1ec6973879 100644 --- a/include/asm-m32r/ide.h +++ b/include/asm-m32r/ide.h | |||
@@ -13,56 +13,6 @@ | |||
13 | 13 | ||
14 | #ifdef __KERNEL__ | 14 | #ifdef __KERNEL__ |
15 | 15 | ||
16 | #include <asm/m32r.h> | ||
17 | |||
18 | static __inline__ int ide_default_irq(unsigned long base) | ||
19 | { | ||
20 | switch (base) { | ||
21 | #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_MAPPI2) \ | ||
22 | || defined(CONFIG_PLAT_OPSPUT) | ||
23 | case 0x1f0: return PLD_IRQ_CFIREQ; | ||
24 | default: | ||
25 | return 0; | ||
26 | #elif defined(CONFIG_PLAT_MAPPI3) | ||
27 | case 0x1f0: return PLD_IRQ_CFIREQ; | ||
28 | case 0x170: return PLD_IRQ_IDEIREQ; | ||
29 | default: | ||
30 | return 0; | ||
31 | #else | ||
32 | case 0x1f0: return 14; | ||
33 | case 0x170: return 15; | ||
34 | case 0x1e8: return 11; | ||
35 | case 0x168: return 10; | ||
36 | case 0x1e0: return 8; | ||
37 | case 0x160: return 12; | ||
38 | default: | ||
39 | return 0; | ||
40 | #endif | ||
41 | } | ||
42 | } | ||
43 | |||
44 | static __inline__ unsigned long ide_default_io_base(int index) | ||
45 | { | ||
46 | switch (index) { | ||
47 | #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_MAPPI2) \ | ||
48 | || defined(CONFIG_PLAT_OPSPUT) | ||
49 | case 0: return 0x1f0; | ||
50 | #elif defined(CONFIG_PLAT_MAPPI3) | ||
51 | case 0: return 0x1f0; | ||
52 | case 1: return 0x170; | ||
53 | #else | ||
54 | case 0: return 0x1f0; | ||
55 | case 1: return 0x170; | ||
56 | case 2: return 0x1e8; | ||
57 | case 3: return 0x168; | ||
58 | case 4: return 0x1e0; | ||
59 | case 5: return 0x160; | ||
60 | #endif | ||
61 | default: | ||
62 | return 0; | ||
63 | } | ||
64 | } | ||
65 | |||
66 | #include <asm-generic/ide_iops.h> | 16 | #include <asm-generic/ide_iops.h> |
67 | 17 | ||
68 | #endif /* __KERNEL__ */ | 18 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-mips/mach-generic/ide.h b/include/asm-mips/mach-generic/ide.h index 8ee6bff030d9..73008f7bdc93 100644 --- a/include/asm-mips/mach-generic/ide.h +++ b/include/asm-mips/mach-generic/ide.h | |||
@@ -48,34 +48,6 @@ found: | |||
48 | #endif | 48 | #endif |
49 | } | 49 | } |
50 | 50 | ||
51 | static __inline__ int ide_default_irq(unsigned long base) | ||
52 | { | ||
53 | switch (base) { | ||
54 | case 0x1f0: return 14; | ||
55 | case 0x170: return 15; | ||
56 | case 0x1e8: return 11; | ||
57 | case 0x168: return 10; | ||
58 | case 0x1e0: return 8; | ||
59 | case 0x160: return 12; | ||
60 | default: | ||
61 | return 0; | ||
62 | } | ||
63 | } | ||
64 | |||
65 | static __inline__ unsigned long ide_default_io_base(int index) | ||
66 | { | ||
67 | switch (index) { | ||
68 | case 0: return 0x1f0; | ||
69 | case 1: return 0x170; | ||
70 | case 2: return 0x1e8; | ||
71 | case 3: return 0x168; | ||
72 | case 4: return 0x1e0; | ||
73 | case 5: return 0x160; | ||
74 | default: | ||
75 | return 0; | ||
76 | } | ||
77 | } | ||
78 | |||
79 | /* MIPS port and memory-mapped I/O string operations. */ | 51 | /* MIPS port and memory-mapped I/O string operations. */ |
80 | static inline void __ide_flush_prologue(void) | 52 | static inline void __ide_flush_prologue(void) |
81 | { | 53 | { |
diff --git a/include/asm-x86/ide.h b/include/asm-x86/ide.h index bc54879daed1..0289baf9ce0a 100644 --- a/include/asm-x86/ide.h +++ b/include/asm-x86/ide.h | |||
@@ -11,34 +11,6 @@ | |||
11 | 11 | ||
12 | #ifdef __KERNEL__ | 12 | #ifdef __KERNEL__ |
13 | 13 | ||
14 | static __inline__ int ide_default_irq(unsigned long base) | ||
15 | { | ||
16 | switch (base) { | ||
17 | case 0x1f0: return 14; | ||
18 | case 0x170: return 15; | ||
19 | case 0x1e8: return 11; | ||
20 | case 0x168: return 10; | ||
21 | case 0x1e0: return 8; | ||
22 | case 0x160: return 12; | ||
23 | default: | ||
24 | return 0; | ||
25 | } | ||
26 | } | ||
27 | |||
28 | static __inline__ unsigned long ide_default_io_base(int index) | ||
29 | { | ||
30 | switch (index) { | ||
31 | case 0: return 0x1f0; | ||
32 | case 1: return 0x170; | ||
33 | case 2: return 0x1e8; | ||
34 | case 3: return 0x168; | ||
35 | case 4: return 0x1e0; | ||
36 | case 5: return 0x160; | ||
37 | default: | ||
38 | return 0; | ||
39 | } | ||
40 | } | ||
41 | |||
42 | #include <asm-generic/ide_iops.h> | 14 | #include <asm-generic/ide_iops.h> |
43 | 15 | ||
44 | #endif /* __KERNEL__ */ | 16 | #endif /* __KERNEL__ */ |