summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/9/pc/usbehcipc.c2
-rw-r--r--sys/src/9/pc/usbxhci.c10
2 files changed, 7 insertions, 5 deletions
diff --git a/sys/src/9/pc/usbehcipc.c b/sys/src/9/pc/usbehcipc.c
index 082117c31..29a49bb6f 100644
--- a/sys/src/9/pc/usbehcipc.c
+++ b/sys/src/9/pc/usbehcipc.c
@@ -41,7 +41,7 @@ getehci(Ctlr* ctlr)
off = ehciecap(ctlr, Clegacy);
if(off == -1)
return;
- if(pcicfgr8(ctlr->pcidev, off+CLbiossem) != 0){
+ if(getconf("*noehcihandoff") == nil && pcicfgr8(ctlr->pcidev, off+CLbiossem) != 0){
dprint("ehci %#p: bios active, taking over...\n", ctlr->capio);
pcicfgw8(ctlr->pcidev, off+CLossem, 1);
for(i = 0; i < 100; i++){
diff --git a/sys/src/9/pc/usbxhci.c b/sys/src/9/pc/usbxhci.c
index 489de15a3..42947173f 100644
--- a/sys/src/9/pc/usbxhci.c
+++ b/sys/src/9/pc/usbxhci.c
@@ -393,11 +393,13 @@ handoff(Ctlr *ctlr)
if((r = xecp(ctlr, 1, nil)) == nil)
return;
- r[0] |= 1<<24; /* request ownership */
- for(i = 0; (r[0] & (1<<16)) != 0 && i<100; i++)
- tsleep(&up->sleep, return0, nil, 10);
+ if(getconf("*noxhcihandoff") == nil){
+ r[0] |= 1<<24; /* request ownership */
+ for(i = 0; (r[0] & (1<<16)) != 0 && i<100; i++)
+ tsleep(&up->sleep, return0, nil, 10);
+ r[0] &= ~(1<<16); /* in case of timeout */
+ }
r[1] = 0; /* disable SMI interrupts */
- r[0] &= ~(1<<16); /* in case of timeout */
}
static void