Subject: kern/21422: 80-pin cable check is broken for ServerWorks CSB5 IDE Controller (rev. 0x93)
To: None <gnats-bugs@gnats.netbsd.org>
From: Greg A. Woods <woods@weird.com>
List: netbsd-bugs
Date: 05/01/2003 17:40:41
>Number: 21422
>Category: kern
>Synopsis: 80-pin cable check is broken for ServerWorks CSB5 IDE Controller (rev. 0x93)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu May 01 21:41:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Greg A. Woods
>Release: 2003/04/29
>Organization:
Planix, Inc.; Toronto, Ontario; Canada
>Environment:
System: NetBSD proven 1.5R
Architecture: i386
Machine: i386
>Description:
the 80-pin cable check in src/sys/dev/pci/pciide.c is broken for
ServerWorks CSB5 IDE Controller (rev. 0x93)
>How-To-Repeat:
Install NetBSD-1.6R-20030425 on ASUS PR-DLS533 mainboard system
with UDMA-5 capable disk, such as WDC WD600JB-00CRA1. Watch it
attach using only UDMA-2.
>Fix:
this is a poor hack that simply avoids the issue
Index: pciide.c
===================================================================
RCS file: /cvs/master/m-NetBSD/main/src/sys/dev/pci/pciide.c,v
retrieving revision 1.191
diff -c -r1.191 pciide.c
*** pciide.c 28 Apr 2003 05:20:31 -0000 1.191
--- pciide.c 29 Apr 2003 22:54:02 -0000
***************
*** 5381,5389 ****
--- 5381,5391 ----
if ((chp->wdc->cap & WDC_CAPABILITY_UDMA) &&
(drvp->drive_flags & DRIVE_UDMA)) {
/* use Ultra/DMA, check for 80-pin cable */
+ #if 0 /* this check fails on at least rev. 0x93 chips.... */
if (drvp->UDMA_mode > 2 &&
(PCI_PRODUCT(pci_conf_read(sc->sc_pc, sc->sc_tag, PCI_SUBSYS_ID_REG)) & (1 << (14 + channel))) == 0)
drvp->UDMA_mode = 2;
+ #endif
dma_time |= dma_modes[drvp->DMA_mode] << (8 * (unit^1));
udma_mode |= drvp->UDMA_mode << (4 * unit + 16);
udma_mode |= 1 << unit;
>Release-Note:
>Audit-Trail:
>Unformatted: