diff options
| -rw-r--r-- | drivers/ide/ide-iops.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index e00fbbb423bf..955bac2166a2 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
| @@ -968,13 +968,10 @@ static ide_startstop_t reset_pollfunc (ide_drive_t *drive) | |||
| 968 | static void check_dma_crc(ide_drive_t *drive) | 968 | static void check_dma_crc(ide_drive_t *drive) |
| 969 | { | 969 | { |
| 970 | #ifdef CONFIG_BLK_DEV_IDEDMA | 970 | #ifdef CONFIG_BLK_DEV_IDEDMA |
| 971 | if (drive->crc_count) { | 971 | ide_dma_off_quietly(drive); |
| 972 | ide_dma_off_quietly(drive); | 972 | ide_set_xfer_rate(drive, ide_auto_reduce_xfer(drive)); |
| 973 | ide_set_xfer_rate(drive, ide_auto_reduce_xfer(drive)); | 973 | if (drive->current_speed >= XFER_SW_DMA_0) |
| 974 | if (drive->current_speed >= XFER_SW_DMA_0) | 974 | ide_dma_on(drive); |
| 975 | ide_dma_on(drive); | ||
| 976 | } else | ||
| 977 | ide_dma_off(drive); | ||
| 978 | #endif | 975 | #endif |
| 979 | } | 976 | } |
| 980 | 977 | ||
| @@ -999,17 +996,20 @@ static void pre_reset(ide_drive_t *drive) | |||
| 999 | else | 996 | else |
| 1000 | drive->post_reset = 1; | 997 | drive->post_reset = 1; |
| 1001 | 998 | ||
| 1002 | if (!drive->keep_settings) { | 999 | if (drive->using_dma) { |
| 1003 | if (drive->using_dma) { | 1000 | if (drive->crc_count) |
| 1004 | check_dma_crc(drive); | 1001 | check_dma_crc(drive); |
| 1005 | } else { | 1002 | else |
| 1003 | ide_dma_off(drive); | ||
| 1004 | } | ||
| 1005 | |||
| 1006 | if (!drive->keep_settings) { | ||
| 1007 | if (!drive->using_dma) { | ||
| 1006 | drive->unmask = 0; | 1008 | drive->unmask = 0; |
| 1007 | drive->io_32bit = 0; | 1009 | drive->io_32bit = 0; |
| 1008 | } | 1010 | } |
| 1009 | return; | 1011 | return; |
| 1010 | } | 1012 | } |
| 1011 | if (drive->using_dma) | ||
| 1012 | check_dma_crc(drive); | ||
| 1013 | 1013 | ||
| 1014 | if (HWIF(drive)->pre_reset != NULL) | 1014 | if (HWIF(drive)->pre_reset != NULL) |
| 1015 | HWIF(drive)->pre_reset(drive); | 1015 | HWIF(drive)->pre_reset(drive); |
