From: Liu Hui-R64343 <r64...@freescale.com>

factor out boot cause funciton to common code to avoid
the duplicate code in each board support package

Signed-off-by: Jason Liu <r64...@freescale.com>
---
 arch/arm/cpu/armv7/mx5/soc.c              |   18 ++++++++++++++++++
 arch/arm/include/asm/arch-mx5/sys_proto.h |    1 +
 2 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/arch/arm/cpu/armv7/mx5/soc.c b/arch/arm/cpu/armv7/mx5/soc.c
index 09500b3..dddda08 100644
--- a/arch/arm/cpu/armv7/mx5/soc.c
+++ b/arch/arm/cpu/armv7/mx5/soc.c
@@ -77,6 +77,24 @@ u32 get_cpu_rev(void)
        return system_rev;
 }
 
+char *get_reset_cause(void)
+{
+       u32 cause;
+       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
+
+       cause = readl(&src_regs->srsr);
+       switch (cause) {
+       case 0x0001:
+               return "POR";
+       case 0x0009:
+               return "RST";
+       case 0x0010:
+       case 0x0011:
+               return "WDOG";
+       default:
+               return "unknown reset";
+       }
+}
 
 #if defined(CONFIG_DISPLAY_CPUINFO)
 int print_cpuinfo(void)
diff --git a/arch/arm/include/asm/arch-mx5/sys_proto.h 
b/arch/arm/include/asm/arch-mx5/sys_proto.h
index f687503..00c2c5d 100644
--- a/arch/arm/include/asm/arch-mx5/sys_proto.h
+++ b/arch/arm/include/asm/arch-mx5/sys_proto.h
@@ -27,5 +27,6 @@
 u32 get_cpu_rev(void);
 #define is_soc_rev(rev)        ((get_cpu_rev() & 0xFF) - rev)
 void sdelay(unsigned long);
+char *get_reset_cause(void);
 
 #endif
-- 
1.7.1


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to