diff options
author | Rakesh Bodla <rbodla@nvidia.com> | 2012-02-07 19:07:56 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-03-26 17:47:42 -0700 |
commit | db6af1c9e01f323d1c840b7e4cb66d9f6282cfe1 (patch) | |
tree | 973bf551fcaa1ca18ad4429533b455e5412ef22f | |
parent | aa6554e19d34990e864e5f10f25a217f4ace73bf (diff) |
usb: gadget: tegra: Fence read for AHB memory coherency
Fix memory coherency of AHB Master-initiated writes
to DRAM by reading the fence registers to make sure
memory is flushed to DRAM from the MC/EMC.
Bug 729267
Bug 952405
Change-Id: I96454fa43b58778d15095de2edb42e9dac1547d2
Signed-off-by: Rakesh Bodla <rbodla@nvidia.com>
Signed-off-by: Krishna Yarlagadda <kyarlagadda@nvidia.com>
Reviewed-on: http://git-master/r/88285
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
-rw-r--r-- | drivers/usb/gadget/fsl_udc_core.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c index 8d917006e98b..d0a84cdd1f30 100644 --- a/drivers/usb/gadget/fsl_udc_core.c +++ b/drivers/usb/gadget/fsl_udc_core.c @@ -51,6 +51,8 @@ #include <asm/unaligned.h> #include <asm/dma.h> +#include <mach/iomap.h> + #include "fsl_usb2_udc.h" #ifdef CONFIG_ARCH_TEGRA @@ -62,6 +64,7 @@ #define DRIVER_VERSION "Apr 20, 2007" #define DMA_ADDR_INVALID (~(dma_addr_t)0) +#define USB1_PREFETCH_ID 6 #ifdef CONFIG_ARCH_TEGRA static const char driver_name[] = "fsl-tegra-udc"; @@ -2286,6 +2289,11 @@ static irqreturn_t fsl_udc_irq(int irq, void *_udc) spin_unlock_irqrestore(&udc->lock, flags); return IRQ_NONE; } + +#ifdef CONFIG_ARCH_TEGRA + /* Fence read for coherency of AHB master intiated writes */ + readb(IO_ADDRESS(IO_PPCS_PHYS + USB1_PREFETCH_ID)); +#endif #ifndef CONFIG_TEGRA_SILICON_PLATFORM { u32 temp = fsl_readl(&usb_sys_regs->vbus_sensors); |