提交 61f216c7 编写于 作者: T Tejun Heo 提交者: Jeff Garzik

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: NTejun Heo <htejun@gmail.com>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 5387373b
...@@ -352,7 +352,7 @@ static inline int ata_drive_40wire(const u16 *dev_id) ...@@ -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)) if (ata_id_major_version(dev_id) >= 5 && ata_id_is_sata(dev_id))
return 0; /* SATA */ return 0; /* SATA */
if (dev_id[93] & 0x4000) if ((dev_id[93] & 0xE000) == 0x6000)
return 0; /* 80 wire */ return 0; /* 80 wire */
return 1; return 1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册