Hello, I wrote:
eighty_ninty_three() had word 93 validitity check but not the 80c bit test itself (bit 12). 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 <htejun@xxxxxxxxx>
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index badde63..6558055 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c @@ -607,6 +607,8 @@ u8 eighty_ninty_three (ide_drive_t *drive) if(!(drive->id->hw_config & 0x4000)) return 0; #endif /* CONFIG_IDEDMA_IVB */ + if (!(drive->id->hw_config & 0x2000)) + return 0;
Haha, you know just *why* this was wrong? Bit 13 of the word 93 when *set* means 40c cable, not 80c! Look at the table 9 in ATA/PI-6, for example, and then into the bit description in the table 27.
Oops, that's a host side detection, the device side CBLID- seems to have the opposite levels. Should have really be looking at the table 8. :-<
return 1; }
Actually, trying to find out why 'hdparm -i' clips the modes to udma2 sometimes...
MBR, Sergei - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html