aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ide/ide-taskfile.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 24c6c3f5e208..6812f4788789 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -837,9 +837,11 @@ ide_startstop_t flagged_taskfile (ide_drive_t *drive, ide_task_t *task)
837 case TASKFILE_OUT_DMA: 837 case TASKFILE_OUT_DMA:
838 case TASKFILE_IN_DMAQ: 838 case TASKFILE_IN_DMAQ:
839 case TASKFILE_IN_DMA: 839 case TASKFILE_IN_DMA:
840 hwif->dma_setup(drive); 840 if (!hwif->dma_setup(drive)) {
841 hwif->dma_exec_cmd(drive, taskfile->command); 841 hwif->dma_exec_cmd(drive, taskfile->command);
842 hwif->dma_start(drive); 842 hwif->dma_start(drive);
843 return ide_started;
844 }
843 break; 845 break;
844 846
845 default: 847 default:
@@ -853,7 +855,8 @@ ide_startstop_t flagged_taskfile (ide_drive_t *drive, ide_task_t *task)
853 return task->prehandler(drive, task->rq); 855 return task->prehandler(drive, task->rq);
854 } 856 }
855 ide_execute_command(drive, taskfile->command, task->handler, WAIT_WORSTCASE, NULL); 857 ide_execute_command(drive, taskfile->command, task->handler, WAIT_WORSTCASE, NULL);
858 return ide_started;
856 } 859 }
857 860
858 return ide_started; 861 return ide_stopped;
859} 862}