diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ide/ide-taskfile.c | 11 |
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 | } |