[PATCH] pata_via: Cable detect error
authorAlan <alan@lxorguk.ukuu.org.uk>
Sat, 16 Dec 2006 14:32:21 +0000 (14:32 +0000)
committerJeff Garzik <jeff@garzik.org>
Sat, 16 Dec 2006 15:46:21 +0000 (10:46 -0500)
The UDMA66 VIA hardware has no controller side cable detect bits we can
use. This patch minimally fixes the problem by reporting unknown in this
case and using drive side detection.

The old drivers/ide code does some additional tricks but those aren't
appropriate now we are in -rc.

Without this update UDMA66 via controllers run slowly. They don't fail so
it's a borderline call whether this is -rc material or not.

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/pata_via.c

index cc09d47fb927409100ff2dbe033efc6275f720c0..ff93e8f71cf8e8900d1cb070c5aa0f1d6a5e3477 100644 (file)
@@ -161,10 +161,15 @@ static int via_pre_reset(struct ata_port *ap)
                        return -ENOENT;
        }
 
-       if ((config->flags & VIA_UDMA) >= VIA_UDMA_66)
+       if ((config->flags & VIA_UDMA) >= VIA_UDMA_100)
                ap->cbl = via_cable_detect(ap);
-       else
+       /* The UDMA66 series has no cable detect so do drive side detect */
+       else if ((config->flags & VIA_UDMA) < VIA_UDMA_66)
                ap->cbl = ATA_CBL_PATA40;
+       else
+               ap->cbl = ATA_CBL_PATA_UNK;
+               
+
        return ata_std_prereset(ap);
 }