mirror of https://gitee.com/openkylin/linux.git
usb: dwc3: gadget: use update transfer command
If we get a Xfer Not Ready event with reason "Transfer Active" it means endpoint is still transferring data and we can use that to issue update transfer for this particular endpoint in case we have pending requests in our queue. Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
8a1a9c9e45
commit
6bb4fe12ea
|
@ -2012,15 +2012,16 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc,
|
||||||
if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
|
if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) {
|
||||||
dwc3_gadget_start_isoc(dwc, dep, event);
|
dwc3_gadget_start_isoc(dwc, dep, event);
|
||||||
} else {
|
} else {
|
||||||
|
int active;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
active = event->status & DEPEVT_STATUS_TRANSFER_ACTIVE;
|
||||||
|
|
||||||
dwc3_trace(trace_dwc3_gadget, "%s: reason %s",
|
dwc3_trace(trace_dwc3_gadget, "%s: reason %s",
|
||||||
dep->name, event->status &
|
dep->name, active ? "Transfer Active"
|
||||||
DEPEVT_STATUS_TRANSFER_ACTIVE
|
|
||||||
? "Transfer Active"
|
|
||||||
: "Transfer Not Active");
|
: "Transfer Not Active");
|
||||||
|
|
||||||
ret = __dwc3_gadget_kick_transfer(dep, 0, 1);
|
ret = __dwc3_gadget_kick_transfer(dep, 0, !active);
|
||||||
if (!ret || ret == -EBUSY)
|
if (!ret || ret == -EBUSY)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue