The 80c wire bit is bit 13, not 14.  Bit 14 is always 1 if word93 is
implemented.  This increases the chance of incorrect wire detection
especially because host side cable detection is often unreliable and
we sometimes soley depend on drive side cable detection.  Fix it.

Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
---
Please consider for -stable.  This bug has been copied from ide and
it's just amazing how long this has gone unnoticed.  Will post
separate patch for ide.

 include/linux/ata.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: work/include/linux/ata.h
===================================================================
--- work.orig/include/linux/ata.h
+++ work/include/linux/ata.h
@@ -347,7 +347,7 @@ static inline int ata_drive_40wire(const
 {
        if (ata_id_major_version(dev_id) >= 5 && ata_id_is_sata(dev_id))
                return 0;       /* SATA */
-       if (dev_id[93] & 0x4000)
+       if (dev_id[93] & (1 << 13))
                return 0;       /* 80 wire */
        return 1;
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to