瀏覽代碼

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: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Bartlomiej Zolnierkiewicz 17 年之前
父節點
當前提交
76e1faa7cf
共有 1 個文件被更改,包括 2 次插入4 次删除
  1. 2 4
      drivers/ide/pci/hpt34x.c

+ 2 - 4
drivers/ide/pci/hpt34x.c

@@ -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)
 	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)