diff options
| -rw-r--r-- | drivers/usb/musb/musb_host.c | 6 |
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, | |||
| 660 | 660 | ||
| 661 | qh->segsize = length; | 661 | qh->segsize = length; |
| 662 | 662 | ||
| 663 | /* | ||
| 664 | * Ensure the data reaches to main memory before starting | ||
| 665 | * DMA transfer | ||
| 666 | */ | ||
| 667 | wmb(); | ||
| 668 | |||
| 663 | if (!dma->channel_program(channel, pkt_size, mode, | 669 | if (!dma->channel_program(channel, pkt_size, mode, |
| 664 | urb->transfer_dma + offset, length)) { | 670 | urb->transfer_dma + offset, length)) { |
| 665 | dma->channel_release(channel); | 671 | dma->channel_release(channel); |
