aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/pci/hpt34x.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-08-20 16:42:57 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-08-20 16:42:57 -0400
commit76e1faa7cfd464fa06a9c2cafd633d643daafeae (patch)
tree1061d01662114d064e60cc29611ab330c900f89e /drivers/ide/pci/hpt34x.c
parent88b47040f8365ad56ecfd4103e964ba9b695987e (diff)
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>
Diffstat (limited to 'drivers/ide/pci/hpt34x.c')
-rw-r--r--drivers/ide/pci/hpt34x.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/ide/pci/hpt34x.c b/drivers/ide/pci/hpt34x.c
index 19778c5fe711..cb8fe5643d3b 100644
--- a/drivers/ide/pci/hpt34x.c
+++ b/drivers/ide/pci/hpt34x.c
@@ -89,11 +89,7 @@ static int hpt34x_config_drive_xfer_rate (ide_drive_t *drive)
89 drive->init_speed = 0; 89 drive->init_speed = 0;
90 90
91 if (ide_tune_dma(drive)) 91 if (ide_tune_dma(drive))
92#ifndef CONFIG_HPT34X_AUTODMA
93 return -1; 92 return -1;
94#else
95 return 0;
96#endif
97 93
98 if (ide_use_fast_pio(drive)) 94 if (ide_use_fast_pio(drive))
99 hpt34x_tune_drive(drive, 255); 95 hpt34x_tune_drive(drive, 255);
@@ -160,9 +156,11 @@ static void __devinit init_hwif_hpt34x(ide_hwif_t *hwif)
160 if (!hwif->dma_base) 156 if (!hwif->dma_base)
161 return; 157 return;
162 158
159#ifdef CONFIG_HPT34X_AUTODMA
163 hwif->ultra_mask = 0x07; 160 hwif->ultra_mask = 0x07;
164 hwif->mwdma_mask = 0x07; 161 hwif->mwdma_mask = 0x07;
165 hwif->swdma_mask = 0x07; 162 hwif->swdma_mask = 0x07;
163#endif
166 164
167 hwif->ide_dma_check = &hpt34x_config_drive_xfer_rate; 165 hwif->ide_dma_check = &hpt34x_config_drive_xfer_rate;
168 if (!noautodma) 166 if (!noautodma)