summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRakesh Bodla <rbodla@nvidia.com>2012-02-07 19:07:56 +0530
committerSimone Willett <swillett@nvidia.com>2012-03-26 17:47:42 -0700
commitdb6af1c9e01f323d1c840b7e4cb66d9f6282cfe1 (patch)
tree973bf551fcaa1ca18ad4429533b455e5412ef22f
parentaa6554e19d34990e864e5f10f25a217f4ace73bf (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.c8
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);