aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeil Zhang <zhangwm@marvell.com>2012-09-04 15:48:29 +0800
committerLubomir Rintel <lkundrak@v3.sk>2019-07-22 19:39:59 +0200
commitf6bd75597a06a709f13294169d329b52c9b91c45 (patch)
tree484c615ab092f5044c7c61541ab2dc7db8f80117
parent1510248ebb957c126bc5a0e832b5d5609b1e4207 (diff)
downloadlinux-mmp3-dell-ariel-f6bd75597a06a709f13294169d329b52c9b91c45.tar.gz
ARM: mmp: adjust xtc for 988 GPU/VPU sram
Adjust GPU/VPU sram xtc to achieve better Vmin floor. Change-Id: Ie0cffc119e02b8ac2b57d6f27a67988577b13794 Signed-off-by: Neil Zhang <zhangwm@marvell.com>
-rw-r--r--arch/arm/mach-mmp/include/mach/regs-ciu.h6
-rw-r--r--arch/arm/mach-mmp/pxa988.c15
2 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/mach-mmp/include/mach/regs-ciu.h b/arch/arm/mach-mmp/include/mach/regs-ciu.h
index 625d472b8408ba..cddbe1d84119c9 100644
--- a/arch/arm/mach-mmp/include/mach/regs-ciu.h
+++ b/arch/arm/mach-mmp/include/mach/regs-ciu.h
@@ -44,6 +44,12 @@
/* This is used by pxa988 for warm reset */
#define CIU_WARM_RESET_VECTOR CIU_REG(0x00d8)
+/* used for set xtc */
+#define CIU_GPU_XTC_REG CIU_REG(0x00a4)
+#define CIU_VPU_XTC_REG CIU_REG(0x00a8)
+#define CIU_CA9_CPU_CONF_SRAM0 CIU_REG(0Xc8)
+#define CIU_CA9_CPU_CONF_SRAM1 CIU_REG(0Xcc)
+
static __maybe_unused int ciu_ddr_ilv_on(void)
{
return ((__raw_readl(CIU_DDR_ILV_CTRL) & 0x7f) != 0);
diff --git a/arch/arm/mach-mmp/pxa988.c b/arch/arm/mach-mmp/pxa988.c
index 9997c533334f4d..3d7f1293c7776c 100644
--- a/arch/arm/mach-mmp/pxa988.c
+++ b/arch/arm/mach-mmp/pxa988.c
@@ -42,6 +42,7 @@
#include <mach/soc_coda7542.h>
#include <mach/reset-pxa988.h>
#include <mach/isp_dev.h>
+#include <mach/regs-ciu.h>
#include <mach/regs-usb.h>
#include <mach/gpio-edge.h>
#include <mach/mfp-pxa988.h> /* for 988 mfp fix */
@@ -701,6 +702,19 @@ static void __init pxa988_init_gpio(void)
pxa_init_gpio(IRQ_PXA988_GPIO_AP, 0, 127, NULL);
}
+/*
+ * This function is used to adjust the xtc for sram.
+ * It is used to achieve better Vmin floor.
+ */
+static void pxa988_set_xtc(void)
+{
+ u32 tmp;
+
+ writel_relaxed(0x44444, CIU_GPU_XTC_REG);
+ tmp = readl_relaxed(CIU_VPU_XTC_REG) & (~0x300);
+ writel_relaxed(tmp, CIU_VPU_XTC_REG);
+}
+
static int __init pxa988_init(void)
{
pxa988_l2_cache_init();
@@ -725,6 +739,7 @@ static int __init pxa988_init(void)
platform_device_register(&pxa988_device_vnc_touch);
#endif /* CONFIG_TOUCHSCREEN_VNC */
+ pxa988_set_xtc();
return 0;
}