Patchwork [1/5] pata_hpt3x2n: always stretch UltraDMA timing

login
register
mail settings
Submitter Sergei Shtylyov
Date Dec. 7, 2009, 7:25 p.m.
Message ID <200912072225.52223.sshtylyov@ru.mvista.com>
Download mbox | patch
Permalink /patch/40519/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Sergei Shtylyov - Dec. 7, 2009, 7:25 p.m.
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>

---
The patch is against the recent Linus' tree. It's intended to go into all
stable kernels up to 2.6.22 -- when HPT371N support was merged.

 drivers/ata/pata_hpt3x2n.c |   20 ++++++++++----------
 1 files changed, 10 insertions(+), 10 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bartlomiej Zolnierkiewicz - Dec. 8, 2009, 7:28 p.m.
Hi,

On Monday 07 December 2009 08:25:52 pm Sergei Shtylyov wrote:
> 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>

I've reviewed those patches and they all look fine to me.

Same with your other HPT3xx pending fixes, namely:
* hpt366: fix clock turnaround
* pata_hpt3x2n: fix clock turnaround
* hpt366: add debounce delay to cable_detect() method

PS everything is in my ATA fixes tree now
--
Bartlomiej Zolnierkiewicz
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff Garzik - Dec. 17, 2009, 6:21 a.m.
On 12/07/2009 02:25 PM, Sergei Shtylyov wrote:
> 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>
>
> ---
> The patch is against the recent Linus' tree. It's intended to go into all
> stable kernels up to 2.6.22 -- when HPT371N support was merged.
>
>   drivers/ata/pata_hpt3x2n.c |   20 ++++++++++----------
>   1 files changed, 10 insertions(+), 10 deletions(-)

applied 1-5


--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

Index: linux-2.6/drivers/ata/pata_hpt3x2n.c
===================================================================
--- linux-2.6.orig/drivers/ata/pata_hpt3x2n.c
+++ linux-2.6/drivers/ata/pata_hpt3x2n.c
@@ -25,7 +25,7 @@ 
 #include <linux/libata.h>
 
 #define DRV_NAME	"pata_hpt3x2n"
-#define DRV_VERSION	"0.3.8"
+#define DRV_VERSION	"0.3.9"
 
 enum {
 	HPT_PCI_FAST	=	(1 << 31),
@@ -547,16 +547,16 @@  static int hpt3x2n_init_one(struct pci_d
 	       pci_mhz);
 	/* Set our private data up. We only need a few flags so we use
 	   it directly */
-	if (pci_mhz > 60) {
+	if (pci_mhz > 60)
 		hpriv = (void *)(PCI66 | USE_DPLL);
-		/*
-		 * On  HPT371N, if ATA clock is 66 MHz we must set bit 2 in
-		 * the MISC. register to stretch the UltraDMA Tss timing.
-		 * NOTE: This register is only writeable via I/O space.
-		 */
-		if (dev->device == PCI_DEVICE_ID_TTI_HPT371)
-			outb(inb(iobase + 0x9c) | 0x04, iobase + 0x9c);
-	}
+
+	/*
+	 * On  HPT371N, if ATA clock is 66 MHz we must set bit 2 in
+	 * the MISC. register to stretch the UltraDMA Tss timing.
+	 * NOTE: This register is only writeable via I/O space.
+	 */
+	if (dev->device == PCI_DEVICE_ID_TTI_HPT371)
+		outb(inb(iobase + 0x9c) | 0x04, iobase + 0x9c);
 
 	/* Now kick off ATA set up */
 	return ata_pci_sff_init_one(dev, ppi, &hpt3x2n_sht, hpriv);