[PATCH] cache: wip: Test program to evaluate if L2 is working.
Lukasz Majewski
l.majewski at samsung.com
Thu Aug 16 15:23:49 CEST 2012
Signed-off-by: Lukasz Majewski <l.majewski at samsung.com>
---
arch/arm/cpu/armv7/exynos/soc.c | 28 ++++++++++++++++++++++++++++
arch/arm/lib/cache-pl310.c | 2 --
board/samsung/trats/trats.c | 2 ++
include/common.h | 1 +
include/configs/trats.h | 3 +++
5 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/arch/arm/cpu/armv7/exynos/soc.c b/arch/arm/cpu/armv7/exynos/soc.c
index 9e8705f..9660daa 100644
--- a/arch/arm/cpu/armv7/exynos/soc.c
+++ b/arch/arm/cpu/armv7/exynos/soc.c
@@ -24,6 +24,7 @@
#include <common.h>
#include <asm/io.h>
#include <asm/pl310.h>
+#include <linux/compiler.h>
void reset_cpu(ulong addr)
{
@@ -41,6 +42,7 @@ void enable_caches(void)
#ifndef CONFIG_SYS_L2CACHE_OFF
void v7_outer_cache_enable(void)
{
+ /* puts("-\n"); */
pl310_enable();
}
void v7_outer_cache_disable(void)
@@ -48,3 +50,29 @@ void v7_outer_cache_disable(void)
pl310_disable();
}
#endif
+
+#define TEST_BUF_SIZE (1024*256)
+void test_l2_cache()
+{
+ int i, j;
+ u32 *ptr = (u32 *) 0x52000000;
+ volatile u64 sigma = 0;
+
+ /* Setup the buffer */
+ for (i = 0; i < TEST_BUF_SIZE; i++) {
+ *(ptr + i) = i;
+ }
+
+ flush_dcache_range((u32) ptr,
+ (u32) ptr + (TEST_BUF_SIZE * sizeof(u32)));
+
+ /* Here data at Cache is in sync with SDRAM */
+ for (j = 0; j < 5000; j++) {
+ for (i = 0, sigma = 0; i < TEST_BUF_SIZE; i++)
+ sigma += *(ptr + i);
+ if (!(j % 500))
+ puts(".");
+ }
+
+ printf("sig: 0x%llx\n", sigma);
+}
diff --git a/arch/arm/lib/cache-pl310.c b/arch/arm/lib/cache-pl310.c
index 76d60cf..885063b 100644
--- a/arch/arm/lib/cache-pl310.c
+++ b/arch/arm/lib/cache-pl310.c
@@ -120,8 +120,6 @@ void v7_outer_cache_inval_range(u32 start, u32 stop)
void pl310_enable(void)
{
writel(1, &pl310->pl310_ctrl);
- printf("p310_ctrl: 0x%x p310_aux_ctrl: 0x%x\n",
- readl(&pl310->pl310_ctrl), readl(&pl310->pl310_aux_ctrl));
}
void pl310_disable(void)
diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c
index 4f9cb5a..0db22cb 100644
--- a/board/samsung/trats/trats.c
+++ b/board/samsung/trats/trats.c
@@ -72,6 +72,8 @@ int board_init(void)
pmic_init();
#endif
+ test_l2_cache();
+
return 0;
}
diff --git a/include/common.h b/include/common.h
index 39859d3..ab4f009 100644
--- a/include/common.h
+++ b/include/common.h
@@ -570,6 +570,7 @@ int checkdcache (void);
void upmconfig (unsigned int, unsigned int *, unsigned int);
ulong get_tbclk (void);
void reset_cpu (ulong addr);
+void test_l2_cache (void);
#if defined (CONFIG_OF_LIBFDT) && defined (CONFIG_OF_BOARD_SETUP)
void ft_cpu_setup(void *blob, bd_t *bd);
#ifdef CONFIG_PCI
diff --git a/include/configs/trats.h b/include/configs/trats.h
index 4b2b4d6..f2e5bd9 100644
--- a/include/configs/trats.h
+++ b/include/configs/trats.h
@@ -42,6 +42,9 @@
#define CONFIG_DISPLAY_CPUINFO
#define CONFIG_DISPLAY_BOARDINFO
+#define CONFIG_SYS_DCACHE_OFF
+#define CONFIG_SYS_L2CACHE_OFF
+
#ifndef CONFIG_SYS_L2CACHE_OFF
#define CONFIG_SYS_L2_PL310
#define CONFIG_SYS_PL310_BASE 0x10502000
--
1.7.2.3
--MP_/7OT0hlOE0TLvqj8kABCHwi2--
More information about the U-Boot
mailing list