diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-03 07:58:57 +1100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-02-03 07:58:57 +1100 |
commit | 9135f1901ee6449dfe338adf6e40e9c2025b8150 (patch) | |
tree | 05e1ab38563a93cf0df8c05d21062b85b14f8491 /drivers/ide/ide-taskfile.c | |
parent | 124d3b7041f9a0ca7c43a6293e1cae4576c32fd5 (diff) | |
parent | d59823fa44f7d9babf586b3c705db314aa0f9822 (diff) | |
download | kernel_samsung_smdk4412-9135f1901ee6449dfe338adf6e40e9c2025b8150.zip kernel_samsung_smdk4412-9135f1901ee6449dfe338adf6e40e9c2025b8150.tar.gz kernel_samsung_smdk4412-9135f1901ee6449dfe338adf6e40e9c2025b8150.tar.bz2 |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: (95 commits)
ide-tape: remove idetape_config_t typedef
ide-tape: remove mtio.h related comments
ide-tape: make function name more accurate
ide-tape: remove unused sense packet commands.
ide-tape: use generic byteorder macros
ide-tape: remove EXPERIMENTAL driver status
ide-tape: use generic scsi commands
ide-tape: remove struct idetape_block_size_page_t
ide-tape: remove structs os_partition_t, os_dat_entry_t, os_dat_t
ide-tape: remove struct idetape_parameter_block_descriptor_t
ide-tape: remove struct idetape_medium_partition_page_t
ide-tape: remove struct idetape_data_compression_page_t
ide-tape: remove struct idetape_inquiry_result_t
ide-tape: remove struct idetape_capabilities_page_t
ide-tape: remove IDETAPE_DEBUG_BUGS
ide-tape: remove IDETAPE_DEBUG_INFO
ide-tape: dump gcw fields on error in idetape_identify_device()
ide-tape: remove struct idetape_mode_parameter_header_t
ide-tape: remove struct idetape_request_sense_result_t
ide-tape: remove dead code
...
Diffstat (limited to 'drivers/ide/ide-taskfile.c')
-rw-r--r-- | drivers/ide/ide-taskfile.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index 16a9a58..4e1da1c 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) u8 args[4], xfer_rate = 0; ide_task_t tfargs; struct ide_taskfile *tf = &tfargs.tf; + struct hd_driveid *id = drive->id; if (NULL == (void *) arg) { struct request rq; @@ -792,10 +793,16 @@ int ide_cmd_ioctl (ide_drive_t *drive, unsigned int cmd, unsigned long arg) return -ENOMEM; } - if (set_transfer(drive, &tfargs)) { + if (tf->command == WIN_SETFEATURES && + tf->feature == SETFEATURES_XFER && + tf->nsect >= XFER_SW_DMA_0 && + (id->dma_ultra || id->dma_mword || id->dma_1word)) { xfer_rate = args[1]; - if (ide_ata66_check(drive, &tfargs)) + if (tf->nsect > XFER_UDMA_2 && !eighty_ninty_three(drive)) { + printk(KERN_WARNING "%s: UDMA speeds >UDMA33 cannot " + "be set\n", drive->name); goto abort; + } } err = ide_raw_taskfile(drive, &tfargs, buf, args[3]); |