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