[U-Boot] [PATCH V1 1/1] MX5: Keep L2 cache enabled before jump to kernel
Jason Liu
jason.hui at linaro.org
Wed Apr 13 15:25:40 CEST 2011
Currently, Linux kernel does not do any L2 cache enable
Operation.So,Keep L2 cache enabled(L2EN=1) in the u-boot
before Jump to the Linux Kernel and thus L2 cache can be
effectively used in Linux Kernel.
Signed-off-by: Jason Liu <jason.hui at linaro.org>
---
arch/arm/cpu/armv7/mx5/Makefile | 2 +-
arch/arm/cpu/armv7/mx5/cache.S | 43 +++++++++++++++++++++++++++++
arch/arm/cpu/armv7/mx5/soc.c | 6 ++++
arch/arm/include/asm/arch-mx5/sys_proto.h | 2 +
include/configs/mx51evk.h | 2 -
include/configs/mx53evk.h | 2 -
include/configs/mx53loco.h | 2 -
7 files changed, 52 insertions(+), 7 deletions(-)
diff --git a/arch/arm/cpu/armv7/mx5/Makefile b/arch/arm/cpu/armv7/mx5/Makefile
index e8be9c9..a7df7a6 100644
--- a/arch/arm/cpu/armv7/mx5/Makefile
+++ b/arch/arm/cpu/armv7/mx5/Makefile
@@ -28,7 +28,7 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(SOC).o
COBJS = soc.o clock.o iomux.o timer.o speed.o
-SOBJS = lowlevel_init.o
+SOBJS = lowlevel_init.o cache.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
diff --git a/arch/arm/cpu/armv7/mx5/cache.S b/arch/arm/cpu/armv7/mx5/cache.S
new file mode 100644
index 0000000..c81c8be
--- /dev/null
+++ b/arch/arm/cpu/armv7/mx5/cache.S
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2011 Linaro Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+.align 5
+.global invalidate_dcache
+.global l2_cache_enable
+.global l2_cache_disable
+
+/*
+ * Sine we did not enable D-cache in uboot,this is the
+ * Dummy function for L2 ON to make build pass. please
+ * Check the arch/arm/cpu/armv7/cpu.c file
+ */
+invalidate_dcache:
+ mov pc, lr
+
+l2_cache_enable:
+ mrc p15, 0, r0, c1, c0, 1;
+ orr r0, r0, #0x2
+ mcr p15, 0, r0, c1, c0, 1;
+ mov pc, lr
+
+l2_cache_disable:
+ mrc p15, 0, r0, c1, c0, 1;
+ bic r0, r0, #0x2
+ mcr p15, 0, r0, c1, c0, 1;
+ mov pc, lr
diff --git a/arch/arm/cpu/armv7/mx5/soc.c b/arch/arm/cpu/armv7/mx5/soc.c
index 09500b3..e3b6269 100644
--- a/arch/arm/cpu/armv7/mx5/soc.c
+++ b/arch/arm/cpu/armv7/mx5/soc.c
@@ -144,3 +144,9 @@ void reset_cpu(ulong addr)
{
__raw_writew(4, WDOG1_BASE_ADDR);
}
+
+/*dummy function for L2 ON*/
+u32 get_device_type(void)
+{
+ return 0;
+}
diff --git a/arch/arm/include/asm/arch-mx5/sys_proto.h b/arch/arm/include/asm/arch-mx5/sys_proto.h
index f687503..89ab8e8 100644
--- a/arch/arm/include/asm/arch-mx5/sys_proto.h
+++ b/arch/arm/include/asm/arch-mx5/sys_proto.h
@@ -27,5 +27,7 @@
u32 get_cpu_rev(void);
#define is_soc_rev(rev) ((get_cpu_rev() & 0xFF) - rev)
void sdelay(unsigned long);
+void invalidate_dcache(u32);
+u32 get_device_type(void);
#endif
diff --git a/include/configs/mx51evk.h b/include/configs/mx51evk.h
index 50caacd..abf6cb9 100644
--- a/include/configs/mx51evk.h
+++ b/include/configs/mx51evk.h
@@ -35,8 +35,6 @@
#define CONFIG_SYS_TEXT_BASE 0x97800000
-#define CONFIG_L2_OFF
-
#include <asm/arch/imx-regs.h>
/*
* Disabled for now due to build problems under Debian and a significant
diff --git a/include/configs/mx53evk.h b/include/configs/mx53evk.h
index 6ac910b..410795f 100644
--- a/include/configs/mx53evk.h
+++ b/include/configs/mx53evk.h
@@ -29,8 +29,6 @@
#define CONFIG_DISPLAY_CPUINFO
#define CONFIG_DISPLAY_BOARDINFO
-#define CONFIG_L2_OFF
-
#include <asm/arch/imx-regs.h>
#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h
index 9c7dcc9..1e60335 100644
--- a/include/configs/mx53loco.h
+++ b/include/configs/mx53loco.h
@@ -30,8 +30,6 @@
#define CONFIG_DISPLAY_CPUINFO
#define CONFIG_DISPLAY_BOARDINFO
-#define CONFIG_L2_OFF
-
#include <asm/arch/imx-regs.h>
#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */
--
1.7.1
More information about the U-Boot
mailing list