static void xhci_intr_raise(XHCIState *xhci)
{
- if (!(xhci->iman & IMAN_IP) ||
- !(xhci->iman & IMAN_IE)) {
+ xhci->erdp_low |= ERDP_EHB;
+ xhci->iman |= IMAN_IP;
+ xhci->usbsts |= USBSTS_EINT;
+
+ if (!(xhci->iman & IMAN_IE)) {
return;
}
}
if (do_irq) {
- xhci->erdp_low |= ERDP_EHB;
- xhci->iman |= IMAN_IP;
- xhci->usbsts |= USBSTS_EINT;
xhci_intr_raise(xhci);
}
xhci_write_event(xhci, event);
}
- xhci->erdp_low |= ERDP_EHB;
- xhci->iman |= IMAN_IP;
- xhci->usbsts |= USBSTS_EINT;
-
xhci_intr_raise(xhci);
}