ide: set/clear drive->waiting_for_dma flag in the core code
Set/clear drive->waiting_for_dma flag in the core code
instead of in ->dma_setup and ->dma_end methods.
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>
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index d61f9a8..4d31028 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -91,6 +91,7 @@
ide_hwif_t *hwif = drive->hwif;
u8 stat = 0, dma_stat = 0;
+ drive->waiting_for_dma = 0;
dma_stat = hwif->dma_ops->dma_end(drive);
ide_destroy_dmatable(drive);
stat = hwif->tp_ops->read_status(hwif);
@@ -479,6 +480,7 @@
if (error < 0) {
printk(KERN_WARNING "%s: DMA timeout error\n", drive->name);
+ drive->waiting_for_dma = 0;
(void)dma_ops->dma_end(drive);
ide_destroy_dmatable(drive);
ret = ide_error(drive, "dma timeout error",
@@ -491,6 +493,7 @@
if (dma_ops->dma_test_irq(drive) == 0) {
ide_dump_status(drive, "DMA timeout",
hwif->tp_ops->read_status(hwif));
+ drive->waiting_for_dma = 0;
(void)dma_ops->dma_end(drive);
ide_destroy_dmatable(drive);
}
@@ -577,5 +580,6 @@
ide_map_sg(drive, cmd);
return 1;
}
+ drive->waiting_for_dma = 1;
return 0;
}