[PATCH] usb: musb: host: Issue a memory barrier before staring the DMA
Sergei Shtylyov
sshtylyov at mvista.com
Thu Aug 5 08:40:31 EDT 2010
Hello.
Santosh Shilimkar wrote:
> This patch fixes the issue which was observed while transfering
> a large file ( > 20MB) over USB (OMAP MUSB controller acts as USB host)
> to an attached USB thumb drive.
> It was found that CDB field of CBW packet was set to 0x0. This was
> due to missing a barrier before DMA engine starts transfer.
> This buffer is allocated using dma_alloc_coherent which gives
> non-cacheble but bufferable memory and hence needed a write
> memory barrier to flush the write buffer.
> More info on this thread is here:
> http://www.spinics.net/lists/linux-omap/msg33987.html
> Signed-off-by: Maulik Mankad <x0082077 at ti.com>
> Signed-off-by: Santosh Shilimkar <santosh.shilimkar at ti.com>
> Cc: Russell King <rmk+kernel at arm.linux.org.uk>
> Cc: Felipe Balbi <felipebalbi at users.sourceforge.net>
> ---
> drivers/usb/musb/musb_host.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
> Index: omap4_integration/drivers/usb/musb/musb_host.c
> ===================================================================
> --- omap4_integration.orig/drivers/usb/musb/musb_host.c
> +++ omap4_integration/drivers/usb/musb/musb_host.c
> @@ -628,6 +628,11 @@ static bool musb_tx_dma_program(struct d
> u8 mode;
>
> #ifdef CONFIG_USB_INVENTRA_DMA
> + /*
> + * Ensure the data reaches to main memory before starting
> + * DMA transfer
> + */
> + wmb();
Are you sure this is only needed for Inventra DMA?
WBR, Sergei
More information about the linux-arm-kernel
mailing list