usbehci, usbxhci: add *noehcihandoff= and *noxhcihandoff= parameters
on Samsung ATIV Smart PC Pro XE00T1C-A01CL, the EHCI handoff causes the system to freeze in UEFI mode as soon as we assert the os semaphore bit. until a general solution is found, provide these parameters to disable the handoff for now as it seems to otherwise work fine.
This commit is contained in:
parent
83876083c9
commit
f9839ed0a2
2 changed files with 7 additions and 5 deletions
|
@ -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++){
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue