summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-12-03 20:32:08 +0100
committerJeff Garzik <jgarzik@redhat.com>2009-12-03 21:50:51 +0100
commitdd221f9ce97c33e560a63999c74c17d13ef780b4 (patch)
treee0a0c2cb99b53047cac73bec9f1c0af879da04a1
parentpata_efar: fix wrong PIO timings being programmed (diff)
downloadlinux-dd221f9ce97c33e560a63999c74c17d13ef780b4.tar.xz
linux-dd221f9ce97c33e560a63999c74c17d13ef780b4.zip
pata_efar: fix wrong MWDMA timings being programmed
Do not clear MWDMA timings for device on the other port when programming slave device. This change should be safe as this is how we have been doing things in IDE slc90e66 host driver for years. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r--drivers/ata/pata_efar.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ata/pata_efar.c b/drivers/ata/pata_efar.c
index 540c36426303..f37d98700dfd 100644
--- a/drivers/ata/pata_efar.c
+++ b/drivers/ata/pata_efar.c
@@ -201,7 +201,7 @@ static void efar_set_dmamode (struct ata_port *ap, struct ata_device *adev)
master_data &= 0xFF4F; /* Mask out IORDY|TIME1|DMAONLY */
master_data |= control << 4;
pci_read_config_byte(dev, 0x44, &slave_data);
- slave_data &= (0x0F + 0xE1 * ap->port_no);
+ slave_data &= ap->port_no ? 0x0F : 0xF0;
/* Load the matching timing */
slave_data |= ((timings[pio][0] << 2) | timings[pio][1]) << (ap->port_no ? 4 : 0);
pci_write_config_byte(dev, 0x44, slave_data);