diff options
Diffstat (limited to 'drivers/ide/ide-iops.c')
-rw-r--r-- | drivers/ide/ide-iops.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index 2892b242bbe1..222c1ef65fb9 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -102,8 +102,8 @@ EXPORT_SYMBOL(ide_fixstring); | |||
102 | * setting a timer to wake up at half second intervals thereafter, | 102 | * setting a timer to wake up at half second intervals thereafter, |
103 | * until timeout is achieved, before timing out. | 103 | * until timeout is achieved, before timing out. |
104 | */ | 104 | */ |
105 | static int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, | 105 | int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, |
106 | unsigned long timeout, u8 *rstat) | 106 | unsigned long timeout, u8 *rstat) |
107 | { | 107 | { |
108 | ide_hwif_t *hwif = drive->hwif; | 108 | ide_hwif_t *hwif = drive->hwif; |
109 | const struct ide_tp_ops *tp_ops = hwif->tp_ops; | 109 | const struct ide_tp_ops *tp_ops = hwif->tp_ops; |
@@ -292,6 +292,7 @@ static const char *nien_quirk_list[] = { | |||
292 | "QUANTUM FIREBALLP KX27.3", | 292 | "QUANTUM FIREBALLP KX27.3", |
293 | "QUANTUM FIREBALLP LM20.4", | 293 | "QUANTUM FIREBALLP LM20.4", |
294 | "QUANTUM FIREBALLP LM20.5", | 294 | "QUANTUM FIREBALLP LM20.5", |
295 | "FUJITSU MHZ2160BH G2", | ||
295 | NULL | 296 | NULL |
296 | }; | 297 | }; |
297 | 298 | ||
@@ -316,7 +317,7 @@ int ide_driveid_update(ide_drive_t *drive) | |||
316 | return 0; | 317 | return 0; |
317 | 318 | ||
318 | SELECT_MASK(drive, 1); | 319 | SELECT_MASK(drive, 1); |
319 | rc = ide_dev_read_id(drive, ATA_CMD_ID_ATA, id); | 320 | rc = ide_dev_read_id(drive, ATA_CMD_ID_ATA, id, 1); |
320 | SELECT_MASK(drive, 0); | 321 | SELECT_MASK(drive, 0); |
321 | 322 | ||
322 | if (rc) | 323 | if (rc) |
@@ -363,14 +364,6 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed) | |||
363 | * this point (lost interrupt). | 364 | * this point (lost interrupt). |
364 | */ | 365 | */ |
365 | 366 | ||
366 | /* | ||
367 | * FIXME: we race against the running IRQ here if | ||
368 | * this is called from non IRQ context. If we use | ||
369 | * disable_irq() we hang on the error path. Work | ||
370 | * is needed. | ||
371 | */ | ||
372 | disable_irq_nosync(hwif->irq); | ||
373 | |||
374 | udelay(1); | 367 | udelay(1); |
375 | tp_ops->dev_select(drive); | 368 | tp_ops->dev_select(drive); |
376 | SELECT_MASK(drive, 1); | 369 | SELECT_MASK(drive, 1); |
@@ -394,8 +387,6 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed) | |||
394 | 387 | ||
395 | SELECT_MASK(drive, 0); | 388 | SELECT_MASK(drive, 0); |
396 | 389 | ||
397 | enable_irq(hwif->irq); | ||
398 | |||
399 | if (error) { | 390 | if (error) { |
400 | (void) ide_dump_status(drive, "set_drive_speed_status", stat); | 391 | (void) ide_dump_status(drive, "set_drive_speed_status", stat); |
401 | return error; | 392 | return error; |