diff options
Diffstat (limited to 'drivers/ide/trm290.c')
-rw-r--r-- | drivers/ide/trm290.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/ide/trm290.c b/drivers/ide/trm290.c index e8279f32f9a2..746858a7338d 100644 --- a/drivers/ide/trm290.c +++ b/drivers/ide/trm290.c | |||
@@ -181,13 +181,12 @@ static void trm290_dma_exec_cmd(ide_drive_t *drive, u8 command) | |||
181 | ide_execute_command(drive, command, &ide_dma_intr, WAIT_CMD, NULL); | 181 | ide_execute_command(drive, command, &ide_dma_intr, WAIT_CMD, NULL); |
182 | } | 182 | } |
183 | 183 | ||
184 | static int trm290_dma_setup(ide_drive_t *drive) | 184 | static int trm290_dma_setup(ide_drive_t *drive, struct ide_cmd *cmd) |
185 | { | 185 | { |
186 | ide_hwif_t *hwif = drive->hwif; | 186 | ide_hwif_t *hwif = drive->hwif; |
187 | struct request *rq = hwif->rq; | ||
188 | unsigned int count, rw; | 187 | unsigned int count, rw; |
189 | 188 | ||
190 | if (rq_data_dir(rq)) { | 189 | if (cmd->tf_flags & IDE_TFLAG_WRITE) { |
191 | #ifdef TRM290_NO_DMA_WRITES | 190 | #ifdef TRM290_NO_DMA_WRITES |
192 | /* always use PIO for writes */ | 191 | /* always use PIO for writes */ |
193 | trm290_prepare_drive(drive, 0); /* select PIO xfer */ | 192 | trm290_prepare_drive(drive, 0); /* select PIO xfer */ |
@@ -197,8 +196,9 @@ static int trm290_dma_setup(ide_drive_t *drive) | |||
197 | } else | 196 | } else |
198 | rw = 2; | 197 | rw = 2; |
199 | 198 | ||
200 | if (!(count = ide_build_dmatable(drive, rq))) { | 199 | count = ide_build_dmatable(drive, cmd); |
201 | ide_map_sg(drive, rq); | 200 | if (count == 0) { |
201 | ide_map_sg(drive, cmd); | ||
202 | /* try PIO instead of DMA */ | 202 | /* try PIO instead of DMA */ |
203 | trm290_prepare_drive(drive, 0); /* select PIO xfer */ | 203 | trm290_prepare_drive(drive, 0); /* select PIO xfer */ |
204 | return 1; | 204 | return 1; |