Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ide-generic: remove ide_default_{io_base,irq}() inlines (take 3)

Replace ide_default_{io_base,irq}() inlines by legacy_{bases,irqs}[].

v2:
Add missing zero-ing of hws[] (caught during testing by Borislav Petkov).

v3:
Fix zero-oing of hws[] for _real_ this time.

There should be no functional changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

+29 -162
+29 -3
drivers/ide/ide-generic.c
··· 20 20 #include <linux/module.h> 21 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 28 #define DRV_NAME "ide_generic" 24 29 25 30 static int probe_mask = 0x03; ··· 85 80 return 0; 86 81 } 87 82 83 + #if defined(CONFIG_PLAT_M32700UT) || defined(CONFIG_PLAT_MAPPI2) \ 84 + || defined(CONFIG_PLAT_OPSPUT) 85 + static const u16 legacy_bases[] = { 0x1f0 }; 86 + static const int legacy_irqs[] = { PLD_IRQ_CFIREQ }; 87 + #elif defined(CONFIG_PLAT_MAPPI3) 88 + static const u16 legacy_bases[] = { 0x1f0, 0x170 }; 89 + static const int legacy_irqs[] = { PLD_IRQ_CFIREQ, PLD_IRQ_IDEIREQ }; 90 + #elif defined(CONFIG_ALPHA) 91 + static const u16 legacy_bases[] = { 0x1f0, 0x170, 0x1e8, 0x168 }; 92 + static const int legacy_irqs[] = { 14, 15, 11, 10 }; 93 + #else 94 + static const u16 legacy_bases[] = { 0x1f0, 0x170, 0x1e8, 0x168, 0x1e0, 0x160 }; 95 + static const int legacy_irqs[] = { 14, 15, 11, 10, 8, 12 }; 96 + #endif 97 + 88 98 static int __init ide_generic_init(void) 89 99 { 90 100 hw_regs_t hw[MAX_HWIFS], *hws[MAX_HWIFS]; ··· 114 94 printk(KERN_INFO DRV_NAME ": please use \"probe_mask=0x3f\" module " 115 95 "parameter for probing all legacy ISA IDE ports\n"); 116 96 117 - for (i = 0; i < MAX_HWIFS; i++) { 118 - io_addr = ide_default_io_base(i); 97 + memset(hws, 0, sizeof(hw_regs_t *) * MAX_HWIFS); 98 + 99 + for (i = 0; i < ARRAY_SIZE(legacy_bases); i++) { 100 + io_addr = legacy_bases[i]; 119 101 120 102 hws[i] = NULL; 121 103 ··· 139 117 140 118 memset(&hw[i], 0, sizeof(hw[i])); 141 119 ide_std_init_ports(&hw[i], io_addr, io_addr + 0x206); 142 - hw[i].irq = ide_default_irq(io_addr); 120 + #ifdef CONFIG_IA64 121 + hw[i].irq = isa_irq_to_vector(legacy_irqs[i]); 122 + #else 123 + hw[i].irq = legacy_irqs[i]; 124 + #endif 143 125 hw[i].chipset = ide_generic; 144 126 145 127 hws[i] = &hw[i];
-24
include/asm-alpha/ide.h
··· 13 13 14 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 16 #include <asm-generic/ide_iops.h> 41 17 42 18 #endif /* __KERNEL__ */
-29
include/asm-ia64/ide.h
··· 13 13 14 14 #ifdef __KERNEL__ 15 15 16 - 17 16 #include <linux/irq.h> 18 - 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 17 47 18 #include <asm-generic/ide_iops.h> 48 19
-50
include/asm-m32r/ide.h
··· 13 13 14 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 16 #include <asm-generic/ide_iops.h> 67 17 68 18 #endif /* __KERNEL__ */
-28
include/asm-mips/mach-generic/ide.h
··· 48 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 51 /* MIPS port and memory-mapped I/O string operations. */ 80 52 static inline void __ide_flush_prologue(void) 81 53 {
-28
include/asm-x86/ide.h
··· 11 11 12 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 14 #include <asm-generic/ide_iops.h> 43 15 44 16 #endif /* __KERNEL__ */