hpt34x: fix CONFIG_HPT34X_AUTODMA=n handling

Programming DMA mode may destroy current PIO mode setting so if
CONFIG_HPT34X_AUTODMA=n (the default case) make ide_tune_dma() fail
early by disabling all host DMA masks and re-tune PIO mode.

This fix doesn't help with the driver being broken but is needed
for some other changes.
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 88b47040
...@@ -89,11 +89,7 @@ static int hpt34x_config_drive_xfer_rate (ide_drive_t *drive) ...@@ -89,11 +89,7 @@ static int hpt34x_config_drive_xfer_rate (ide_drive_t *drive)
drive->init_speed = 0; drive->init_speed = 0;
if (ide_tune_dma(drive)) if (ide_tune_dma(drive))
#ifndef CONFIG_HPT34X_AUTODMA
return -1; return -1;
#else
return 0;
#endif
if (ide_use_fast_pio(drive)) if (ide_use_fast_pio(drive))
hpt34x_tune_drive(drive, 255); hpt34x_tune_drive(drive, 255);
...@@ -160,9 +156,11 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif) ...@@ -160,9 +156,11 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif)
if (!hwif->dma_base) if (!hwif->dma_base)
return; return;
#ifdef CONFIG_HPT34X_AUTODMA
hwif->ultra_mask = 0x07; hwif->ultra_mask = 0x07;
hwif->mwdma_mask = 0x07; hwif->mwdma_mask = 0x07;
hwif->swdma_mask = 0x07; hwif->swdma_mask = 0x07;
#endif
hwif->ide_dma_check = &hpt34x_config_drive_xfer_rate; hwif->ide_dma_check = &hpt34x_config_drive_xfer_rate;
if (!noautodma) if (!noautodma)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment