dwc2/host: immediately retry IN token for bInterval=1
Signed-off-by: Maxime Vincent <maxime@veemax.be>
This commit is contained in:
@@ -736,6 +736,14 @@ static void channel_xfer_in_retry(dwc2_regs_t* dwc2, uint8_t ch_id, uint32_t hci
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// immediately retry if bInterval is 1 - otherwise we'd waste a microframe before retrying
|
||||||
|
if ((hcint & HCINT_HALTED) && (edpt->uframe_interval == 1)) {
|
||||||
|
edpt->hcchar_bm.odd_frame = 1 - (dwc2->hfnum & 1); // transfer on next frame
|
||||||
|
channel->hcchar = (edpt->hcchar & ~HCCHAR_CHENA);
|
||||||
|
channel_send_in_token(dwc2, channel);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// for periodic, de-allocate channel, enable SOF set frame counter for later transfer
|
// for periodic, de-allocate channel, enable SOF set frame counter for later transfer
|
||||||
const dwc2_channel_tsize_t hctsiz = {.value = channel->hctsiz};
|
const dwc2_channel_tsize_t hctsiz = {.value = channel->hctsiz};
|
||||||
edpt->next_pid = hctsiz.pid; // save PID
|
edpt->next_pid = hctsiz.pid; // save PID
|
||||||
|
Reference in New Issue
Block a user