pata_legacy: correctly mask recovery field for HT6560B

Submitted by Sergei Shtylyov on Jan. 19, 2012, 4:09 p.m.

Details

Message ID 201201191909.56745.sshtylyov@ru.mvista.com
State Not Applicable
Delegated to: David Miller
Headers show

Commit Message

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 hide | download patch | download mbox

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);