diff options
| author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2018-07-12 15:05:02 +1000 |
|---|---|---|
| committer | Felipe Balbi <felipe.balbi@linux.intel.com> | 2018-07-17 10:12:51 +0300 |
| commit | bb2863369562b3f0320fc7d8a96a5cde4b50aaea (patch) | |
| tree | 63fda94e45b6e6c6fa9a74c7564de8a8303659c4 /drivers/usb/gadget/udc/aspeed-vhub/ep0.c | |
| parent | 9566a7c72f4f09b094c5517556d2b5f36a11b4ef (diff) | |
usb: gadget: aspeed: Workaround memory ordering issue
The Aspeed SoC has a memory ordering issue that (thankfully)
only affects the USB gadget device. A read back is necessary
after writing to memory and before letting the device DMA
from it.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Diffstat (limited to 'drivers/usb/gadget/udc/aspeed-vhub/ep0.c')
| -rw-r--r-- | drivers/usb/gadget/udc/aspeed-vhub/ep0.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/gadget/udc/aspeed-vhub/ep0.c b/drivers/usb/gadget/udc/aspeed-vhub/ep0.c index 44f2b3b53b2f..e2927fb083cf 100644 --- a/drivers/usb/gadget/udc/aspeed-vhub/ep0.c +++ b/drivers/usb/gadget/udc/aspeed-vhub/ep0.c @@ -219,6 +219,8 @@ static void ast_vhub_ep0_do_send(struct ast_vhub_ep *ep, if (chunk && req->req.buf) memcpy(ep->buf, req->req.buf + req->req.actual, chunk); + vhub_dma_workaround(ep->buf); + /* Remember chunk size and trigger send */ reg = VHUB_EP0_SET_TX_LEN(chunk); writel(reg, ep->ep0.ctlstat); |
