summaryrefslogtreecommitdiff
path: root/meta-ampere/meta-jade/recipes-bsp/u-boot/u-boot-aspeed/0003-aspeed-support-passing-system-reset-status-to-kernel.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-ampere/meta-jade/recipes-bsp/u-boot/u-boot-aspeed/0003-aspeed-support-passing-system-reset-status-to-kernel.patch')
-rw-r--r--meta-ampere/meta-jade/recipes-bsp/u-boot/u-boot-aspeed/0003-aspeed-support-passing-system-reset-status-to-kernel.patch180
1 files changed, 0 insertions, 180 deletions
diff --git a/meta-ampere/meta-jade/recipes-bsp/u-boot/u-boot-aspeed/0003-aspeed-support-passing-system-reset-status-to-kernel.patch b/meta-ampere/meta-jade/recipes-bsp/u-boot/u-boot-aspeed/0003-aspeed-support-passing-system-reset-status-to-kernel.patch
deleted file mode 100644
index 0381b5d84..000000000
--- a/meta-ampere/meta-jade/recipes-bsp/u-boot/u-boot-aspeed/0003-aspeed-support-passing-system-reset-status-to-kernel.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From af4353ab19aaf29dc68ff89a0d581102ca5be43c Mon Sep 17 00:00:00 2001
-From: "Thang Q. Nguyen" <thang@os.amperecomputing.com>
-Date: Wed, 6 Jan 2021 06:33:36 +0000
-Subject: [PATCH] aspeed: support passing system reset status to kernel via
- bootargs
-
-This is a backport of the patch file from
-openbmc/meta-yadro/meta-nicole/recipes-bsp/u-boot/
-to add the Aspeed reset reason to bootargs so kernel applications
-can query it.
-
-Test case: /proc/cmdline must contain:
- - resetreason=power after cold bmc boot
- - resetreason=watchdog after warm bmc reboot
-
-Signed-off-by: Chanh Nguyen <chanh@os.amperecomputing.com>
-Signed-off-by: Thang Q. Nguyen <thang@os.amperecomputing.com>
----
- arch/arm/include/asm/arch-aspeed/ast_scu.h | 2 +-
- arch/arm/mach-aspeed/ast-scu.c | 6 +-
- board/aspeed/ast-g5/ast-g5.c | 81 ++++++++++++++++++++++
- 3 files changed, 87 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/include/asm/arch-aspeed/ast_scu.h b/arch/arm/include/asm/arch-aspeed/ast_scu.h
-index d2c010a0dc..f5c9126ec0 100644
---- a/arch/arm/include/asm/arch-aspeed/ast_scu.h
-+++ b/arch/arm/include/asm/arch-aspeed/ast_scu.h
-@@ -29,7 +29,7 @@
- #define __AST_SCU_H
-
- extern void ast_scu_show_system_info (void);
--extern void ast_scu_sys_rest_info(void);
-+extern u32 ast_scu_sys_rest_info(void);
- extern void ast_scu_security_info(void);
- extern u32 ast_scu_revision_id(void);
- extern u32 ast_scu_get_vga_memsize(void);
-diff --git a/arch/arm/mach-aspeed/ast-scu.c b/arch/arm/mach-aspeed/ast-scu.c
-index ef90ef3805..c7ab66415f 100644
---- a/arch/arm/mach-aspeed/ast-scu.c
-+++ b/arch/arm/mach-aspeed/ast-scu.c
-@@ -494,22 +494,26 @@ void ast_scu_security_info(void)
- }
- }
-
--void ast_scu_sys_rest_info(void)
-+u32 ast_scu_sys_rest_info(void)
- {
- u32 rest = ast_scu_read(AST_SCU_SYS_CTRL);
-
- if (rest & SCU_SYS_EXT_RESET_FLAG) {
- printf("RST : External\n");
- ast_scu_write(SCU_SYS_EXT_RESET_FLAG, AST_SCU_SYS_CTRL);
-+ rest = SCU_SYS_EXT_RESET_FLAG;
- } else if (rest & SCU_SYS_WDT_RESET_FLAG) {
- printf("RST : Watchdog\n");
- ast_scu_write(SCU_SYS_WDT_RESET_FLAG, AST_SCU_SYS_CTRL);
-+ rest = SCU_SYS_WDT_RESET_FLAG;
- } else if (rest & SCU_SYS_PWR_RESET_FLAG) {
- printf("RST : Power On\n");
- ast_scu_write(SCU_SYS_PWR_RESET_FLAG, AST_SCU_SYS_CTRL);
-+ rest = SCU_SYS_PWR_RESET_FLAG;
- } else {
- printf("RST : CLK en\n");
- }
-+ return rest;
- }
-
- u32 ast_scu_get_vga_memsize(void)
-diff --git a/board/aspeed/ast-g5/ast-g5.c b/board/aspeed/ast-g5/ast-g5.c
-index 9bf6c905fe..9e27bce0f5 100644
---- a/board/aspeed/ast-g5/ast-g5.c
-+++ b/board/aspeed/ast-g5/ast-g5.c
-@@ -8,6 +8,8 @@
- */
-
- #include <common.h>
-+#include <stdlib.h>
-+#include <asm/arch/regs-scu.h>
- #include <netdev.h>
-
- #include <asm/arch/ast_scu.h>
-@@ -25,9 +27,76 @@ int board_init(void)
- }
-
- #ifdef CONFIG_BOARD_LATE_INIT
-+static void update_bootargs_cmd(const char *key, const char *value)
-+{
-+ int buf_len;
-+ char *buf;
-+ char *cmdline;
-+ char *end = NULL;
-+
-+ if (!key || (key[0] == '\0')) {
-+ printf("%s: Empty key not allowed\n", __func__);
-+ return;
-+ }
-+
-+ cmdline = getenv("bootargs");
-+
-+ /* Allocate space for maximum possible new command line */
-+ buf_len = (cmdline ? strlen(cmdline) : 0)
-+ + 1 /* spacebar as delimiter */
-+ + strlen(key)
-+ + (value ? 1 /* equal sign */ + strlen(value) : 0)
-+ + 1 /* terminating null */;
-+
-+ buf = calloc(buf_len, sizeof(char));
-+ if (!buf) {
-+ printf("%s: out of memory\n", __func__);
-+ return;
-+ }
-+
-+ if (cmdline)
-+ {
-+ char *start = strstr(cmdline, key);
-+
-+ /* Check for full word match. Match should be start of cmdline
-+ * or there should be space before match
-+ **/
-+ if (start && ((start == cmdline) || (*(start - 1) == ' '))) {
-+ strncat(buf, cmdline, (start - cmdline));
-+
-+ /* Find the end of the keyword[=value] pair,
-+ * including a single training space character, if any.
-+ * Skip the found substring, mark the tail of cmdline.
-+ **/
-+ end = strchr(start, ' ');
-+ if (end) {
-+ end++;
-+ }
-+ } else {
-+ strcat(buf, cmdline);
-+ strcat(buf, " ");
-+ }
-+ }
-+
-+ strcat(buf, key);
-+ if (value) {
-+ strcat(buf, "=");
-+ strcat(buf, value);
-+ }
-+
-+ if (end) {
-+ strcat(buf, " ");
-+ strcat(buf, end);
-+ }
-+
-+ setenv("bootargs", buf);
-+ free(buf);
-+}
-+
- int board_late_init(void)
- {
- u32 val;
-+ u32 reset_reason = ast_scu_sys_rest_info();
-
- /* Switch PWM to GPIO mode to make FAN run in max speed */
- ast_scu_switch_pwm_to_gpio_mode();
-@@ -44,6 +113,18 @@ int board_late_init(void)
- writel(0xaa, AST_SCU_BASE);
- #endif
-
-+ if (reset_reason & SCU_SYS_EXT_RESET_FLAG) {
-+ update_bootargs_cmd("resetreason", "external");
-+ } else if (reset_reason & SCU_SYS_WDT_RESET_FLAG) {
-+ update_bootargs_cmd("resetreason", "watchdog");
-+ } else if (reset_reason & SCU_SYS_PWR_RESET_FLAG) {
-+ update_bootargs_cmd("resetreason", "power");
-+ } else {
-+ char value[32];
-+ snprintf(value, sizeof(value) - 1, "0x%x", reset_reason);
-+ update_bootargs_cmd("resetreason", value);
-+ }
-+
- return 0;
- }
- #endif
---
-2.25.1
-