diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-06-07 09:37:10 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-06-07 09:37:10 -0400 |
commit | 734affdcae20af4fec95e46a64fb29f063a15c19 (patch) | |
tree | 68b3867575b363253fca17dcd239664149a6f1a2 /drivers | |
parent | 8bc1e5aa06a2a9a425c4a6795fc564cba1521487 (diff) |
ide: add IDE_DFLAG_NIEN_QUIRK device flag
Add IDE_DFLAG_NIEN_QUIRK device flag and use it instead of
drive->quirk_list.
There should be no functional changes caused by this patch.
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ide/hpt366.c | 2 | ||||
-rw-r--r-- | drivers/ide/ide-eh.c | 5 | ||||
-rw-r--r-- | drivers/ide/ide-io.c | 8 | ||||
-rw-r--r-- | drivers/ide/ide-iops.c | 6 |
4 files changed, 12 insertions, 9 deletions
diff --git a/drivers/ide/hpt366.c b/drivers/ide/hpt366.c index a2e9f6c65a93..7ce68ef6b904 100644 --- a/drivers/ide/hpt366.c +++ b/drivers/ide/hpt366.c | |||
@@ -727,7 +727,7 @@ static void hpt3xx_maskproc(ide_drive_t *drive, int mask) | |||
727 | struct pci_dev *dev = to_pci_dev(hwif->dev); | 727 | struct pci_dev *dev = to_pci_dev(hwif->dev); |
728 | struct hpt_info *info = hpt3xx_get_info(hwif->dev); | 728 | struct hpt_info *info = hpt3xx_get_info(hwif->dev); |
729 | 729 | ||
730 | if (drive->quirk_list == 0) | 730 | if ((drive->dev_flags & IDE_DFLAG_NIEN_QUIRK) == 0) |
731 | return; | 731 | return; |
732 | 732 | ||
733 | if (info->chip_type >= HPT370) { | 733 | if (info->chip_type >= HPT370) { |
diff --git a/drivers/ide/ide-eh.c b/drivers/ide/ide-eh.c index 39d589254d41..2b9141979613 100644 --- a/drivers/ide/ide-eh.c +++ b/drivers/ide/ide-eh.c | |||
@@ -407,8 +407,9 @@ static ide_startstop_t do_reset1(ide_drive_t *drive, int do_not_try_atapi) | |||
407 | /* more than enough time */ | 407 | /* more than enough time */ |
408 | udelay(10); | 408 | udelay(10); |
409 | /* clear SRST, leave nIEN (unless device is on the quirk list) */ | 409 | /* clear SRST, leave nIEN (unless device is on the quirk list) */ |
410 | tp_ops->write_devctl(hwif, (drive->quirk_list == 2 ? 0 : ATA_NIEN) | | 410 | tp_ops->write_devctl(hwif, |
411 | ATA_DEVCTL_OBS); | 411 | ((drive->dev_flags & IDE_DFLAG_NIEN_QUIRK) ? 0 : ATA_NIEN) | |
412 | ATA_DEVCTL_OBS); | ||
412 | /* more than enough time */ | 413 | /* more than enough time */ |
413 | udelay(10); | 414 | udelay(10); |
414 | hwif->poll_timeout = jiffies + WAIT_WORSTCASE; | 415 | hwif->poll_timeout = jiffies + WAIT_WORSTCASE; |
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 9654bd34cf52..243cf6561e7e 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -488,11 +488,15 @@ repeat: | |||
488 | 488 | ||
489 | if ((hwif->host->host_flags & IDE_HFLAG_SERIALIZE) && | 489 | if ((hwif->host->host_flags & IDE_HFLAG_SERIALIZE) && |
490 | hwif != prev_port) { | 490 | hwif != prev_port) { |
491 | ide_drive_t *cur_dev = | ||
492 | prev_port ? prev_port->cur_dev : NULL; | ||
493 | |||
491 | /* | 494 | /* |
492 | * set nIEN for previous port, drives in the | 495 | * set nIEN for previous port, drives in the |
493 | * quirk_list may not like intr setups/cleanups | 496 | * quirk list may not like intr setups/cleanups |
494 | */ | 497 | */ |
495 | if (prev_port && prev_port->cur_dev->quirk_list == 0) | 498 | if (cur_dev && |
499 | (cur_dev->dev_flags & IDE_DFLAG_NIEN_QUIRK) == 0) | ||
496 | prev_port->tp_ops->write_devctl(prev_port, | 500 | prev_port->tp_ops->write_devctl(prev_port, |
497 | ATA_NIEN | | 501 | ATA_NIEN | |
498 | ATA_DEVCTL_OBS); | 502 | ATA_DEVCTL_OBS); |
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index c55349537c27..fa047150a1c6 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -300,11 +300,9 @@ void ide_check_nien_quirk_list(ide_drive_t *drive) | |||
300 | 300 | ||
301 | for (list = nien_quirk_list; *list != NULL; list++) | 301 | for (list = nien_quirk_list; *list != NULL; list++) |
302 | if (strstr(m, *list) != NULL) { | 302 | if (strstr(m, *list) != NULL) { |
303 | drive->quirk_list = 2; | 303 | drive->dev_flags |= IDE_DFLAG_NIEN_QUIRK; |
304 | return; | 304 | return; |
305 | } | 305 | } |
306 | |||
307 | drive->quirk_list = 0; | ||
308 | } | 306 | } |
309 | 307 | ||
310 | int ide_driveid_update(ide_drive_t *drive) | 308 | int ide_driveid_update(ide_drive_t *drive) |
@@ -389,7 +387,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed) | |||
389 | 387 | ||
390 | tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES); | 388 | tp_ops->exec_command(hwif, ATA_CMD_SET_FEATURES); |
391 | 389 | ||
392 | if (drive->quirk_list == 2) | 390 | if (drive->dev_flags & IDE_DFLAG_NIEN_QUIRK) |
393 | tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS); | 391 | tp_ops->write_devctl(hwif, ATA_DEVCTL_OBS); |
394 | 392 | ||
395 | error = __ide_wait_stat(drive, drive->ready_stat, | 393 | error = __ide_wait_stat(drive, drive->ready_stat, |