diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-27 14:29:03 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-27 14:29:03 -0800 |
commit | 7749c902592f610dc448830210174ab922f54be9 (patch) | |
tree | aad9430a5d5ff71b68b4f798859a5ac98143d005 /drivers/ide/ide-iops.c | |
parent | 2ea0718884c520f85c869c3bfef57477316ea91f (diff) | |
parent | 6413f08666830afec21e41e50c28a2c5105ede69 (diff) |
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:
ide-scsi: use print_hex_dump from <linux/kernel.h>
ide: More TSST drives with broken cable detection
ali14xx: constify __initdata
ide: remove bogus ide_fix_driveid() comment
trm290: remove bogus init_hwif_trm290() comment
piix: add HP compaq laptop to short cable list
alim15x3: add Mitac 8317 and derivatives to ali_cable_override()
ide: add TORiSAN model: CD-ROM CDR_U200 fw: 1.09 to DMA blacklist
amd74xx: arm hack
drivers/ide: Add missing "space"
ide-cris: don't override ide_register_hw() result
ide: move CONFIG_IDE_ETRAX to drivers/ide/Kconfig
ide: add CONFIG_IDE_H8300 config option
ide/Kconfig: fix mpc8xx host driver dependencies
macide/q40ide: add missing __init tag to {macide,q40ide}_init()
aec62xx: Fix kernel oops in driver's probe function
ide: skip ide_wait_not_busy() on noprobe-disks
siimage: remove resetproc() method
ide: don't set PIO mode on pre-EIDE drives
sis5513.c: Add Packard Bell EasyNote K5305 to laptops
Diffstat (limited to 'drivers/ide/ide-iops.c')
-rw-r--r-- | drivers/ide/ide-iops.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index e17a9ee120e..5c3256180ae 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c @@ -303,9 +303,6 @@ void default_hwif_transport(ide_hwif_t *hwif) hwif->atapi_output_bytes = atapi_output_bytes; } -/* - * Beginning of Taskfile OPCODE Library and feature sets. - */ void ide_fix_driveid (struct hd_driveid *id) { #ifndef __LITTLE_ENDIAN @@ -592,6 +589,9 @@ EXPORT_SYMBOL_GPL(ide_in_drive_list); static const struct drive_list_entry ivb_list[] = { { "QUANTUM FIREBALLlct10 05" , "A03.0900" }, { "TSSTcorp CDDVDW SH-S202J" , "SB00" }, + { "TSSTcorp CDDVDW SH-S202J" , "SB01" }, + { "TSSTcorp CDDVDW SH-S202N" , "SB00" }, + { "TSSTcorp CDDVDW SH-S202N" , "SB01" }, { NULL , NULL } }; @@ -756,7 +756,7 @@ int ide_driveid_update(ide_drive_t *drive) int ide_config_drive_speed(ide_drive_t *drive, u8 speed) { ide_hwif_t *hwif = drive->hwif; - int error; + int error = 0; u8 stat; // while (HWGROUP(drive)->busy) @@ -767,6 +767,10 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed) hwif->dma_host_off(drive); #endif + /* Skip setting PIO flow-control modes on pre-EIDE drives */ + if ((speed & 0xf8) == XFER_PIO_0 && !(drive->id->capability & 0x08)) + goto skip; + /* * Don't use ide_wait_cmd here - it will * attempt to set_geometry and recalibrate, @@ -814,6 +818,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed) drive->id->dma_mword &= ~0x0F00; drive->id->dma_1word &= ~0x0F00; + skip: #ifdef CONFIG_BLK_DEV_IDEDMA if (speed >= XFER_SW_DMA_0) hwif->dma_host_on(drive); |