|
@@ -554,8 +554,10 @@ static void musb_schedule_cb(USBPort *port, USBPacket *packey)
|
|
|
timeout = ep->timeout[dir];
|
|
|
else if (ep->interrupt[dir])
|
|
|
timeout = 8;
|
|
|
- else
|
|
|
- return musb_cb_tick(ep);
|
|
|
+ else {
|
|
|
+ musb_cb_tick(ep);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
if (!ep->intv_timer[dir])
|
|
|
ep->intv_timer[dir] = timer_new_ns(QEMU_CLOCK_VIRTUAL, musb_cb_tick, ep);
|
|
@@ -772,9 +774,11 @@ static void musb_rx_packet_complete(USBPacket *packey, void *opaque)
|
|
|
|
|
|
/* NAK timeouts are only generated in Bulk transfers and
|
|
|
* Data-errors in Isochronous. */
|
|
|
- if (ep->interrupt[1])
|
|
|
- return musb_packet(s, ep, epnum, USB_TOKEN_IN,
|
|
|
- packey->iov.size, musb_rx_packet_complete, 1);
|
|
|
+ if (ep->interrupt[1]) {
|
|
|
+ musb_packet(s, ep, epnum, USB_TOKEN_IN,
|
|
|
+ packey->iov.size, musb_rx_packet_complete, 1);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
ep->csr[1] |= MGC_M_RXCSR_DATAERROR;
|
|
|
if (!epnum)
|
|
@@ -864,8 +868,7 @@ static void musb_tx_rdy(MUSBState *s, int epnum)
|
|
|
* but it doesn't make sense for us to do that. */
|
|
|
}
|
|
|
|
|
|
- return musb_packet(s, ep, epnum, pid,
|
|
|
- total, musb_tx_packet_complete, 0);
|
|
|
+ musb_packet(s, ep, epnum, pid, total, musb_tx_packet_complete, 0);
|
|
|
}
|
|
|
|
|
|
static void musb_rx_req(MUSBState *s, int epnum)
|
|
@@ -929,8 +932,7 @@ static void musb_rx_req(MUSBState *s, int epnum)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
- return musb_packet(s, ep, epnum, USB_TOKEN_IN,
|
|
|
- total, musb_rx_packet_complete, 1);
|
|
|
+ musb_packet(s, ep, epnum, USB_TOKEN_IN, total, musb_rx_packet_complete, 1);
|
|
|
}
|
|
|
|
|
|
static uint8_t musb_read_fifo(MUSBEndPoint *ep)
|