hi, using the modified (single line) patch only works half-way, it sets the value in status register (guess that's what that line does :)) but hw interrupt is not generated.
I tried adding uhci_update_irq and this patch: diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c index a65e0b3..1e9c1e7 100644 --- a/hw/usb-uhci.c +++ b/hw/usb-uhci.c @@ -702,11 +702,15 @@ out: case USB_RET_STALL: td->ctrl |= TD_CTRL_STALL; td->ctrl &= ~TD_CTRL_ACTIVE; + s->status |= UHCI_STS_USBERR; + uhci_update_irq(s); return 1; case USB_RET_BABBLE: td->ctrl |= TD_CTRL_BABBLE | TD_CTRL_STALL; td->ctrl &= ~TD_CTRL_ACTIVE; + s->status |= UHCI_STS_USBERR; + uhci_update_irq(s); /* frame interrupted */ return -1; works. jan On Thu, May 5, 2011 at 2:05 PM, Gerd Hoffmann <kra...@redhat.com> wrote: >> diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c >> index 346db3e..a51d89b 100644 >> --- a/hw/usb-uhci.c >> +++ b/hw/usb-uhci.c >> @@ -732,11 +732,21 @@ out: >> case USB_RET_STALL: >> td->ctrl |= TD_CTRL_STALL; >> td->ctrl&= ~TD_CTRL_ACTIVE; >> + s->status |= UHCI_STS_USBERR; > > Just this line should be enougth. > >> case USB_RET_BABBLE: >> td->ctrl |= TD_CTRL_BABBLE | TD_CTRL_STALL; >> td->ctrl&= ~TD_CTRL_ACTIVE; >> + s->status |= UHCI_STS_USBERR; > > Likewise. > > Tried that? > > cheers, > Gerd > >