Subject: port-i386/8992: Sony Vaio CD-ROM drive PCGA-CD5 doesn't work
To: None <gnats-bugs@gnats.netbsd.org>
From: None <yyamano@kt.rim.or.jp>
List: netbsd-bugs
Date: 12/14/1999 05:27:38
>Number:         8992
>Category:       port-i386
>Synopsis:       Sony Vaio CD-ROM drive PCGA-CD5 doesn't work
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    port-i386-maintainer (NetBSD/i386 Portmaster)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Dec 14 05:27:00 1999
>Last-Modified:
>Originator:     Yuji Yamano
>Organization:
>Release:        1.4.1
>Environment:
NetBSD casper 1.4.1 NetBSD 1.4.1 (CASPER.v6) #30: Mon Dec 13 23:55:31 JST 1999 yyamano@casper:/usr/home/yyamano/src/KAME/kame-19991011-netbsd141-snap/netbsd/sys/arch/i386/compile/CASPER.v6 i386

>Description:
Sony Vaio CD-ROM drive PCGA-CD5 doesn't work with NetBSD 1.4.1.
>How-To-Repeat:


>Fix:
It works by the following patches, but I don't know my changes is
correct or not.

--- /usr/src/sys/dev/ic/wdc.c	Tue Sep 14 00:45:05 1999
+++ ./wdc.c	Sat Dec  4 16:25:56 1999
@@ -183,8 +183,6 @@
 	 * Sanity check to see if the wdc channel responds at all.
 	 */
 
-	if (chp->wdc == NULL ||
-	    (chp->wdc->cap & WDC_CAPABILITY_NO_EXTRA_RESETS) == 0) {
 		bus_space_write_1(chp->cmd_iot, chp->cmd_ioh, wd_sdh,
 		    WDSD_IBM);
 		delay(10);
@@ -204,9 +202,10 @@
 			ret_value &= ~0x02;
 		if (ret_value == 0)
 			return 0;
-	}
 
 	/* assert SRST, wait for reset to complete */
+	if (chp->wdc == NULL ||
+	    (chp->wdc->cap & WDC_CAPABILITY_NO_EXTRA_RESETS) == 0) {
 	bus_space_write_1(chp->cmd_iot, chp->cmd_ioh, wd_sdh,
 	    WDSD_IBM);
 	delay(10);
@@ -219,6 +218,7 @@
 	(void) bus_space_read_1(chp->cmd_iot, chp->cmd_ioh, wd_error);
 	bus_space_write_1(chp->ctl_iot, chp->ctl_ioh, wd_aux_ctlr, WDCTL_4BIT);
 	delay(10);
+	}
 
 	ret_value = __wdcwait_reset(chp, ret_value);
 	WDCDEBUG_PRINT(("%s:%d: after reset, ret_value=0x%d\n",
--- /usr/src/sys/dev/scsipi/atapi_wdc.c	Thu May  6 07:39:04 1999
+++ ./atapi_wdc.c	Mon Dec 13 23:54:41 1999
@@ -281,7 +281,7 @@
 	if ((sc_xfer->sc_link->scsipi_atapi.cap  & ATAPI_CFG_DRQ_MASK) !=
 	    ATAPI_CFG_IRQ_DRQ || (sc_xfer->flags & SCSI_POLL)) {
 		/* Wait for at last 400ns for status bit to be valid */
-		DELAY(1);
+		DELAY(100);
 		wdc_atapi_intr(chp, xfer, 0);
 	} else {
 		chp->ch_flags |= WDCF_IRQ_WAIT;


>Audit-Trail:
>Unformatted: