aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ide/ide-lib.c10
-rw-r--r--drivers/ide/pci/cmd640.c7
-rw-r--r--drivers/ide/pci/cmd64x.c5
-rw-r--r--include/linux/ide.h1
4 files changed, 12 insertions, 11 deletions
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c
index 074bb32a4a40..d45bbad9ffe7 100644
--- a/drivers/ide/ide-lib.c
+++ b/drivers/ide/ide-lib.c
@@ -277,7 +277,7 @@ u8 ide_get_best_pio_mode (ide_drive_t *drive, u8 mode_wanted, u8 max_mode, ide_p
277 } else if (!drive->id) { 277 } else if (!drive->id) {
278 pio_mode = 0; 278 pio_mode = 0;
279 } else if ((pio_mode = ide_scan_pio_blacklist(id->model)) != -1) { 279 } else if ((pio_mode = ide_scan_pio_blacklist(id->model)) != -1) {
280 overridden = 1; 280 printk(KERN_INFO "%s: is on PIO blacklist\n", drive->name);
281 use_iordy = (pio_mode > 2); 281 use_iordy = (pio_mode > 2);
282 } else { 282 } else {
283 pio_mode = id->tPIO; 283 pio_mode = id->tPIO;
@@ -303,12 +303,17 @@ u8 ide_get_best_pio_mode (ide_drive_t *drive, u8 mode_wanted, u8 max_mode, ide_p
303 } 303 }
304 } 304 }
305 305
306 if (overridden)
307 printk(KERN_INFO "%s: tPIO > 2, assuming tPIO = 2\n",
308 drive->name);
309
306 /* 310 /*
307 * Conservative "downgrade" for all pre-ATA2 drives 311 * Conservative "downgrade" for all pre-ATA2 drives
308 */ 312 */
309 if (pio_mode && pio_mode < 4) { 313 if (pio_mode && pio_mode < 4) {
310 pio_mode--; 314 pio_mode--;
311 overridden = 1; 315 printk(KERN_INFO "%s: applying conservative "
316 "PIO \"downgrade\"\n", drive->name);
312 if (cycle_time && cycle_time < ide_pio_timings[pio_mode].cycle_time) 317 if (cycle_time && cycle_time < ide_pio_timings[pio_mode].cycle_time)
313 cycle_time = 0; /* use standard timing */ 318 cycle_time = 0; /* use standard timing */
314 } 319 }
@@ -321,7 +326,6 @@ u8 ide_get_best_pio_mode (ide_drive_t *drive, u8 mode_wanted, u8 max_mode, ide_p
321 d->pio_mode = pio_mode; 326 d->pio_mode = pio_mode;
322 d->cycle_time = cycle_time ? cycle_time : ide_pio_timings[pio_mode].cycle_time; 327 d->cycle_time = cycle_time ? cycle_time : ide_pio_timings[pio_mode].cycle_time;
323 d->use_iordy = use_iordy; 328 d->use_iordy = use_iordy;
324 d->overridden = overridden;
325 } 329 }
326 return pio_mode; 330 return pio_mode;
327} 331}
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c
index dc43f009acab..dff21597e643 100644
--- a/drivers/ide/pci/cmd640.c
+++ b/drivers/ide/pci/cmd640.c
@@ -665,13 +665,12 @@ static void cmd640_tune_drive (ide_drive_t *drive, u8 mode_wanted)
665 (void) ide_get_best_pio_mode (drive, mode_wanted, 5, &d); 665 (void) ide_get_best_pio_mode (drive, mode_wanted, 5, &d);
666 cmd640_set_mode (index, d.pio_mode, d.cycle_time); 666 cmd640_set_mode (index, d.pio_mode, d.cycle_time);
667 667
668 printk ("%s: selected cmd640 PIO mode%d (%dns)%s", 668 printk("%s: selected cmd640 PIO mode%d (%dns)",
669 drive->name, 669 drive->name,
670 d.pio_mode, 670 d.pio_mode,
671 d.cycle_time, 671 d.cycle_time);
672 d.overridden ? " (overriding vendor mode)" : ""); 672
673 display_clocks(index); 673 display_clocks(index);
674 return;
675} 674}
676 675
677#endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */ 676#endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */
diff --git a/drivers/ide/pci/cmd64x.c b/drivers/ide/pci/cmd64x.c
index 1e89dd6e5bbf..5171e94facdc 100644
--- a/drivers/ide/pci/cmd64x.c
+++ b/drivers/ide/pci/cmd64x.c
@@ -227,9 +227,8 @@ static u8 cmd64x_tune_pio (ide_drive_t *drive, u8 mode_wanted)
227 static const u8 arttim_regs[4] = {ARTTIM0, ARTTIM1, ARTTIM23, ARTTIM23}; 227 static const u8 arttim_regs[4] = {ARTTIM0, ARTTIM1, ARTTIM23, ARTTIM23};
228 pio_mode = ide_get_best_pio_mode(drive, mode_wanted, 5, &pio); 228 pio_mode = ide_get_best_pio_mode(drive, mode_wanted, 5, &pio);
229 229
230 cmdprintk("%s: PIO mode wanted %d, selected %d (%d ns)%s\n", 230 cmdprintk("%s: PIO mode wanted %d, selected %d (%d ns)\n",
231 drive->name, mode_wanted, pio_mode, pio.cycle_time, 231 drive->name, mode_wanted, pio_mode, pio.cycle_time);
232 pio.overridden ? " (overriding vendor mode)" : "");
233 232
234 program_cycle_times(drive, pio.cycle_time, 233 program_cycle_times(drive, pio.cycle_time,
235 ide_pio_timings[pio_mode].active_time); 234 ide_pio_timings[pio_mode].active_time);
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 19ab25804056..83a117d673c7 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1375,7 +1375,6 @@ typedef struct ide_pio_timings_s {
1375typedef struct ide_pio_data_s { 1375typedef struct ide_pio_data_s {
1376 u8 pio_mode; 1376 u8 pio_mode;
1377 u8 use_iordy; 1377 u8 use_iordy;
1378 u8 overridden;
1379 unsigned int cycle_time; 1378 unsigned int cycle_time;
1380} ide_pio_data_t; 1379} ide_pio_data_t;
1381 1380