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; |
