diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-12-03 20:32:08 +0100 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2009-12-03 15:50:51 -0500 |
commit | dd221f9ce97c33e560a63999c74c17d13ef780b4 (patch) | |
tree | e0a0c2cb99b53047cac73bec9f1c0af879da04a1 /drivers/ata | |
parent | f79ff92649efd5ef17f5267fe6f599c64e74e050 (diff) | |
download | op-kernel-dev-dd221f9ce97c33e560a63999c74c17d13ef780b4.zip op-kernel-dev-dd221f9ce97c33e560a63999c74c17d13ef780b4.tar.gz |
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>
Diffstat (limited to 'drivers/ata')
-rw-r--r-- | drivers/ata/pata_efar.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ata/pata_efar.c b/drivers/ata/pata_efar.c index 540c364..f37d987 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); |