Patchwork pata_legacy: correctly mask recovery field for HT6560B

login
register
mail settings
Submitter Sergei Shtylyov
Date Jan. 19, 2012, 4:09 p.m.
Message ID <201201191909.56745.sshtylyov@ru.mvista.com>
Download mbox | patch
Permalink /patch/136854/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Sergei Shtylyov - Jan. 19, 2012, 4:09 p.m.
According to the HT6560H datasheet, the recovery timing field is 4-bit wide,
with a value of 0 meaning 16 cycles. Correct obvious thinko in the recovery
field mask.

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: stable@kernel.org

---
The patch is against the current Linus' tree.
The bug was there from the day one, so the fix needs to be merged to
all stable kernels since 2.6.19 (when PATA driver were merged)...

 drivers/ata/pata_legacy.c |    3 +--
 1 file changed, 1 insertion(+), 2 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

Patch

Index: linux-2.6/drivers/ata/pata_legacy.c
===================================================================
--- linux-2.6.orig/drivers/ata/pata_legacy.c
+++ linux-2.6/drivers/ata/pata_legacy.c
@@ -401,8 +401,7 @@  static void ht6560b_set_piomode(struct a
 	ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000);
 
 	active = clamp_val(t.active, 2, 15);
-	recover = clamp_val(t.recover, 2, 16);
-	recover &= 0x15;
+	recover = clamp_val(t.recover, 2, 16) & 0x0F;
 
 	inb(0x3E6);
 	inb(0x3E6);