diff options
author | Pratyush Anand <pratyush.anand@st.com> | 2012-08-10 10:12:16 +0200 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-09-06 18:52:24 +0200 |
commit | 0416e494ce7dc84e2719bc9fb7daecb330476074 (patch) | |
tree | a91cce26bd581455018f7f3cf0ca432e4fd4f0bc /drivers/usb/dwc3/ep0.c | |
parent | usb: gadget: add multiple definition guards (diff) | |
download | linux-0416e494ce7dc84e2719bc9fb7daecb330476074.tar.xz linux-0416e494ce7dc84e2719bc9fb7daecb330476074.zip |
usb: dwc3: ep0: correct cache sync issue in case of ep0_bounced
In case of ep0 out, if length is not aligned to maxpacket size then we use
dwc->ep_bounce_addr for dma transfer and not request->dma. Since, we have
alreday done memcpy from dwc->ep0_bounce to request->buf, so we do not need to
issue cache sync function. In fact, cache sync function will bring wrong data
in request->buf from request->dma in this scenario.
So, cache sync function must not be executed in case of ep0 bounced.
Cc: <stable@vger.kernel.org> # v3.4 v3.5
Signed-off-by: Pratyush Anand <pratyush.anand@st.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/dwc3/ep0.c')
-rw-r--r-- | drivers/usb/dwc3/ep0.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/ep0.c b/drivers/usb/dwc3/ep0.c index 9b94886b66e5..e4d5ca86b9da 100644 --- a/drivers/usb/dwc3/ep0.c +++ b/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; } |