aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-taskfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-taskfile.c')
-rw-r--r--drivers/ide/ide-taskfile.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c
index 16a9a581d089..bf72b6d9f685 100644
--- a/drivers/ide/ide-taskfile.c
+++ b/drivers/ide/ide-taskfile.c
@@ -755,6 +755,7 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
755 u8 args[4], xfer_rate = 0; 755 u8 args[4], xfer_rate = 0;
756 ide_task_t tfargs; 756 ide_task_t tfargs;
757 struct ide_taskfile *tf = &tfargs.tf; 757 struct ide_taskfile *tf = &tfargs.tf;
758 struct hd_driveid *id = drive->id;
758 759
759 if (NULL == (void *) arg) { 760 if (NULL == (void *) arg) {
760 struct request rq; 761 struct request rq;
@@ -792,7 +793,10 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg)
792 return -ENOMEM; 793 return -ENOMEM;
793 } 794 }
794 795
795 if (set_transfer(drive, &tfargs)) { 796 if (tf->command == WIN_SETFEATURES &&
797 tf->feature == SETFEATURES_XFER &&
798 tf->nsect >= XFER_SW_DMA_0 &&
799 (id->dma_ultra || id->dma_mword || id->dma_1word)) {
796 xfer_rate = args[1]; 800 xfer_rate = args[1];
797 if (ide_ata66_check(drive, &tfargs)) 801 if (ide_ata66_check(drive, &tfargs))
798 goto abort; 802 goto abort;