aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_via.c
diff options
context:
space:
mode:
authorAlan <alan@lxorguk.ukuu.org.uk>2006-12-16 09:32:21 -0500
committerJeff Garzik <jeff@garzik.org>2006-12-16 10:46:21 -0500
commit5c9a76118d24f044b8d8ee721dbbf4e5c7db3dbb (patch)
tree3bba946357bc7cf5c49b48abae903959fa65066e /drivers/ata/pata_via.c
parent2bfc3611bd91986ed2b979a7f536c52751c8ac8f (diff)
[PATCH] pata_via: Cable detect error
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>
Diffstat (limited to 'drivers/ata/pata_via.c')
-rw-r--r--drivers/ata/pata_via.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c
index cc09d47fb927..ff93e8f71cf8 100644
--- a/drivers/ata/pata_via.c
+++ b/drivers/ata/pata_via.c
@@ -161,10 +161,15 @@ static int via_pre_reset(struct ata_port *ap)
161 return -ENOENT; 161 return -ENOENT;
162 } 162 }
163 163
164 if ((config->flags & VIA_UDMA) >= VIA_UDMA_66) 164 if ((config->flags & VIA_UDMA) >= VIA_UDMA_100)
165 ap->cbl = via_cable_detect(ap); 165 ap->cbl = via_cable_detect(ap);
166 else 166 /* The UDMA66 series has no cable detect so do drive side detect */
167 else if ((config->flags & VIA_UDMA) < VIA_UDMA_66)
167 ap->cbl = ATA_CBL_PATA40; 168 ap->cbl = ATA_CBL_PATA40;
169 else
170 ap->cbl = ATA_CBL_PATA_UNK;
171
172
168 return ata_std_prereset(ap); 173 return ata_std_prereset(ap);
169} 174}
170 175