From 72332e9c1c0780dd93bb4583526da27e248f50b0 Mon Sep 17 00:00:00 2001 From: Per Fransson Date: Tue, 6 Sep 2011 10:06:56 +0200 Subject: u8500: Dump after SW reset at kernel crash ST-Ericsson ID: 340331 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: Ie889ac1742da3244fa8fc6a8edf529b6c287f331 Signed-off-by: Per Fransson Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/32691 Reviewed-by: QATOOLS Reviewed-by: QATEST Reviewed-by: Wenhai FANG Reviewed-by: Preetham-rao K --- board/st-ericsson/u8500/u8500.c | 3 ++- cpu/arm_cortexa9/db8500/prcmu.c | 8 ++++++++ include/asm-arm/arch-db8500/prcmu.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/board/st-ericsson/u8500/u8500.c b/board/st-ericsson/u8500/u8500.c index b26abed1c..3ad998dda 100644 --- a/board/st-ericsson/u8500/u8500.c +++ b/board/st-ericsson/u8500/u8500.c @@ -707,7 +707,8 @@ int board_late_init(void) */ prcmu_reset_status_reg = readl(PRCM_RESET_STATUS); if (restarted() || - (prcmu_reset_status_reg & (PRCM_A9_CPU_WATCHDOG_RESET))) + (prcmu_reset_status_reg & (PRCM_A9_CPU_WATCHDOG_RESET)) || + prcmu_crashed()) setenv("preboot", "checkcrash"); return (0); diff --git a/cpu/arm_cortexa9/db8500/prcmu.c b/cpu/arm_cortexa9/db8500/prcmu.c index 731cedfb8..29b717413 100644 --- a/cpu/arm_cortexa9/db8500/prcmu.c +++ b/cpu/arm_cortexa9/db8500/prcmu.c @@ -41,6 +41,7 @@ #define PRCM_ARM_IT1_VAL (PRCMU_BASE + 0x494) #define PRCM_XP70_CUR_PWR_STATE (tcdm_base + 0xFFC) +#define PRCM_SW_RST_REASON (tcdm_base + 0xFF8) #define PRCM_REQ_MB5 (tcdm_base + 0xE44) #define PRCM_ACK_MB5 (tcdm_base + 0xDF4) @@ -262,6 +263,13 @@ static void prcmu_enable(u32 *reg) writel(readl(reg) | (1 << 8), reg); } +int prcmu_crashed() +{ + if (!prcmu_is_ready()) + return 0; + return (readl(PRCM_SW_RST_REASON) & 0x0000ffff) == 0xDEAD; +} + void db8500_prcmu_init(void) { struct clk_mgt_regs *clks; diff --git a/include/asm-arm/arch-db8500/prcmu.h b/include/asm-arm/arch-db8500/prcmu.h index af6e271e0..d1da35519 100644 --- a/include/asm-arm/arch-db8500/prcmu.h +++ b/include/asm-arm/arch-db8500/prcmu.h @@ -55,6 +55,7 @@ /* Init PRCMU relatated things in db8500 SoC platform */ void db8500_prcmu_init(void); +int prcmu_crashed(void); #endif /* __PRCMU_H__ */ -- cgit v1.2.3