git: 9front

Download patch

ref: ceca3790e674f38ada659ccfa98162ecb66dc43e
parent: cde35a8cb0c2d734188a2fb780d7920e871972ba
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Thu Apr 19 10:50:00 EDT 2012

sdide: increase Drq wait timeouts (fixes i/o errors in vbox)

--- a/sys/src/9/pc/sdide.c
+++ b/sys/src/9/pc/sdide.c
@@ -1108,7 +1108,7 @@
 	outb(cmdport+Command, Cpkt);
 
 	microdelay(1);
-	as = ataready(cmdport, ctlport, 0, Bsy, Drq|Chk, 4*1000);
+	as = ataready(cmdport, ctlport, 0, Bsy, Drq|Chk, 400*1000);
 	if(as < 0 || (as & (Bsy|Chk))){
 		drive->status = as<0 ? 0 : as;
 		ctlr->curdrive = nil;
@@ -1256,8 +1256,7 @@
 	case Cws:
 	case Cwsm:
 		microdelay(1);
-		/* 10*1000 for flash ide drives - maybe detect them? */
-		as = ataready(cmdport, ctlport, 0, Bsy, Drq|Err, 10*1000);
+		as = ataready(cmdport, ctlport, 0, Bsy, Drq|Err, 400*1000);
 		if(as < 0 || (as & Err)){
 			iunlock(ctlr);
 			return -1;
@@ -1479,8 +1478,7 @@
 		USED(d);
 	else if(!isdma){
 		microdelay(1);
-		/* 10*1000 for flash ide drives - maybe detect them? */
-		as = ataready(cmdport, ctlport, 0, Bsy, Drq|Err, 10*1000);
+		as = ataready(cmdport, ctlport, 0, Bsy, Drq|Err, 400*1000);
 		if(as < 0 || (as & Err)){
 			iunlock(ctlr);
 			return -1;
--