lkml.org 
[lkml]   [2008]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
Subject[PATCH 39/40] ide-{floppy,scsi}: read Status Register before stopping DMA engine
Read Status Register before stopping DMA engine to match ide-tape
device driver - it should be safe and shouldn't affect anything.

This is a preparation for adding generic ide_pc_intr() helper.

Cc: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
drivers/ide/ide-floppy.c | 6 +++---
drivers/scsi/ide-scsi.c | 7 ++++---
2 files changed, 7 insertions(+), 6 deletions(-)

Index: b/drivers/ide/ide-floppy.c
===================================================================
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -399,6 +399,9 @@ static ide_startstop_t idefloppy_pc_intr

debug_log("Enter %s - interrupt handler\n", __func__);

+ /* Clear the interrupt */
+ stat = ide_read_status(drive);
+
if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) {
dma_error = hwif->dma_ops->dma_end(drive);
if (dma_error) {
@@ -412,9 +415,6 @@ static ide_startstop_t idefloppy_pc_intr
debug_log("%s: DMA finished\n", drive->name);
}

- /* Clear the interrupt */
- stat = ide_read_status(drive);
-
/* No more interrupts */
if ((stat & DRQ_STAT) == 0) {
debug_log("Packet command completed, %d bytes transferred\n",
Index: b/drivers/scsi/ide-scsi.c
===================================================================
--- a/drivers/scsi/ide-scsi.c
+++ b/drivers/scsi/ide-scsi.c
@@ -370,6 +370,10 @@ static ide_startstop_t idescsi_pc_intr (
pc->callback(drive);
return ide_stopped;
}
+
+ /* Clear the interrupt */
+ stat = ide_read_status(drive);
+
if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) {
if (hwif->dma_ops->dma_end(drive))
pc->flags |= PC_FLAG_DMA_ERROR;
@@ -378,9 +382,6 @@ static ide_startstop_t idescsi_pc_intr (
debug_log("%s: DMA finished\n", drive->name);
}

- /* Clear the interrupt */
- stat = ide_read_status(drive);
-
if ((stat & DRQ_STAT) == 0) {
/* No more interrupts */
debug_log("Packet command completed, %d bytes transferred\n",

\
 
 \ /
  Last update: 2008-05-18 20:55    [W:0.226 / U:0.136 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site