diff options
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/ide-dma.c | 20 | ||||
-rw-r--r-- | drivers/ide/ide-iops.c | 24 |
2 files changed, 21 insertions, 23 deletions
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c index 7beaf1e9be12..3cf59f2c3928 100644 --- a/drivers/ide/ide-dma.c +++ b/drivers/ide/ide-dma.c | |||
@@ -819,6 +819,26 @@ int ide_set_dma(ide_drive_t *drive) | |||
819 | return 0; | 819 | return 0; |
820 | } | 820 | } |
821 | 821 | ||
822 | void ide_check_dma_crc(ide_drive_t *drive) | ||
823 | { | ||
824 | u8 mode; | ||
825 | |||
826 | ide_dma_off_quietly(drive); | ||
827 | drive->crc_count = 0; | ||
828 | mode = drive->current_speed; | ||
829 | /* | ||
830 | * Don't try non Ultra-DMA modes without iCRC's. Force the | ||
831 | * device to PIO and make the user enable SWDMA/MWDMA modes. | ||
832 | */ | ||
833 | if (mode > XFER_UDMA_0 && mode <= XFER_UDMA_7) | ||
834 | mode--; | ||
835 | else | ||
836 | mode = XFER_PIO_4; | ||
837 | ide_set_xfer_rate(drive, mode); | ||
838 | if (drive->current_speed >= XFER_SW_DMA_0) | ||
839 | ide_dma_on(drive); | ||
840 | } | ||
841 | |||
822 | #ifdef CONFIG_BLK_DEV_IDEDMA_PCI | 842 | #ifdef CONFIG_BLK_DEV_IDEDMA_PCI |
823 | void ide_dma_lost_irq (ide_drive_t *drive) | 843 | void ide_dma_lost_irq (ide_drive_t *drive) |
824 | { | 844 | { |
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index b7da44c9e91c..a95178f5e1bb 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -938,28 +938,6 @@ static ide_startstop_t reset_pollfunc (ide_drive_t *drive) | |||
938 | return ide_stopped; | 938 | return ide_stopped; |
939 | } | 939 | } |
940 | 940 | ||
941 | static void check_dma_crc(ide_drive_t *drive) | ||
942 | { | ||
943 | #ifdef CONFIG_BLK_DEV_IDEDMA | ||
944 | u8 mode; | ||
945 | |||
946 | ide_dma_off_quietly(drive); | ||
947 | drive->crc_count = 0; | ||
948 | mode = drive->current_speed; | ||
949 | /* | ||
950 | * Don't try non Ultra-DMA modes without iCRC's. Force the | ||
951 | * device to PIO and make the user enable SWDMA/MWDMA modes. | ||
952 | */ | ||
953 | if (mode > XFER_UDMA_0 && mode <= XFER_UDMA_7) | ||
954 | mode--; | ||
955 | else | ||
956 | mode = XFER_PIO_4; | ||
957 | ide_set_xfer_rate(drive, mode); | ||
958 | if (drive->current_speed >= XFER_SW_DMA_0) | ||
959 | ide_dma_on(drive); | ||
960 | #endif | ||
961 | } | ||
962 | |||
963 | static void ide_disk_pre_reset(ide_drive_t *drive) | 941 | static void ide_disk_pre_reset(ide_drive_t *drive) |
964 | { | 942 | { |
965 | int legacy = (drive->id->cfs_enable_2 & 0x0400) ? 0 : 1; | 943 | int legacy = (drive->id->cfs_enable_2 & 0x0400) ? 0 : 1; |
@@ -983,7 +961,7 @@ static void pre_reset(ide_drive_t *drive) | |||
983 | 961 | ||
984 | if (drive->using_dma) { | 962 | if (drive->using_dma) { |
985 | if (drive->crc_count) | 963 | if (drive->crc_count) |
986 | check_dma_crc(drive); | 964 | ide_check_dma_crc(drive); |
987 | else | 965 | else |
988 | ide_dma_off(drive); | 966 | ide_dma_off(drive); |
989 | } | 967 | } |