summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-02-05 23:21:19 +0900
committerJeff Garzik <jeff@garzik.org>2007-02-15 18:04:01 -0500
commit61f216c7196e15e56d97c5a75af01e6684f17fa3 (patch)
tree20a5c677c6ed74d4518a8da399f71d2f3bd5bc8b
parent5387373bfe78b7795b96378250f6848f39d78b80 (diff)
downloadlwn-61f216c7196e15e56d97c5a75af01e6684f17fa3.tar.gz
lwn-61f216c7196e15e56d97c5a75af01e6684f17fa3.zip
libata: fix drive side 80c cable check, take 3
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 the test and add word93 validity check. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--include/linux/ata.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h
index 18e401ff7eaf..272736e37990 100644
--- a/include/linux/ata.h
+++ b/include/linux/ata.h
@@ -352,7 +352,7 @@ static inline int ata_drive_40wire(const u16 *dev_id)
{
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] & 0xE000) == 0x6000)
return 0; /* 80 wire */
return 1;
}