aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-iops.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-iops.c')
-rw-r--r--drivers/ide/ide-iops.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index e17a9ee120ea..5c3256180ae5 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)
303 hwif->atapi_output_bytes = atapi_output_bytes; 303 hwif->atapi_output_bytes = atapi_output_bytes;
304} 304}
305 305
306/*
307 * Beginning of Taskfile OPCODE Library and feature sets.
308 */
309void ide_fix_driveid (struct hd_driveid *id) 306void ide_fix_driveid (struct hd_driveid *id)
310{ 307{
311#ifndef __LITTLE_ENDIAN 308#ifndef __LITTLE_ENDIAN
@@ -592,6 +589,9 @@ EXPORT_SYMBOL_GPL(ide_in_drive_list);
592static const struct drive_list_entry ivb_list[] = { 589static const struct drive_list_entry ivb_list[] = {
593 { "QUANTUM FIREBALLlct10 05" , "A03.0900" }, 590 { "QUANTUM FIREBALLlct10 05" , "A03.0900" },
594 { "TSSTcorp CDDVDW SH-S202J" , "SB00" }, 591 { "TSSTcorp CDDVDW SH-S202J" , "SB00" },
592 { "TSSTcorp CDDVDW SH-S202J" , "SB01" },
593 { "TSSTcorp CDDVDW SH-S202N" , "SB00" },
594 { "TSSTcorp CDDVDW SH-S202N" , "SB01" },
595 { NULL , NULL } 595 { NULL , NULL }
596}; 596};
597 597
@@ -756,7 +756,7 @@ int ide_driveid_update(ide_drive_t *drive)
756int ide_config_drive_speed(ide_drive_t *drive, u8 speed) 756int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
757{ 757{
758 ide_hwif_t *hwif = drive->hwif; 758 ide_hwif_t *hwif = drive->hwif;
759 int error; 759 int error = 0;
760 u8 stat; 760 u8 stat;
761 761
762// while (HWGROUP(drive)->busy) 762// while (HWGROUP(drive)->busy)
@@ -767,6 +767,10 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
767 hwif->dma_host_off(drive); 767 hwif->dma_host_off(drive);
768#endif 768#endif
769 769
770 /* Skip setting PIO flow-control modes on pre-EIDE drives */
771 if ((speed & 0xf8) == XFER_PIO_0 && !(drive->id->capability & 0x08))
772 goto skip;
773
770 /* 774 /*
771 * Don't use ide_wait_cmd here - it will 775 * Don't use ide_wait_cmd here - it will
772 * attempt to set_geometry and recalibrate, 776 * attempt to set_geometry and recalibrate,
@@ -814,6 +818,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
814 drive->id->dma_mword &= ~0x0F00; 818 drive->id->dma_mword &= ~0x0F00;
815 drive->id->dma_1word &= ~0x0F00; 819 drive->id->dma_1word &= ~0x0F00;
816 820
821 skip:
817#ifdef CONFIG_BLK_DEV_IDEDMA 822#ifdef CONFIG_BLK_DEV_IDEDMA
818 if (speed >= XFER_SW_DMA_0) 823 if (speed >= XFER_SW_DMA_0)
819 hwif->dma_host_on(drive); 824 hwif->dma_host_on(drive);