ide: pass command to ide_map_sg()
[deliverable/linux.git] / drivers / ide / trm290.c
index e8279f32f9a232afb1f7a30ba0b6fde7c4361ed1..746858a7338dc6456ea71b30bd4721cae4afd0d0 100644 (file)
@@ -181,13 +181,12 @@ static void trm290_dma_exec_cmd(ide_drive_t *drive, u8 command)
        ide_execute_command(drive, command, &ide_dma_intr, WAIT_CMD, NULL);
 }
 
-static int trm290_dma_setup(ide_drive_t *drive)
+static int trm290_dma_setup(ide_drive_t *drive, struct ide_cmd *cmd)
 {
        ide_hwif_t *hwif = drive->hwif;
-       struct request *rq = hwif->rq;
        unsigned int count, rw;
 
-       if (rq_data_dir(rq)) {
+       if (cmd->tf_flags & IDE_TFLAG_WRITE) {
 #ifdef TRM290_NO_DMA_WRITES
                /* always use PIO for writes */
                trm290_prepare_drive(drive, 0); /* select PIO xfer */
@@ -197,8 +196,9 @@ static int trm290_dma_setup(ide_drive_t *drive)
        } else
                rw = 2;
 
-       if (!(count = ide_build_dmatable(drive, rq))) {
-               ide_map_sg(drive, rq);
+       count = ide_build_dmatable(drive, cmd);
+       if (count == 0) {
+               ide_map_sg(drive, cmd);
                /* try PIO instead of DMA */
                trm290_prepare_drive(drive, 0); /* select PIO xfer */
                return 1;
This page took 0.024316 seconds and 5 git commands to generate.