Warm reset is not functional in case of omap5430ES1.0.
So use cold reset instead.

Signed-off-by: R Sricharan <[email protected]>
---
 [v3]
     Addressed Tom Rini's comments.<[email protected]>

 arch/arm/cpu/armv7/omap-common/reset.S |    3 +++
 arch/arm/cpu/armv7/omap5/hwinit.c      |   15 +++++++++++++++
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/arch/arm/cpu/armv7/omap-common/reset.S 
b/arch/arm/cpu/armv7/omap-common/reset.S
index 838b122..f2a522a 100644
--- a/arch/arm/cpu/armv7/omap-common/reset.S
+++ b/arch/arm/cpu/armv7/omap-common/reset.S
@@ -23,6 +23,8 @@
 
 #include <config.h>
 
+#ifndef CONFIG_OMAP54XX
+.type  reset_cpu, %function
 .global reset_cpu
 reset_cpu:
        ldr     r1, rstctl                      @ get addr for global reset
@@ -36,3 +38,4 @@ rstctl:
        .word   PRM_RSTCTRL
 rstbit:
        .word   PRM_RSTCTRL_RESET
+#endif
diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c 
b/arch/arm/cpu/armv7/omap5/hwinit.c
index 7da7075..d03e746 100644
--- a/arch/arm/cpu/armv7/omap5/hwinit.c
+++ b/arch/arm/cpu/armv7/omap5/hwinit.c
@@ -35,6 +35,7 @@
 #include <asm/sizes.h>
 #include <asm/utils.h>
 #include <asm/arch/gpio.h>
+#include <linux/compiler.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -160,3 +161,17 @@ void init_omap_revision(void)
                *omap_si_rev = OMAP5430_SILICON_ID_INVALID;
        }
 }
+
+void __weak reset_cpu(ulong addr)
+{
+       u32 omap_rev = omap_revision();
+
+       /*
+        * WARM reset is not functional in case of OMAP5430 ES1.0 soc.
+        * So use cold reset in case instead.
+        */
+       if (omap_rev == OMAP5430_ES1_0)
+               writel(PRM_RSTCTRL_RESET << 0x1, PRM_RSTCTRL);
+       else
+               writel(PRM_RSTCTRL_RESET, PRM_RSTCTRL);
+}
-- 
1.7.1

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to