cmd = readl(&cntl->regs->usbcmd);
if (!(cmd & CMD_HCRESET))
break;
- if (check_time(end)) {
+ if (check_tsc(end)) {
warn_timeout();
goto fail;
}
+ yield();
}
// Disable interrupts (just to be safe).
struct usb_ehci_s *cntl = malloc_tmphigh(sizeof(*cntl));
memset(cntl, 0, sizeof(*cntl));
cntl->usb.busid = busid;
+ cntl->usb.bdf = bdf;
cntl->usb.type = USB_TYPE_EHCI;
cntl->caps = caps;
cntl->regs = (void*)caps + readb(&caps->caplength);
if (qh->qtd_next & EHCI_PTR_TERM)
// XXX - confirm
return 0;
- if (check_time(end)) {
+ if (check_tsc(end)) {
warn_timeout();
return -1;
}
if (!(cmd & CMD_IAAD))
break;
}
- if (check_time(end)) {
+ if (check_tsc(end)) {
warn_timeout();
return;
}
sts = readl(&cntl->regs->usbsts);
if (sts & STS_IAA)
break;
- if (check_time(end)) {
+ if (check_tsc(end)) {
warn_timeout();
return;
}
status = td->token;
if (!(status & QTD_STS_ACTIVE))
break;
- if (check_time(end)) {
+ if (check_tsc(end)) {
warn_timeout();
return -1;
}