aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-10-18 18:30:10 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-10-18 18:30:10 -0400
commited67b92385a5afddc98d5ff0894b2854c4a54dac (patch)
treebb5a72cbc383ffdc759c1c12a18fc5be54df69e2 /drivers/ide
parent40d2dd7ef3df468814a34cd3d31486408e604468 (diff)
ide: add IDE_HFLAG_ERROR_STOPS_FIFO host flag
Add IDE_HFLAG_ERROR_STOPS_FIFO host flag and use it instead of hwif->err_stops_fifo. As a side-effect this change fixes hwif->err_stops_fifo not being restored by ide_hwif_restore(). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/ide-io.c3
-rw-r--r--drivers/ide/pci/pdc202xx_new.c3
-rw-r--r--drivers/ide/pci/pdc202xx_old.c8
3 files changed, 7 insertions, 7 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index ec835e37e72..5c8b008676f 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -484,7 +484,8 @@ static ide_startstop_t ide_ata_error(ide_drive_t *drive, struct request *rq, u8
484 } 484 }
485 } 485 }
486 486
487 if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ && hwif->err_stops_fifo == 0) 487 if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ &&
488 (hwif->host_flags & IDE_HFLAG_ERROR_STOPS_FIFO) == 0)
488 try_to_flush_leftover_data(drive); 489 try_to_flush_leftover_data(drive);
489 490
490 if (rq->errors >= ERROR_MAX || blk_noretry_request(rq)) { 491 if (rq->errors >= ERROR_MAX || blk_noretry_request(rq)) {
diff --git a/drivers/ide/pci/pdc202xx_new.c b/drivers/ide/pci/pdc202xx_new.c
index 20dc6bc1aee..415a2282fcb 100644
--- a/drivers/ide/pci/pdc202xx_new.c
+++ b/drivers/ide/pci/pdc202xx_new.c
@@ -471,8 +471,6 @@ static void __devinit init_hwif_pdc202new(ide_hwif_t *hwif)
471 hwif->quirkproc = &pdcnew_quirkproc; 471 hwif->quirkproc = &pdcnew_quirkproc;
472 hwif->resetproc = &pdcnew_reset; 472 hwif->resetproc = &pdcnew_reset;
473 473
474 hwif->err_stops_fifo = 1;
475
476 hwif->drives[0].autotune = hwif->drives[1].autotune = 1; 474 hwif->drives[0].autotune = hwif->drives[1].autotune = 1;
477 475
478 if (hwif->dma_base == 0) 476 if (hwif->dma_base == 0)
@@ -510,6 +508,7 @@ static struct pci_dev * __devinit pdc20270_get_dev2(struct pci_dev *dev)
510 .init_chipset = init_chipset_pdcnew, \ 508 .init_chipset = init_chipset_pdcnew, \
511 .init_hwif = init_hwif_pdc202new, \ 509 .init_hwif = init_hwif_pdc202new, \
512 .host_flags = IDE_HFLAG_POST_SET_MODE | \ 510 .host_flags = IDE_HFLAG_POST_SET_MODE | \
511 IDE_HFLAG_ERROR_STOPS_FIFO | \
513 IDE_HFLAG_OFF_BOARD, \ 512 IDE_HFLAG_OFF_BOARD, \
514 .pio_mask = ATA_PIO4, \ 513 .pio_mask = ATA_PIO4, \
515 .mwdma_mask = ATA_MWDMA2, \ 514 .mwdma_mask = ATA_MWDMA2, \
diff --git a/drivers/ide/pci/pdc202xx_old.c b/drivers/ide/pci/pdc202xx_old.c
index 5b308d5c10b..c34e5936a99 100644
--- a/drivers/ide/pci/pdc202xx_old.c
+++ b/drivers/ide/pci/pdc202xx_old.c
@@ -317,8 +317,6 @@ static void __devinit init_hwif_pdc202xx(ide_hwif_t *hwif)
317 if (hwif->pci_dev->device != PCI_DEVICE_ID_PROMISE_20246) 317 if (hwif->pci_dev->device != PCI_DEVICE_ID_PROMISE_20246)
318 hwif->resetproc = &pdc202xx_reset; 318 hwif->resetproc = &pdc202xx_reset;
319 319
320 hwif->err_stops_fifo = 1;
321
322 hwif->drives[0].autotune = hwif->drives[1].autotune = 1; 320 hwif->drives[0].autotune = hwif->drives[1].autotune = 1;
323 321
324 if (hwif->dma_base == 0) 322 if (hwif->dma_base == 0)
@@ -393,7 +391,8 @@ static void __devinit pdc202ata4_fixup_irq(struct pci_dev *dev,
393 .init_hwif = init_hwif_pdc202xx, \ 391 .init_hwif = init_hwif_pdc202xx, \
394 .init_dma = init_dma_pdc202xx, \ 392 .init_dma = init_dma_pdc202xx, \
395 .extra = 48, \ 393 .extra = 48, \
396 .host_flags = IDE_HFLAG_OFF_BOARD, \ 394 .host_flags = IDE_HFLAG_ERROR_STOPS_FIFO | \
395 IDE_HFLAG_OFF_BOARD, \
397 .pio_mask = ATA_PIO4, \ 396 .pio_mask = ATA_PIO4, \
398 .mwdma_mask = ATA_MWDMA2, \ 397 .mwdma_mask = ATA_MWDMA2, \
399 .udma_mask = udma, \ 398 .udma_mask = udma, \
@@ -406,7 +405,8 @@ static ide_pci_device_t pdc202xx_chipsets[] __devinitdata = {
406 .init_hwif = init_hwif_pdc202xx, 405 .init_hwif = init_hwif_pdc202xx,
407 .init_dma = init_dma_pdc202xx, 406 .init_dma = init_dma_pdc202xx,
408 .extra = 16, 407 .extra = 16,
409 .host_flags = IDE_HFLAG_OFF_BOARD, 408 .host_flags = IDE_HFLAG_ERROR_STOPS_FIFO |
409 IDE_HFLAG_OFF_BOARD,
410 .pio_mask = ATA_PIO4, 410 .pio_mask = ATA_PIO4,
411 .mwdma_mask = ATA_MWDMA2, 411 .mwdma_mask = ATA_MWDMA2,
412 .udma_mask = ATA_UDMA2, 412 .udma_mask = ATA_UDMA2,