mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 15:14:18 +08:00
usb: dwc3: ep0: fix setup_packet_pending initialization
It just ocurred to me that dwc3 already gives a really hint of when a setup packet is pending and that's the SETUP_PENDING TRB Status for EP0 IRQs. Fix setup_packet_pending initialization based on that. While at that, also make sure the comment in gadget.c matches what code is doing. Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
ac7bdcc1b3
commit
b5d335e5ea
@ -817,6 +817,8 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc,
|
||||
|
||||
status = DWC3_TRB_SIZE_TRBSTS(trb->size);
|
||||
if (status == DWC3_TRBSTS_SETUP_PENDING) {
|
||||
dwc->setup_packet_pending = true;
|
||||
|
||||
dwc3_trace(trace_dwc3_ep0, "Setup Pending received");
|
||||
|
||||
if (r)
|
||||
@ -916,8 +918,10 @@ static void dwc3_ep0_complete_status(struct dwc3 *dwc,
|
||||
}
|
||||
|
||||
status = DWC3_TRB_SIZE_TRBSTS(trb->size);
|
||||
if (status == DWC3_TRBSTS_SETUP_PENDING)
|
||||
if (status == DWC3_TRBSTS_SETUP_PENDING) {
|
||||
dwc->setup_packet_pending = true;
|
||||
dwc3_trace(trace_dwc3_ep0, "Setup Pending received");
|
||||
}
|
||||
|
||||
dwc->ep0state = EP0_SETUP_PHASE;
|
||||
dwc3_ep0_out_start(dwc);
|
||||
@ -1063,8 +1067,6 @@ static void dwc3_ep0_end_control_data(struct dwc3 *dwc, struct dwc3_ep *dep)
|
||||
static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
|
||||
const struct dwc3_event_depevt *event)
|
||||
{
|
||||
dwc->setup_packet_pending = true;
|
||||
|
||||
switch (event->status) {
|
||||
case DEPEVT_STATUS_CONTROL_DATA:
|
||||
dwc3_trace(trace_dwc3_ep0, "Control Data");
|
||||
|
@ -2230,8 +2230,8 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
|
||||
*
|
||||
* Our suggested workaround is to follow the Disconnect
|
||||
* Event steps here, instead, based on a setup_packet_pending
|
||||
* flag. Such flag gets set whenever we have a XferNotReady
|
||||
* event on EP0 and gets cleared on XferComplete for the
|
||||
* flag. Such flag gets set whenever we have a SETUP_PENDING
|
||||
* status for EP0 TRBs and gets cleared on XferComplete for the
|
||||
* same endpoint.
|
||||
*
|
||||
* Refers to:
|
||||
|
Loading…
Reference in New Issue
Block a user