summaryrefslogtreecommitdiff
path: root/drivers/usb/musb/musb_host.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-10-07 06:11:17 +0400
committerDavid S. Miller <davem@davemloft.net>2010-10-07 06:11:17 +0400
commit12e94471b2be5ef9b55b10004a3a2cd819490036 (patch)
treef84ae818687dc7c35bd54f11bfb9717278d28a4e /drivers/usb/musb/musb_host.c
parent79315068f4560f3f7bd6e9790190dcb43059770c (diff)
parentcb655d0f3d57c23db51b981648e452988c0223f9 (diff)
downloadlinux-12e94471b2be5ef9b55b10004a3a2cd819490036.tar.xz
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'drivers/usb/musb/musb_host.c')
-rw-r--r--drivers/usb/musb/musb_host.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 877d20b1dff9..9e65c47cc98b 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -660,6 +660,12 @@ static bool musb_tx_dma_program(struct dma_controller *dma,
qh->segsize = length;
+ /*
+ * Ensure the data reaches to main memory before starting
+ * DMA transfer
+ */
+ wmb();
+
if (!dma->channel_program(channel, pkt_size, mode,
urb->transfer_dma + offset, length)) {
dma->channel_release(channel);