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__ */ |
