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) {
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",
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;
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",