[U-Boot] [PATCH V4 1/2] MX5: factor out boot cause funciton to common code
Jason Liu
r64343 at freescale.com
Fri Apr 15 19:30:23 CEST 2011
From: Liu Hui-R64343 <r64343 at 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 <r64343 at freescale.com>
---
changes since v3:
- add full boot reset cause
---
arch/arm/cpu/armv7/mx5/soc.c | 27 +++++++++++++++++++++++++++
arch/arm/include/asm/arch-mx5/sys_proto.h | 1 +
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/arch/arm/cpu/armv7/mx5/soc.c b/arch/arm/cpu/armv7/mx5/soc.c
index 09500b3..975864d 100644
--- a/arch/arm/cpu/armv7/mx5/soc.c
+++ b/arch/arm/cpu/armv7/mx5/soc.c
@@ -77,6 +77,33 @@ 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);
+ writel(cause, &src_regs->srsr);
+
+ switch (cause) {
+ case 0x00001:
+ return "POR";
+ case 0x00004:
+ return "CSU";
+ case 0x00008:
+ return "IPP USER";
+ case 0x00010:
+ return "WDOG";
+ case 0x00020:
+ return "JTAG HIGH-Z";
+ case 0x00040:
+ return "JTAG SW";
+ case 0x10000:
+ return "WARM BOOT";
+ 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
More information about the U-Boot
mailing list