aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergei Shtylyov <sshtylyov@ru.mvista.com>2009-12-07 14:25:52 -0500
committerJeff Garzik <jgarzik@redhat.com>2010-03-01 14:58:42 -0500
commit60661933995bc7a09686c901439e17c2a4ea7d5d (patch)
tree3aed309842d39e19e4db700b4f0222fc3acbd2a8
parent56f46f8c8741d02516d9150a46a5b05fe910ee11 (diff)
pata_hpt3x2n: always stretch UltraDMA timing
The UltraDMA Tss timing must be stretched with ATA clock of 66 MHz, but the driver only does this when PCI clock is 66 MHz, whereas it always programs DPLL clock (which is used as the ATA clock) to 66 MHz. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Cc: <stable@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r--drivers/ata/pata_hpt3x2n.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c
index dd26bc73bd9a..269b5dbe51bb 100644
--- a/drivers/ata/pata_hpt3x2n.c
+++ b/drivers/ata/pata_hpt3x2n.c
@@ -25,7 +25,7 @@
25#include <linux/libata.h> 25#include <linux/libata.h>
26 26
27#define DRV_NAME "pata_hpt3x2n" 27#define DRV_NAME "pata_hpt3x2n"
28#define DRV_VERSION "0.3.8" 28#define DRV_VERSION "0.3.9"
29 29
30enum { 30enum {
31 HPT_PCI_FAST = (1 << 31), 31 HPT_PCI_FAST = (1 << 31),
@@ -544,16 +544,16 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id)
544 pci_mhz); 544 pci_mhz);
545 /* Set our private data up. We only need a few flags so we use 545 /* Set our private data up. We only need a few flags so we use
546 it directly */ 546 it directly */
547 if (pci_mhz > 60) { 547 if (pci_mhz > 60)
548 hpriv = (void *)(PCI66 | USE_DPLL); 548 hpriv = (void *)(PCI66 | USE_DPLL);
549 /* 549
550 * On HPT371N, if ATA clock is 66 MHz we must set bit 2 in 550 /*
551 * the MISC. register to stretch the UltraDMA Tss timing. 551 * On HPT371N, if ATA clock is 66 MHz we must set bit 2 in
552 * NOTE: This register is only writeable via I/O space. 552 * the MISC. register to stretch the UltraDMA Tss timing.
553 */ 553 * NOTE: This register is only writeable via I/O space.
554 if (dev->device == PCI_DEVICE_ID_TTI_HPT371) 554 */
555 outb(inb(iobase + 0x9c) | 0x04, iobase + 0x9c); 555 if (dev->device == PCI_DEVICE_ID_TTI_HPT371)
556 } 556 outb(inb(iobase + 0x9c) | 0x04, iobase + 0x9c);
557 557
558 /* Now kick off ATA set up */ 558 /* Now kick off ATA set up */
559 return ata_pci_sff_init_one(dev, ppi, &hpt3x2n_sht, hpriv); 559 return ata_pci_sff_init_one(dev, ppi, &hpt3x2n_sht, hpriv);