ehci: keep the frame timer running in case the guest asked for frame list rollover interrupts

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2012-11-13 17:20:05 +01:00
parent 2c7b15c1de
commit 40862309a9
1 changed files with 7 additions and 0 deletions

View File

@ -964,6 +964,9 @@ static void ehci_opreg_write(void *ptr, hwaddr addr,
case USBINTR:
val &= USBINTR_MASK;
if (ehci_enabled(s) && (USBSTS_FLR & val)) {
qemu_bh_schedule(s->async_bh);
}
break;
case FRINDEX:
@ -2220,6 +2223,10 @@ static void ehci_frame_timer(void *opaque)
ehci->async_stepdown = 0;
}
if (ehci_enabled(ehci) && (ehci->usbintr & USBSTS_FLR)) {
need_timer++;
}
if (need_timer) {
/* If we've raised int, we speed up the timer, so that we quickly
* notice any new packets queued up in response */