diff options
37 files changed, 43 insertions, 53 deletions
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c index 6e85bee0bef7..df29868209f3 100644 --- a/drivers/ide/ide-lib.c +++ b/drivers/ide/ide-lib.c | |||
@@ -277,7 +277,6 @@ EXPORT_SYMBOL_GPL(ide_pio_cycle_time); | |||
277 | * @drive: drive to consider | 277 | * @drive: drive to consider |
278 | * @mode_wanted: preferred mode | 278 | * @mode_wanted: preferred mode |
279 | * @max_mode: highest allowed mode | 279 | * @max_mode: highest allowed mode |
280 | * @d: PIO data | ||
281 | * | 280 | * |
282 | * This routine returns the recommended PIO settings for a given drive, | 281 | * This routine returns the recommended PIO settings for a given drive, |
283 | * based on the drive->id information and the ide_pio_blacklist[]. | 282 | * based on the drive->id information and the ide_pio_blacklist[]. |
@@ -286,7 +285,7 @@ EXPORT_SYMBOL_GPL(ide_pio_cycle_time); | |||
286 | * This is used by most chipset support modules when "auto-tuning". | 285 | * This is used by most chipset support modules when "auto-tuning". |
287 | */ | 286 | */ |
288 | 287 | ||
289 | u8 ide_get_best_pio_mode (ide_drive_t *drive, u8 mode_wanted, u8 max_mode, ide_pio_data_t *d) | 288 | u8 ide_get_best_pio_mode (ide_drive_t *drive, u8 mode_wanted, u8 max_mode) |
290 | { | 289 | { |
291 | int pio_mode; | 290 | int pio_mode; |
292 | struct hd_driveid* id = drive->id; | 291 | struct hd_driveid* id = drive->id; |
@@ -335,9 +334,6 @@ u8 ide_get_best_pio_mode (ide_drive_t *drive, u8 mode_wanted, u8 max_mode, ide_p | |||
335 | if (pio_mode > max_mode) | 334 | if (pio_mode > max_mode) |
336 | pio_mode = max_mode; | 335 | pio_mode = max_mode; |
337 | 336 | ||
338 | if (d) | ||
339 | d->pio_mode = pio_mode; | ||
340 | |||
341 | return pio_mode; | 337 | return pio_mode; |
342 | } | 338 | } |
343 | 339 | ||
diff --git a/drivers/ide/legacy/ali14xx.c b/drivers/ide/legacy/ali14xx.c index 30aeb8750c00..d5c7a57b71c1 100644 --- a/drivers/ide/legacy/ali14xx.c +++ b/drivers/ide/legacy/ali14xx.c | |||
@@ -117,7 +117,7 @@ static void ali14xx_tune_drive (ide_drive_t *drive, u8 pio) | |||
117 | unsigned long flags; | 117 | unsigned long flags; |
118 | int bus_speed = system_bus_clock(); | 118 | int bus_speed = system_bus_clock(); |
119 | 119 | ||
120 | pio = ide_get_best_pio_mode(drive, pio, ALI_MAX_PIO, NULL); | 120 | pio = ide_get_best_pio_mode(drive, pio, ALI_MAX_PIO); |
121 | 121 | ||
122 | /* calculate timing, according to PIO mode */ | 122 | /* calculate timing, according to PIO mode */ |
123 | time1 = ide_pio_cycle_time(drive, pio); | 123 | time1 = ide_pio_cycle_time(drive, pio); |
diff --git a/drivers/ide/legacy/dtc2278.c b/drivers/ide/legacy/dtc2278.c index 36a3f0ac6162..8c4c27e5dc10 100644 --- a/drivers/ide/legacy/dtc2278.c +++ b/drivers/ide/legacy/dtc2278.c | |||
@@ -71,7 +71,7 @@ static void tune_dtc2278 (ide_drive_t *drive, u8 pio) | |||
71 | { | 71 | { |
72 | unsigned long flags; | 72 | unsigned long flags; |
73 | 73 | ||
74 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 74 | pio = ide_get_best_pio_mode(drive, pio, 4); |
75 | 75 | ||
76 | if (pio >= 3) { | 76 | if (pio >= 3) { |
77 | spin_lock_irqsave(&ide_lock, flags); | 77 | spin_lock_irqsave(&ide_lock, flags); |
diff --git a/drivers/ide/legacy/ht6560b.c b/drivers/ide/legacy/ht6560b.c index 85d16812d902..82ed37df9566 100644 --- a/drivers/ide/legacy/ht6560b.c +++ b/drivers/ide/legacy/ht6560b.c | |||
@@ -208,7 +208,7 @@ static u8 ht_pio2timings(ide_drive_t *drive, u8 pio) | |||
208 | if (pio) { | 208 | if (pio) { |
209 | unsigned int cycle_time; | 209 | unsigned int cycle_time; |
210 | 210 | ||
211 | pio = ide_get_best_pio_mode(drive, pio, 5, NULL); | 211 | pio = ide_get_best_pio_mode(drive, pio, 5); |
212 | cycle_time = ide_pio_cycle_time(drive, pio); | 212 | cycle_time = ide_pio_cycle_time(drive, pio); |
213 | 213 | ||
214 | /* | 214 | /* |
diff --git a/drivers/ide/legacy/qd65xx.c b/drivers/ide/legacy/qd65xx.c index 233905b08e93..39145102b348 100644 --- a/drivers/ide/legacy/qd65xx.c +++ b/drivers/ide/legacy/qd65xx.c | |||
@@ -258,7 +258,7 @@ static void qd6580_tune_drive (ide_drive_t *drive, u8 pio) | |||
258 | int recovery_time = 415; /* worst case values from the dos driver */ | 258 | int recovery_time = 415; /* worst case values from the dos driver */ |
259 | 259 | ||
260 | if (drive->id && !qd_find_disk_type(drive, &active_time, &recovery_time)) { | 260 | if (drive->id && !qd_find_disk_type(drive, &active_time, &recovery_time)) { |
261 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 261 | pio = ide_get_best_pio_mode(drive, pio, 4); |
262 | cycle_time = ide_pio_cycle_time(drive, pio); | 262 | cycle_time = ide_pio_cycle_time(drive, pio); |
263 | 263 | ||
264 | switch (pio) { | 264 | switch (pio) { |
diff --git a/drivers/ide/legacy/umc8672.c b/drivers/ide/legacy/umc8672.c index ddc403a0bd82..caeebd41081f 100644 --- a/drivers/ide/legacy/umc8672.c +++ b/drivers/ide/legacy/umc8672.c | |||
@@ -110,7 +110,7 @@ static void tune_umc (ide_drive_t *drive, u8 pio) | |||
110 | unsigned long flags; | 110 | unsigned long flags; |
111 | ide_hwgroup_t *hwgroup = ide_hwifs[HWIF(drive)->index^1].hwgroup; | 111 | ide_hwgroup_t *hwgroup = ide_hwifs[HWIF(drive)->index^1].hwgroup; |
112 | 112 | ||
113 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 113 | pio = ide_get_best_pio_mode(drive, pio, 4); |
114 | printk("%s: setting umc8672 to PIO mode%d (speed %d)\n", | 114 | printk("%s: setting umc8672 to PIO mode%d (speed %d)\n", |
115 | drive->name, pio, pio_to_umc[pio]); | 115 | drive->name, pio, pio_to_umc[pio]); |
116 | spin_lock_irqsave(&ide_lock, flags); | 116 | spin_lock_irqsave(&ide_lock, flags); |
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index 2e7013a2a7f6..b0d13c34d310 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
@@ -106,7 +106,7 @@ static void auide_tune_drive(ide_drive_t *drive, byte pio) | |||
106 | u8 speed; | 106 | u8 speed; |
107 | 107 | ||
108 | /* get the best pio mode for the drive */ | 108 | /* get the best pio mode for the drive */ |
109 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 109 | pio = ide_get_best_pio_mode(drive, pio, 4); |
110 | 110 | ||
111 | printk(KERN_INFO "%s: setting Au1XXX IDE to PIO mode%d\n", | 111 | printk(KERN_INFO "%s: setting Au1XXX IDE to PIO mode%d\n", |
112 | drive->name, pio); | 112 | drive->name, pio); |
diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c index f8ac91c22e64..8396d711f232 100644 --- a/drivers/ide/pci/aec62xx.c +++ b/drivers/ide/pci/aec62xx.c | |||
@@ -142,7 +142,7 @@ static int aec6260_tune_chipset (ide_drive_t *drive, u8 xferspeed) | |||
142 | 142 | ||
143 | static void aec62xx_tune_drive (ide_drive_t *drive, u8 pio) | 143 | static void aec62xx_tune_drive (ide_drive_t *drive, u8 pio) |
144 | { | 144 | { |
145 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 145 | pio = ide_get_best_pio_mode(drive, pio, 4); |
146 | (void) HWIF(drive)->speedproc(drive, pio + XFER_PIO_0); | 146 | (void) HWIF(drive)->speedproc(drive, pio + XFER_PIO_0); |
147 | } | 147 | } |
148 | 148 | ||
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c index 1012da6e8a42..a0c43a91b0f3 100644 --- a/drivers/ide/pci/alim15x3.c +++ b/drivers/ide/pci/alim15x3.c | |||
@@ -295,7 +295,6 @@ static int ali_get_info (char *buffer, char **addr, off_t offset, int count) | |||
295 | 295 | ||
296 | static u8 ali15x3_tune_pio (ide_drive_t *drive, u8 pio) | 296 | static u8 ali15x3_tune_pio (ide_drive_t *drive, u8 pio) |
297 | { | 297 | { |
298 | ide_pio_data_t d; | ||
299 | ide_hwif_t *hwif = HWIF(drive); | 298 | ide_hwif_t *hwif = HWIF(drive); |
300 | struct pci_dev *dev = hwif->pci_dev; | 299 | struct pci_dev *dev = hwif->pci_dev; |
301 | int s_time, a_time, c_time; | 300 | int s_time, a_time, c_time; |
@@ -307,7 +306,7 @@ static u8 ali15x3_tune_pio (ide_drive_t *drive, u8 pio) | |||
307 | u8 cd_dma_fifo = 0; | 306 | u8 cd_dma_fifo = 0; |
308 | int unit = drive->select.b.unit & 1; | 307 | int unit = drive->select.b.unit & 1; |
309 | 308 | ||
310 | pio = ide_get_best_pio_mode(drive, pio, 5, &d); | 309 | pio = ide_get_best_pio_mode(drive, pio, 5); |
311 | s_time = ide_pio_timings[pio].setup_time; | 310 | s_time = ide_pio_timings[pio].setup_time; |
312 | a_time = ide_pio_timings[pio].active_time; | 311 | a_time = ide_pio_timings[pio].active_time; |
313 | if ((s_clc = (s_time * bus_speed + 999) / 1000) >= 8) | 312 | if ((s_clc = (s_time * bus_speed + 999) / 1000) >= 8) |
diff --git a/drivers/ide/pci/atiixp.c b/drivers/ide/pci/atiixp.c index 078adbe250d2..a4740e4776fd 100644 --- a/drivers/ide/pci/atiixp.c +++ b/drivers/ide/pci/atiixp.c | |||
@@ -155,7 +155,7 @@ static void atiixp_tune_pio(ide_drive_t *drive, u8 pio) | |||
155 | 155 | ||
156 | static void atiixp_tuneproc(ide_drive_t *drive, u8 pio) | 156 | static void atiixp_tuneproc(ide_drive_t *drive, u8 pio) |
157 | { | 157 | { |
158 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 158 | pio = ide_get_best_pio_mode(drive, pio, 4); |
159 | atiixp_tune_pio(drive, pio); | 159 | atiixp_tune_pio(drive, pio); |
160 | (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio); | 160 | (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio); |
161 | } | 161 | } |
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c index 9f67ffc43421..335482981a92 100644 --- a/drivers/ide/pci/cmd640.c +++ b/drivers/ide/pci/cmd640.c | |||
@@ -661,7 +661,7 @@ static void cmd640_tune_drive (ide_drive_t *drive, u8 mode_wanted) | |||
661 | return; | 661 | return; |
662 | } | 662 | } |
663 | 663 | ||
664 | mode_wanted = ide_get_best_pio_mode(drive, mode_wanted, 5, NULL); | 664 | mode_wanted = ide_get_best_pio_mode(drive, mode_wanted, 5); |
665 | cycle_time = ide_pio_cycle_time(drive, mode_wanted); | 665 | cycle_time = ide_pio_cycle_time(drive, mode_wanted); |
666 | cmd640_set_mode(index, mode_wanted, cycle_time); | 666 | cmd640_set_mode(index, mode_wanted, cycle_time); |
667 | 667 | ||
diff --git a/drivers/ide/pci/cmd64x.c b/drivers/ide/pci/cmd64x.c index c383f6dc67dd..9cf969b61bf2 100644 --- a/drivers/ide/pci/cmd64x.c +++ b/drivers/ide/pci/cmd64x.c | |||
@@ -226,7 +226,7 @@ static u8 cmd64x_tune_pio (ide_drive_t *drive, u8 mode_wanted) | |||
226 | static const u8 setup_values[] = {0x40, 0x40, 0x40, 0x80, 0, 0xc0}; | 226 | static const u8 setup_values[] = {0x40, 0x40, 0x40, 0x80, 0, 0xc0}; |
227 | static const u8 arttim_regs[4] = {ARTTIM0, ARTTIM1, ARTTIM23, ARTTIM23}; | 227 | static const u8 arttim_regs[4] = {ARTTIM0, ARTTIM1, ARTTIM23, ARTTIM23}; |
228 | 228 | ||
229 | pio_mode = ide_get_best_pio_mode(drive, mode_wanted, 5, NULL); | 229 | pio_mode = ide_get_best_pio_mode(drive, mode_wanted, 5); |
230 | cycle_time = ide_pio_cycle_time(drive, pio_mode); | 230 | cycle_time = ide_pio_cycle_time(drive, pio_mode); |
231 | 231 | ||
232 | cmdprintk("%s: PIO mode wanted %d, selected %d (%d ns)\n", | 232 | cmdprintk("%s: PIO mode wanted %d, selected %d (%d ns)\n", |
diff --git a/drivers/ide/pci/cs5520.c b/drivers/ide/pci/cs5520.c index 5539a25eae99..ee10e48d7cef 100644 --- a/drivers/ide/pci/cs5520.c +++ b/drivers/ide/pci/cs5520.c | |||
@@ -126,7 +126,7 @@ static int cs5520_tune_chipset(ide_drive_t *drive, u8 xferspeed) | |||
126 | 126 | ||
127 | static void cs5520_tune_drive(ide_drive_t *drive, u8 pio) | 127 | static void cs5520_tune_drive(ide_drive_t *drive, u8 pio) |
128 | { | 128 | { |
129 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 129 | pio = ide_get_best_pio_mode(drive, pio, 4); |
130 | cs5520_tune_chipset(drive, (XFER_PIO_0 + pio)); | 130 | cs5520_tune_chipset(drive, (XFER_PIO_0 + pio)); |
131 | } | 131 | } |
132 | 132 | ||
diff --git a/drivers/ide/pci/cs5530.c b/drivers/ide/pci/cs5530.c index 643d66cc6729..a75c14a93182 100644 --- a/drivers/ide/pci/cs5530.c +++ b/drivers/ide/pci/cs5530.c | |||
@@ -82,7 +82,7 @@ static void cs5530_tunepio(ide_drive_t *drive, u8 pio) | |||
82 | 82 | ||
83 | static void cs5530_tuneproc (ide_drive_t *drive, u8 pio) /* pio=255 means "autotune" */ | 83 | static void cs5530_tuneproc (ide_drive_t *drive, u8 pio) /* pio=255 means "autotune" */ |
84 | { | 84 | { |
85 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 85 | pio = ide_get_best_pio_mode(drive, pio, 4); |
86 | 86 | ||
87 | if (cs5530_set_xfer_mode(drive, XFER_PIO_0 + pio) == 0) | 87 | if (cs5530_set_xfer_mode(drive, XFER_PIO_0 + pio) == 0) |
88 | cs5530_tunepio(drive, pio); | 88 | cs5530_tunepio(drive, pio); |
diff --git a/drivers/ide/pci/cs5535.c b/drivers/ide/pci/cs5535.c index 503979372144..0bff4005292a 100644 --- a/drivers/ide/pci/cs5535.c +++ b/drivers/ide/pci/cs5535.c | |||
@@ -89,7 +89,7 @@ static void cs5535_set_speed(ide_drive_t *drive, u8 speed) | |||
89 | 89 | ||
90 | pioa = speed - XFER_PIO_0; | 90 | pioa = speed - XFER_PIO_0; |
91 | piob = ide_get_best_pio_mode(&(drive->hwif->drives[!unit]), | 91 | piob = ide_get_best_pio_mode(&(drive->hwif->drives[!unit]), |
92 | 255, 4, NULL); | 92 | 255, 4); |
93 | cmd = pioa < piob ? pioa : piob; | 93 | cmd = pioa < piob ? pioa : piob; |
94 | 94 | ||
95 | /* Write the speed of the current drive */ | 95 | /* Write the speed of the current drive */ |
@@ -159,7 +159,7 @@ static void cs5535_tuneproc(ide_drive_t *drive, u8 xferspeed) | |||
159 | /* cs5535 max pio is pio 4, best_pio will check the blacklist. | 159 | /* cs5535 max pio is pio 4, best_pio will check the blacklist. |
160 | i think we don't need to rate_filter the incoming xferspeed | 160 | i think we don't need to rate_filter the incoming xferspeed |
161 | since we know we're only going to choose pio */ | 161 | since we know we're only going to choose pio */ |
162 | xferspeed = ide_get_best_pio_mode(drive, xferspeed, 4, NULL); | 162 | xferspeed = ide_get_best_pio_mode(drive, xferspeed, 4); |
163 | ide_config_drive_speed(drive, modes[xferspeed]); | 163 | ide_config_drive_speed(drive, modes[xferspeed]); |
164 | cs5535_set_speed(drive, xferspeed); | 164 | cs5535_set_speed(drive, xferspeed); |
165 | } | 165 | } |
@@ -174,7 +174,7 @@ static int cs5535_dma_check(ide_drive_t *drive) | |||
174 | return 0; | 174 | return 0; |
175 | 175 | ||
176 | if (ide_use_fast_pio(drive)) { | 176 | if (ide_use_fast_pio(drive)) { |
177 | speed = ide_get_best_pio_mode(drive, 255, 4, NULL); | 177 | speed = ide_get_best_pio_mode(drive, 255, 4); |
178 | cs5535_set_drive(drive, speed); | 178 | cs5535_set_drive(drive, speed); |
179 | } | 179 | } |
180 | 180 | ||
diff --git a/drivers/ide/pci/cy82c693.c b/drivers/ide/pci/cy82c693.c index 995b72563613..cb7c18187e3c 100644 --- a/drivers/ide/pci/cy82c693.c +++ b/drivers/ide/pci/cy82c693.c | |||
@@ -330,7 +330,7 @@ static void cy82c693_tune_drive (ide_drive_t *drive, u8 pio) | |||
330 | #endif /* CY82C693_DEBUG_LOGS */ | 330 | #endif /* CY82C693_DEBUG_LOGS */ |
331 | 331 | ||
332 | /* first let's calc the pio modes */ | 332 | /* first let's calc the pio modes */ |
333 | pio = ide_get_best_pio_mode(drive, pio, CY82C693_MAX_PIO, NULL); | 333 | pio = ide_get_best_pio_mode(drive, pio, CY82C693_MAX_PIO); |
334 | 334 | ||
335 | #if CY82C693_DEBUG_INFO | 335 | #if CY82C693_DEBUG_INFO |
336 | printk (KERN_INFO "%s: Selected PIO mode %d\n", drive->name, pio); | 336 | printk (KERN_INFO "%s: Selected PIO mode %d\n", drive->name, pio); |
diff --git a/drivers/ide/pci/hpt34x.c b/drivers/ide/pci/hpt34x.c index 6d2ef0ee0f2b..2e4591303f4f 100644 --- a/drivers/ide/pci/hpt34x.c +++ b/drivers/ide/pci/hpt34x.c | |||
@@ -80,7 +80,7 @@ static int hpt34x_tune_chipset (ide_drive_t *drive, u8 xferspeed) | |||
80 | 80 | ||
81 | static void hpt34x_tune_drive (ide_drive_t *drive, u8 pio) | 81 | static void hpt34x_tune_drive (ide_drive_t *drive, u8 pio) |
82 | { | 82 | { |
83 | pio = ide_get_best_pio_mode(drive, pio, 5, NULL); | 83 | pio = ide_get_best_pio_mode(drive, pio, 5); |
84 | (void) hpt34x_tune_chipset(drive, (XFER_PIO_0 + pio)); | 84 | (void) hpt34x_tune_chipset(drive, (XFER_PIO_0 + pio)); |
85 | } | 85 | } |
86 | 86 | ||
diff --git a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c index 182346a04f36..0a3fe9471eb6 100644 --- a/drivers/ide/pci/hpt366.c +++ b/drivers/ide/pci/hpt366.c | |||
@@ -652,7 +652,7 @@ static int hpt3xx_tune_chipset(ide_drive_t *drive, u8 speed) | |||
652 | 652 | ||
653 | static void hpt3xx_tune_drive(ide_drive_t *drive, u8 pio) | 653 | static void hpt3xx_tune_drive(ide_drive_t *drive, u8 pio) |
654 | { | 654 | { |
655 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 655 | pio = ide_get_best_pio_mode(drive, pio, 4); |
656 | (void) hpt3xx_tune_chipset (drive, XFER_PIO_0 + pio); | 656 | (void) hpt3xx_tune_chipset (drive, XFER_PIO_0 + pio); |
657 | } | 657 | } |
658 | 658 | ||
diff --git a/drivers/ide/pci/it8213.c b/drivers/ide/pci/it8213.c index 684b0ec79f41..d8425a2499bf 100644 --- a/drivers/ide/pci/it8213.c +++ b/drivers/ide/pci/it8213.c | |||
@@ -82,7 +82,7 @@ static void it8213_tuneproc (ide_drive_t *drive, u8 pio) | |||
82 | { 2, 1 }, | 82 | { 2, 1 }, |
83 | { 2, 3 }, }; | 83 | { 2, 3 }, }; |
84 | 84 | ||
85 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 85 | pio = ide_get_best_pio_mode(drive, pio, 4); |
86 | 86 | ||
87 | spin_lock_irqsave(&tune_lock, flags); | 87 | spin_lock_irqsave(&tune_lock, flags); |
88 | pci_read_config_word(dev, master_port, &master_data); | 88 | pci_read_config_word(dev, master_port, &master_data); |
@@ -214,7 +214,7 @@ static int it8213_config_drive_for_dma (ide_drive_t *drive) | |||
214 | if (ide_tune_dma(drive)) | 214 | if (ide_tune_dma(drive)) |
215 | return 0; | 215 | return 0; |
216 | 216 | ||
217 | pio = ide_get_best_pio_mode(drive, 255, 4, NULL); | 217 | pio = ide_get_best_pio_mode(drive, 255, 4); |
218 | it8213_tune_chipset(drive, XFER_PIO_0 + pio); | 218 | it8213_tune_chipset(drive, XFER_PIO_0 + pio); |
219 | 219 | ||
220 | return -1; | 220 | return -1; |
diff --git a/drivers/ide/pci/it821x.c b/drivers/ide/pci/it821x.c index faccb2d4af43..790233db017b 100644 --- a/drivers/ide/pci/it821x.c +++ b/drivers/ide/pci/it821x.c | |||
@@ -255,7 +255,7 @@ static int it821x_tunepio(ide_drive_t *drive, u8 set_pio) | |||
255 | * on the cable. | 255 | * on the cable. |
256 | */ | 256 | */ |
257 | if (pair) { | 257 | if (pair) { |
258 | u8 pair_pio = ide_get_best_pio_mode(pair, 255, 4, NULL); | 258 | u8 pair_pio = ide_get_best_pio_mode(pair, 255, 4); |
259 | /* trim PIO to the slowest of the master/slave */ | 259 | /* trim PIO to the slowest of the master/slave */ |
260 | if (pair_pio < set_pio) | 260 | if (pair_pio < set_pio) |
261 | set_pio = pair_pio; | 261 | set_pio = pair_pio; |
@@ -276,7 +276,7 @@ static int it821x_tunepio(ide_drive_t *drive, u8 set_pio) | |||
276 | 276 | ||
277 | static void it821x_tuneproc(ide_drive_t *drive, u8 pio) | 277 | static void it821x_tuneproc(ide_drive_t *drive, u8 pio) |
278 | { | 278 | { |
279 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 279 | pio = ide_get_best_pio_mode(drive, pio, 4); |
280 | (void)it821x_tunepio(drive, pio); | 280 | (void)it821x_tunepio(drive, pio); |
281 | } | 281 | } |
282 | 282 | ||
diff --git a/drivers/ide/pci/jmicron.c b/drivers/ide/pci/jmicron.c index 0edb9cd45854..57d3d4186b3f 100644 --- a/drivers/ide/pci/jmicron.c +++ b/drivers/ide/pci/jmicron.c | |||
@@ -97,7 +97,7 @@ static void jmicron_tuneproc (ide_drive_t *drive, byte mode_wanted) | |||
97 | 97 | ||
98 | static void config_jmicron_chipset_for_pio (ide_drive_t *drive, byte set_speed) | 98 | static void config_jmicron_chipset_for_pio (ide_drive_t *drive, byte set_speed) |
99 | { | 99 | { |
100 | u8 speed = XFER_PIO_0 + ide_get_best_pio_mode(drive, 255, 5, NULL); | 100 | u8 speed = XFER_PIO_0 + ide_get_best_pio_mode(drive, 255, 5); |
101 | if (set_speed) | 101 | if (set_speed) |
102 | (void) ide_config_drive_speed(drive, speed); | 102 | (void) ide_config_drive_speed(drive, speed); |
103 | } | 103 | } |
diff --git a/drivers/ide/pci/opti621.c b/drivers/ide/pci/opti621.c index 78d7adf2d0b0..1802ad0927eb 100644 --- a/drivers/ide/pci/opti621.c +++ b/drivers/ide/pci/opti621.c | |||
@@ -147,12 +147,12 @@ static void compute_pios(ide_drive_t *drive, u8 pio) | |||
147 | int d; | 147 | int d; |
148 | ide_hwif_t *hwif = HWIF(drive); | 148 | ide_hwif_t *hwif = HWIF(drive); |
149 | 149 | ||
150 | drive->drive_data = ide_get_best_pio_mode(drive, pio, OPTI621_MAX_PIO, NULL); | 150 | drive->drive_data = ide_get_best_pio_mode(drive, pio, OPTI621_MAX_PIO); |
151 | for (d = 0; d < 2; ++d) { | 151 | for (d = 0; d < 2; ++d) { |
152 | drive = &hwif->drives[d]; | 152 | drive = &hwif->drives[d]; |
153 | if (drive->present) { | 153 | if (drive->present) { |
154 | if (drive->drive_data == PIO_DONT_KNOW) | 154 | if (drive->drive_data == PIO_DONT_KNOW) |
155 | drive->drive_data = ide_get_best_pio_mode(drive, 255, OPTI621_MAX_PIO, NULL); | 155 | drive->drive_data = ide_get_best_pio_mode(drive, 255, OPTI621_MAX_PIO); |
156 | #ifdef OPTI621_DEBUG | 156 | #ifdef OPTI621_DEBUG |
157 | printk("%s: Selected PIO mode %d\n", | 157 | printk("%s: Selected PIO mode %d\n", |
158 | drive->name, drive->drive_data); | 158 | drive->name, drive->drive_data); |
diff --git a/drivers/ide/pci/pdc202xx_new.c b/drivers/ide/pci/pdc202xx_new.c index f8508d9cccd3..a8a01b4ab607 100644 --- a/drivers/ide/pci/pdc202xx_new.c +++ b/drivers/ide/pci/pdc202xx_new.c | |||
@@ -219,7 +219,7 @@ static int pdcnew_tune_chipset(ide_drive_t *drive, u8 speed) | |||
219 | 219 | ||
220 | static void pdcnew_tune_drive(ide_drive_t *drive, u8 pio) | 220 | static void pdcnew_tune_drive(ide_drive_t *drive, u8 pio) |
221 | { | 221 | { |
222 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 222 | pio = ide_get_best_pio_mode(drive, pio, 4); |
223 | (void)pdcnew_tune_chipset(drive, XFER_PIO_0 + pio); | 223 | (void)pdcnew_tune_chipset(drive, XFER_PIO_0 + pio); |
224 | } | 224 | } |
225 | 225 | ||
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c index eb4e4a61d06e..3a6882d4aa64 100644 --- a/drivers/ide/pci/pdc202xx_old.c +++ b/drivers/ide/pci/pdc202xx_old.c | |||
@@ -145,7 +145,7 @@ static int pdc202xx_tune_chipset (ide_drive_t *drive, u8 xferspeed) | |||
145 | 145 | ||
146 | static void pdc202xx_tune_drive(ide_drive_t *drive, u8 pio) | 146 | static void pdc202xx_tune_drive(ide_drive_t *drive, u8 pio) |
147 | { | 147 | { |
148 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 148 | pio = ide_get_best_pio_mode(drive, pio, 4); |
149 | pdc202xx_tune_chipset(drive, XFER_PIO_0 + pio); | 149 | pdc202xx_tune_chipset(drive, XFER_PIO_0 + pio); |
150 | } | 150 | } |
151 | 151 | ||
diff --git a/drivers/ide/pci/piix.c b/drivers/ide/pci/piix.c index a4f88d25b16d..41a3612c6107 100644 --- a/drivers/ide/pci/piix.c +++ b/drivers/ide/pci/piix.c | |||
@@ -219,7 +219,7 @@ static void piix_tune_pio (ide_drive_t *drive, u8 pio) | |||
219 | */ | 219 | */ |
220 | static void piix_tune_drive (ide_drive_t *drive, u8 pio) | 220 | static void piix_tune_drive (ide_drive_t *drive, u8 pio) |
221 | { | 221 | { |
222 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 222 | pio = ide_get_best_pio_mode(drive, pio, 4); |
223 | piix_tune_pio(drive, pio); | 223 | piix_tune_pio(drive, pio); |
224 | (void) ide_config_drive_speed(drive, XFER_PIO_0 + pio); | 224 | (void) ide_config_drive_speed(drive, XFER_PIO_0 + pio); |
225 | } | 225 | } |
diff --git a/drivers/ide/pci/sc1200.c b/drivers/ide/pci/sc1200.c index 9ac8889f8ad3..98e1a2bd9501 100644 --- a/drivers/ide/pci/sc1200.c +++ b/drivers/ide/pci/sc1200.c | |||
@@ -304,7 +304,7 @@ static void sc1200_tuneproc (ide_drive_t *drive, byte pio) /* mode=255 means "au | |||
304 | return; | 304 | return; |
305 | } | 305 | } |
306 | 306 | ||
307 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 307 | pio = ide_get_best_pio_mode(drive, pio, 4); |
308 | printk("SC1200: %s: setting PIO mode%d\n", drive->name, pio); | 308 | printk("SC1200: %s: setting PIO mode%d\n", drive->name, pio); |
309 | 309 | ||
310 | if (sc1200_set_xfer_mode(drive, XFER_PIO_0 + pio) == 0) | 310 | if (sc1200_set_xfer_mode(drive, XFER_PIO_0 + pio) == 0) |
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c index a1954d1c2879..2c76355b92e8 100644 --- a/drivers/ide/pci/scc_pata.c +++ b/drivers/ide/pci/scc_pata.c | |||
@@ -210,7 +210,7 @@ static void scc_tuneproc(ide_drive_t *drive, byte mode_wanted) | |||
210 | unsigned char speed = XFER_PIO_0; | 210 | unsigned char speed = XFER_PIO_0; |
211 | int offset; | 211 | int offset; |
212 | 212 | ||
213 | mode_wanted = ide_get_best_pio_mode(drive, mode_wanted, 4, NULL); | 213 | mode_wanted = ide_get_best_pio_mode(drive, mode_wanted, 4); |
214 | switch (mode_wanted) { | 214 | switch (mode_wanted) { |
215 | case 4: | 215 | case 4: |
216 | speed = XFER_PIO_4; | 216 | speed = XFER_PIO_4; |
diff --git a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c index abc3cd58aaa9..1fe29d9e68fa 100644 --- a/drivers/ide/pci/serverworks.c +++ b/drivers/ide/pci/serverworks.c | |||
@@ -205,7 +205,7 @@ static int svwks_tune_chipset (ide_drive_t *drive, u8 xferspeed) | |||
205 | 205 | ||
206 | static void svwks_tune_drive (ide_drive_t *drive, u8 pio) | 206 | static void svwks_tune_drive (ide_drive_t *drive, u8 pio) |
207 | { | 207 | { |
208 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 208 | pio = ide_get_best_pio_mode(drive, pio, 4); |
209 | svwks_tune_pio(drive, pio); | 209 | svwks_tune_pio(drive, pio); |
210 | (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio); | 210 | (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio); |
211 | } | 211 | } |
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c index 47b9b94afe05..63a8a93d63d6 100644 --- a/drivers/ide/pci/siimage.c +++ b/drivers/ide/pci/siimage.c | |||
@@ -189,7 +189,7 @@ static void sil_tune_pio(ide_drive_t *drive, u8 pio) | |||
189 | 189 | ||
190 | /* trim *taskfile* PIO to the slowest of the master/slave */ | 190 | /* trim *taskfile* PIO to the slowest of the master/slave */ |
191 | if (pair->present) { | 191 | if (pair->present) { |
192 | u8 pair_pio = ide_get_best_pio_mode(pair, 255, 4, NULL); | 192 | u8 pair_pio = ide_get_best_pio_mode(pair, 255, 4); |
193 | 193 | ||
194 | if (pair_pio < tf_pio) | 194 | if (pair_pio < tf_pio) |
195 | tf_pio = pair_pio; | 195 | tf_pio = pair_pio; |
@@ -221,7 +221,7 @@ static void sil_tune_pio(ide_drive_t *drive, u8 pio) | |||
221 | 221 | ||
222 | static void sil_tuneproc(ide_drive_t *drive, u8 pio) | 222 | static void sil_tuneproc(ide_drive_t *drive, u8 pio) |
223 | { | 223 | { |
224 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 224 | pio = ide_get_best_pio_mode(drive, pio, 4); |
225 | sil_tune_pio(drive, pio); | 225 | sil_tune_pio(drive, pio); |
226 | (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio); | 226 | (void)ide_config_drive_speed(drive, XFER_PIO_0 + pio); |
227 | } | 227 | } |
diff --git a/drivers/ide/pci/sis5513.c b/drivers/ide/pci/sis5513.c index bbc502087578..3c4693695ca3 100644 --- a/drivers/ide/pci/sis5513.c +++ b/drivers/ide/pci/sis5513.c | |||
@@ -521,7 +521,7 @@ static void config_art_rwp_pio (ide_drive_t *drive, u8 pio) | |||
521 | 521 | ||
522 | static int sis5513_tune_drive(ide_drive_t *drive, u8 pio) | 522 | static int sis5513_tune_drive(ide_drive_t *drive, u8 pio) |
523 | { | 523 | { |
524 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 524 | pio = ide_get_best_pio_mode(drive, pio, 4); |
525 | config_art_rwp_pio(drive, pio); | 525 | config_art_rwp_pio(drive, pio); |
526 | return ide_config_drive_speed(drive, XFER_PIO_0 + pio); | 526 | return ide_config_drive_speed(drive, XFER_PIO_0 + pio); |
527 | } | 527 | } |
diff --git a/drivers/ide/pci/sl82c105.c b/drivers/ide/pci/sl82c105.c index cc5f69b7514f..4e8f32e643a6 100644 --- a/drivers/ide/pci/sl82c105.c +++ b/drivers/ide/pci/sl82c105.c | |||
@@ -83,7 +83,7 @@ static u8 sl82c105_tune_pio(ide_drive_t *drive, u8 pio) | |||
83 | 83 | ||
84 | DBG(("sl82c105_tune_pio(drive:%s, pio:%u)\n", drive->name, pio)); | 84 | DBG(("sl82c105_tune_pio(drive:%s, pio:%u)\n", drive->name, pio)); |
85 | 85 | ||
86 | pio = ide_get_best_pio_mode(drive, pio, 5, NULL); | 86 | pio = ide_get_best_pio_mode(drive, pio, 5); |
87 | 87 | ||
88 | drv_ctrl = get_pio_timings(drive, pio); | 88 | drv_ctrl = get_pio_timings(drive, pio); |
89 | 89 | ||
diff --git a/drivers/ide/pci/slc90e66.c b/drivers/ide/pci/slc90e66.c index 115bcaefc8ee..562747fbee39 100644 --- a/drivers/ide/pci/slc90e66.c +++ b/drivers/ide/pci/slc90e66.c | |||
@@ -103,7 +103,7 @@ static void slc90e66_tune_pio (ide_drive_t *drive, u8 pio) | |||
103 | 103 | ||
104 | static void slc90e66_tune_drive (ide_drive_t *drive, u8 pio) | 104 | static void slc90e66_tune_drive (ide_drive_t *drive, u8 pio) |
105 | { | 105 | { |
106 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 106 | pio = ide_get_best_pio_mode(drive, pio, 4); |
107 | slc90e66_tune_pio(drive, pio); | 107 | slc90e66_tune_pio(drive, pio); |
108 | (void) ide_config_drive_speed(drive, XFER_PIO_0 + pio); | 108 | (void) ide_config_drive_speed(drive, XFER_PIO_0 + pio); |
109 | } | 109 | } |
diff --git a/drivers/ide/pci/tc86c001.c b/drivers/ide/pci/tc86c001.c index 1d40b0820f50..2479a19f0094 100644 --- a/drivers/ide/pci/tc86c001.c +++ b/drivers/ide/pci/tc86c001.c | |||
@@ -47,7 +47,7 @@ static int tc86c001_tune_chipset(ide_drive_t *drive, u8 speed) | |||
47 | 47 | ||
48 | static void tc86c001_tune_drive(ide_drive_t *drive, u8 pio) | 48 | static void tc86c001_tune_drive(ide_drive_t *drive, u8 pio) |
49 | { | 49 | { |
50 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 50 | pio = ide_get_best_pio_mode(drive, pio, 4); |
51 | (void) tc86c001_tune_chipset(drive, XFER_PIO_0 + pio); | 51 | (void) tc86c001_tune_chipset(drive, XFER_PIO_0 + pio); |
52 | } | 52 | } |
53 | 53 | ||
diff --git a/drivers/ide/pci/triflex.c b/drivers/ide/pci/triflex.c index 801314fe3524..f8fef905bacc 100644 --- a/drivers/ide/pci/triflex.c +++ b/drivers/ide/pci/triflex.c | |||
@@ -96,7 +96,7 @@ static int triflex_tune_chipset(ide_drive_t *drive, u8 xferspeed) | |||
96 | 96 | ||
97 | static void triflex_tune_drive(ide_drive_t *drive, u8 pio) | 97 | static void triflex_tune_drive(ide_drive_t *drive, u8 pio) |
98 | { | 98 | { |
99 | int use_pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 99 | int use_pio = ide_get_best_pio_mode(drive, pio, 4); |
100 | (void) triflex_tune_chipset(drive, (XFER_PIO_0 + use_pio)); | 100 | (void) triflex_tune_chipset(drive, (XFER_PIO_0 + use_pio)); |
101 | } | 101 | } |
102 | 102 | ||
diff --git a/drivers/ide/ppc/mpc8xx.c b/drivers/ide/ppc/mpc8xx.c index 82de2d781f2e..f3789c0e6cc9 100644 --- a/drivers/ide/ppc/mpc8xx.c +++ b/drivers/ide/ppc/mpc8xx.c | |||
@@ -431,13 +431,12 @@ void m8xx_ide_init_hwif_ports (hw_regs_t *hw, | |||
431 | static void | 431 | static void |
432 | m8xx_ide_tuneproc(ide_drive_t *drive, u8 pio) | 432 | m8xx_ide_tuneproc(ide_drive_t *drive, u8 pio) |
433 | { | 433 | { |
434 | ide_pio_data_t d; | ||
435 | #if defined(CONFIG_IDE_8xx_PCCARD) || defined(CONFIG_IDE_8xx_DIRECT) | 434 | #if defined(CONFIG_IDE_8xx_PCCARD) || defined(CONFIG_IDE_8xx_DIRECT) |
436 | volatile pcmconf8xx_t *pcmp; | 435 | volatile pcmconf8xx_t *pcmp; |
437 | ulong timing, mask, reg; | 436 | ulong timing, mask, reg; |
438 | #endif | 437 | #endif |
439 | 438 | ||
440 | pio = ide_get_best_pio_mode(drive, pio, 4, &d); | 439 | pio = ide_get_best_pio_mode(drive, pio, 4); |
441 | 440 | ||
442 | #if 1 | 441 | #if 1 |
443 | printk("%s[%d] %s: best PIO mode: %d\n", | 442 | printk("%s[%d] %s: best PIO mode: %d\n", |
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index 669330521fc1..debaa8823f51 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -627,7 +627,7 @@ pmac_ide_tuneproc(ide_drive_t *drive, u8 pio) | |||
627 | /* which drive is it ? */ | 627 | /* which drive is it ? */ |
628 | timings = &pmif->timings[drive->select.b.unit & 0x01]; | 628 | timings = &pmif->timings[drive->select.b.unit & 0x01]; |
629 | 629 | ||
630 | pio = ide_get_best_pio_mode(drive, pio, 4, NULL); | 630 | pio = ide_get_best_pio_mode(drive, pio, 4); |
631 | cycle_time = ide_pio_cycle_time(drive, pio); | 631 | cycle_time = ide_pio_cycle_time(drive, pio); |
632 | 632 | ||
633 | switch (pmif->kind) { | 633 | switch (pmif->kind) { |
diff --git a/include/linux/ide.h b/include/linux/ide.h index 0afa52c14ffa..14a87f619d17 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -1377,12 +1377,8 @@ typedef struct ide_pio_timings_s { | |||
1377 | /* active + recovery (+ setup for some chips) */ | 1377 | /* active + recovery (+ setup for some chips) */ |
1378 | } ide_pio_timings_t; | 1378 | } ide_pio_timings_t; |
1379 | 1379 | ||
1380 | typedef struct ide_pio_data_s { | ||
1381 | u8 pio_mode; | ||
1382 | } ide_pio_data_t; | ||
1383 | |||
1384 | unsigned int ide_pio_cycle_time(ide_drive_t *, u8); | 1380 | unsigned int ide_pio_cycle_time(ide_drive_t *, u8); |
1385 | extern u8 ide_get_best_pio_mode (ide_drive_t *drive, u8 mode_wanted, u8 max_mode, ide_pio_data_t *d); | 1381 | u8 ide_get_best_pio_mode(ide_drive_t *, u8, u8); |
1386 | extern const ide_pio_timings_t ide_pio_timings[6]; | 1382 | extern const ide_pio_timings_t ide_pio_timings[6]; |
1387 | 1383 | ||
1388 | 1384 | ||