From 332d68b0f2a0a6ca041ed727760204f8ba70baa4 Mon Sep 17 00:00:00 2001 From: Pratyush Anand Date: Fri, 10 Aug 2012 13:42:16 +0530 Subject: [PATCH] --- yaml --- r: 322709 b: refs/heads/master c: 0416e494ce7dc84e2719bc9fb7daecb330476074 h: refs/heads/master i: 322707: f1236a75618dd26be22a624eadba68ccf4ce7dfa v: v3 --- [refs] | 2 +- trunk/drivers/usb/dwc3/ep0.c | 1 - trunk/drivers/usb/dwc3/gadget.c | 7 +++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index d0b04db2d80c..c6b8beac9394 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ea0e627623e236e4cbec9f44b4a755bc4a4b852d +refs/heads/master: 0416e494ce7dc84e2719bc9fb7daecb330476074 diff --git a/trunk/drivers/usb/dwc3/ep0.c b/trunk/drivers/usb/dwc3/ep0.c index 9b94886b66e5..e4d5ca86b9da 100644 --- a/trunk/drivers/usb/dwc3/ep0.c +++ b/trunk/drivers/usb/dwc3/ep0.c @@ -720,7 +720,6 @@ static void dwc3_ep0_complete_data(struct dwc3 *dwc, transferred = min_t(u32, ur->length, transfer_size - length); memcpy(ur->buf, dwc->ep0_bounce, transferred); - dwc->ep0_bounced = false; } else { transferred = ur->length - length; } diff --git a/trunk/drivers/usb/dwc3/gadget.c b/trunk/drivers/usb/dwc3/gadget.c index 58fdfad96b4d..c99568eb4292 100644 --- a/trunk/drivers/usb/dwc3/gadget.c +++ b/trunk/drivers/usb/dwc3/gadget.c @@ -263,8 +263,11 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, if (req->request.status == -EINPROGRESS) req->request.status = status; - usb_gadget_unmap_request(&dwc->gadget, &req->request, - req->direction); + if (dwc->ep0_bounced && dep->number == 0) + dwc->ep0_bounced = false; + else + usb_gadget_unmap_request(&dwc->gadget, &req->request, + req->direction); dev_dbg(dwc->dev, "request %p from %s completed %d/%d ===> %d\n", req, dep->name, req->request.actual,