From 119df9b1a20361b1721dd72803caa9986af5e582 Mon Sep 17 00:00:00 2001 From: "Wang.Bin" Date: Fri, 25 Oct 2024 14:28:46 +0800 Subject: [PATCH 2/2] u boot Update system reset event Test: /usr/sbin/fw_printenv system_reset_event=0xff31 --- arch/arm/mach-aspeed/ast2600/scu_info.c | 5 ++++- board/aspeed/evb_ast2600/evb_ast2600.c | 11 +++++++++++ common/board_r.c | 3 +++ include/asm-generic/global_data.h | 3 +++ include/init.h | 4 ++++ 5 files changed, 25 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-aspeed/ast2600/scu_info.c b/arch/arm/mach-aspeed/ast2600/scu_info.c index a2277eec58..cf5cea3b12 100644 --- a/arch/arm/mach-aspeed/ast2600/scu_info.c +++ b/arch/arm/mach-aspeed/ast2600/scu_info.c @@ -9,6 +9,8 @@ #include #include +DECLARE_GLOBAL_DATA_PTR; + /* SoC mapping Table */ #define SOC_ID(str, rev) { .name = str, .rev_id = rev, } @@ -217,7 +219,8 @@ void aspeed_print_sysrst_info(void) { u32 rest = readl(ASPEED_SYS_RESET_CTRL); u32 rest3 = readl(ASPEED_SYS_RESET_CTRL3); - + + gd->reset_reason = rest; if (rest & SYS_PWR_RESET_FLAG) { printf("RST: Power On \n"); writel(rest, ASPEED_SYS_RESET_CTRL); diff --git a/board/aspeed/evb_ast2600/evb_ast2600.c b/board/aspeed/evb_ast2600/evb_ast2600.c index 7244686bb1..668ae5c855 100644 --- a/board/aspeed/evb_ast2600/evb_ast2600.c +++ b/board/aspeed/evb_ast2600/evb_ast2600.c @@ -30,6 +30,8 @@ /* HICRB Bits */ #define HICRB_EN80HSGIO (1 << 13) /* Enable 80hSGIO */ +DECLARE_GLOBAL_DATA_PTR; + static void __maybe_unused port80h_snoop_init(void) { u32 value; @@ -210,3 +212,12 @@ int mac_read_from_eeprom(void) } #endif +int update_system_reset_event(void) +{ + char str_value[20]; + memset(str_value, 0, sizeof(str_value)); + snprintf(str_value, sizeof(str_value), "0x%x", gd->reset_reason); + env_set("system_reset_event", str_value); + env_save(); + return 0; +} \ No newline at end of file diff --git a/common/board_r.c b/common/board_r.c index f1c98362ac..3ad64b881a 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -747,6 +747,9 @@ static init_fnc_t init_sequence_r[] = { #if defined(CONFIG_ID_EEPROM) || defined(CONFIG_SYS_I2C_MAC_OFFSET) \ || defined(CONFIG_MAC_ADDR_IN_EEPROM) mac_read_from_eeprom, +#endif +#ifdef CONFIG_ASPEED_AST2600 + update_system_reset_event, #endif INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_PCI) && !defined(CONFIG_SYS_EARLY_PCI_INIT) diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 78dcf40bff..e81adabf1e 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -133,6 +133,9 @@ typedef struct global_data { struct spl_handoff *spl_handoff; # endif #endif +#ifdef CONFIG_ASPEED_AST2600 + u32 reset_reason; +#endif } gd_t; #endif diff --git a/include/init.h b/include/init.h index afc953d51e..009f591ea2 100644 --- a/include/init.h +++ b/include/init.h @@ -177,6 +177,10 @@ int misc_init_r(void); int init_func_vid(void); #endif +#ifdef CONFIG_ASPEED_AST2600 +int update_system_reset_event(void); +#endif + /* common/board_info.c */ int checkboard(void); int show_board_info(void); -- 2.25.1