U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Massimo Pegorer <massimo.pegorer+oss@gmail.com>
To: Simon Glass <sjg@chromium.org>, Quentin Schulz <u-boot@0leil.net>,
	 u-boot@lists.u-boot-project.org
Cc: Tom Rini <trini@konsulko.com>,
	 Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	 Kever Yang <kever.yang@rock-chips.com>,
	Lukasz Majewski <lukma@denx.de>,
	 Anatolij Gustschin <ag.dev.uboot@gmail.com>,
	 Heiko Schocher <hs@nabladev.com>,
	Marek Vasut <marek.vasut+usb@mailbox.org>,
	 Svyatoslav Ryhel <clamor95@gmail.com>,
	 Peter Robinson <pbrobinson@gmail.com>,
	Levin Du <djw@t-chip.com.cn>,
	 Suniel Mahesh <sunil@amarulasolutions.com>,
	 Alexey Charkov <alchark@flipper.net>,
	Fabio Estevam <festevam@nabladev.com>,
	 Jonas Karlman <jonas@kwiboo.se>,
	Chris Morgan <macromorgan@hotmail.com>,
	 Coia Prant <coiaprant@gmail.com>,
	 Frank Wunderlich <frank-w@public-files.de>,
	Andy Yan <andyshrk@163.com>,  Liangbin Lian <jjm2473@gmail.com>,
	Joseph Chen <chenjh@rock-chips.com>,
	 Tianling Shen <cnsztl@gmail.com>,
	Klaus Goger <klaus.goger@cherry.de>,
	 Heiko Stuebner <heiko.stuebner@cherry.de>,
	 Jacobe Zang <jacobe.zang@wesion.com>,
	Jiehui He <jiehui.he@foxmail.com>,
	 John Clark <inindev@gmail.com>,
	Sebastian Kropatsch <seb-dev@mail.de>,
	 Jagan Teki <jagan@edgeble.ai>, Ilya Katsnelson <me@0upti.me>,
	 Niu Zhihong <zhihong@nzhnb.com>,
	 Nicolas Frattaroli <frattaroli.nicolas@gmail.com>,
	 Tom Fitzhenry <tom@tom-fitzhenry.me.uk>,
	 Akash Gajjar <gajjar04akash@gmail.com>,
	 Maxim Moskalets <maximmosk4@gmail.com>,
	FUKAUMI Naoki <naoki@radxa.com>,
	 Eugen Hristev <ehristev@kernel.org>,
	 Jianfeng Liu <liujianfeng1994@gmail.com>,
	 Elon Zhang <zhangzj@rock-chips.com>,
	Joshua Riek <jjriek@verizon.net>,
	 Martin Herren <sputnik@on-the-web.ch>,
	Torsten Duwe <duwe@lst.de>,
	 Massimo Pegorer <massimo.pegorer+oss@gmail.com>
Subject: [PATCH RFC 04/11] rockchip: cru: improve and simplify reset cause handling
Date: Sun, 20 Sep 2026 16:15:48 +0200	[thread overview]
Message-ID: <20260920-reset-v1-4-42820216369f@gmail.com> (raw)
In-Reply-To: <20260920-reset-v1-0-42820216369f@gmail.com>

Split reset cause code into two functions: the first just returns an
enum identifier of the cause, to be used wherever needed (such as in
roc-pc-rk3399 board level code to detect a POR); the second returns
the reset cause string description used just by print_cpuinfo() and
therefore static and bound to CONFIG_DISPAY_CPUINFO.

Signed-off-by: Massimo Pegorer <massimo.pegorer+oss@gmail.com>
---
 arch/arm/include/asm/arch-rockchip/clock.h  | 11 +++++++-
 arch/arm/mach-rockchip/cpu-info.c           | 41 ++++++++++++++++++-----------
 board/firefly/roc-pc-rk3399/roc-pc-rk3399.c |  2 +-
 3 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/arch/arm/include/asm/arch-rockchip/clock.h b/arch/arm/include/asm/arch-rockchip/clock.h
index 4bedf1a0294..fa346b68a5e 100644
--- a/arch/arm/include/asm/arch-rockchip/clock.h
+++ b/arch/arm/include/asm/arch-rockchip/clock.h
@@ -194,7 +194,16 @@ void rk3288_clk_configure_cpu(struct rockchip_cru *cru, struct rk3288_grf *grf);
 
 int rockchip_get_clk(struct udevice **devp);
 
-char *get_reset_cause(void);
+enum rockchip_rst_cause {
+	RST_CAUSE_UNAVAILABLE,
+	RST_CAUSE_POR,
+	RST_CAUSE_REG,
+	RST_CAUSE_THERMAL,
+	RST_CAUSE_WDOG,
+	RST_CAUSE_UNKNOWN,
+};
+
+enum rockchip_rst_cause rockchip_get_reset_cause(void);
 
 /*
  * rockchip_reset_bind() - Bind soft reset device as child of clock device
diff --git a/arch/arm/mach-rockchip/cpu-info.c b/arch/arm/mach-rockchip/cpu-info.c
index 7f20f7aa667..2ec96a20c3d 100644
--- a/arch/arm/mach-rockchip/cpu-info.c
+++ b/arch/arm/mach-rockchip/cpu-info.c
@@ -31,41 +31,52 @@ enum {
 	SND_GLB_WDT_RST_ST	= BIT(5),
 };
 
-char *get_reset_cause(void)
+enum rockchip_rst_cause rockchip_get_reset_cause(void)
 {
 	struct rockchip_cru *cru = rockchip_get_cru();
-	char *cause = NULL;
 
 	if (IS_ERR(cru))
-		return cause;
+		return RST_CAUSE_UNAVAILABLE;
 
 	switch (cru->glb_rst_st) {
 	case GLB_POR_RST:
-		cause = "POR";
-		break;
+		return RST_CAUSE_POR;
 	case FST_GLB_RST_ST:
 	case SND_GLB_RST_ST:
-		cause = "RST";
-		break;
+		return RST_CAUSE_REG;
 	case FST_GLB_TSADC_RST_ST:
 	case SND_GLB_TSADC_RST_ST:
-		cause = "THERMAL";
-		break;
+		return RST_CAUSE_THERMAL;
 	case FST_GLB_WDT_RST_ST:
 	case SND_GLB_WDT_RST_ST:
-		cause = "WDOG";
-		break;
-	default:
-		cause = "unknown reset";
+		return RST_CAUSE_WDOG;
 	}
 
-	return cause;
+	return RST_CAUSE_UNKNOWN;
 }
 
 #if IS_ENABLED(CONFIG_DISPLAY_CPUINFO)
+static const char *get_reset_cause(void)
+{
+	switch (rockchip_get_reset_cause()) {
+	case RST_CAUSE_UNAVAILABLE:
+		return NULL;
+	case RST_CAUSE_POR:
+		return "POR";
+	case RST_CAUSE_REG:
+		return "RST";
+	case RST_CAUSE_THERMAL:
+		return "THERMAL";
+	case RST_CAUSE_WDOG:
+		return "WDOG";
+	default:
+		return "unknown reset";
+	}
+}
+
 int print_cpuinfo(void)
 {
-	char *cause = get_reset_cause();
+	const char *cause = get_reset_cause();
 
 	printf("SoC: Rockchip %s\n", CONFIG_SYS_SOC);
 	printf("Reset cause: %s\n", cause);
diff --git a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
index 713d3eb2eb9..7b8f658f87f 100644
--- a/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
+++ b/board/firefly/roc-pc-rk3399/roc-pc-rk3399.c
@@ -50,7 +50,7 @@ void led_setup(void)
 			press_pwr_key = true;
 	}
 
-	if (press_pwr_key && !strcmp(get_reset_cause(), "POR")) {
+	if (press_pwr_key && rockchip_get_reset_cause() == RST_CAUSE_POR) {
 		spl_gpio_output(gpio0, GPIO(BANK_A, 2), 1);
 
 		spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_A, 5),

-- 
2.34.1


  parent reply	other threads:[~2026-09-20 15:49 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-20 14:15 [PATCH RFC 00/11] rockchip: SoC info and reset cause printouts Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 01/11] arm: rockchip: include SoC-specific CRU header file Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 02/11] rockchip: cru: move code from header to source file Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 03/11] rockchip: cru: remove unnecessary common cru.h file Massimo Pegorer
2026-09-20 14:15 ` Massimo Pegorer [this message]
2026-09-20 14:15 ` [PATCH RFC 05/11] arm: rockchip: support DISPLAY_CPUINFO on all Rockchip SoC Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 06/11] arm: rockchip: unbind cpu-info.c from DISPLAY_CPUINFO Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 07/11] arm: rockchip: print SoC detailed info with DISPLAY_CPUINFO Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 08/11] arm: rockchip: print reset cause only when available Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 09/11] arm: rockchip: do not print SoC info with DISPLAY_BOARDINFO Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 10/11] configs: rockchip: resync Anbernic RG-DS with savedefconfig Massimo Pegorer
2026-09-20 14:15 ` [PATCH RFC 11/11] configs: rockchip: add DISPLAY_CPUINFO to keep SoC info print Massimo Pegorer
2026-09-20 15:49 ` [PATCH RFC 00/11] rockchip: SoC info and reset cause printouts Jonas Karlman
2026-09-21 16:51   ` Massimo Pegorer
2026-09-21 16:58     ` Quentin Schulz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260920-reset-v1-4-42820216369f@gmail.com \
    --to=massimo.pegorer+oss@gmail.com \
    --cc=ag.dev.uboot@gmail.com \
    --cc=alchark@flipper.net \
    --cc=andyshrk@163.com \
    --cc=chenjh@rock-chips.com \
    --cc=clamor95@gmail.com \
    --cc=cnsztl@gmail.com \
    --cc=coiaprant@gmail.com \
    --cc=djw@t-chip.com.cn \
    --cc=duwe@lst.de \
    --cc=ehristev@kernel.org \
    --cc=festevam@nabladev.com \
    --cc=frank-w@public-files.de \
    --cc=frattaroli.nicolas@gmail.com \
    --cc=gajjar04akash@gmail.com \
    --cc=heiko.stuebner@cherry.de \
    --cc=hs@nabladev.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=inindev@gmail.com \
    --cc=jacobe.zang@wesion.com \
    --cc=jagan@edgeble.ai \
    --cc=jiehui.he@foxmail.com \
    --cc=jjm2473@gmail.com \
    --cc=jjriek@verizon.net \
    --cc=jonas@kwiboo.se \
    --cc=kever.yang@rock-chips.com \
    --cc=klaus.goger@cherry.de \
    --cc=liujianfeng1994@gmail.com \
    --cc=lukma@denx.de \
    --cc=macromorgan@hotmail.com \
    --cc=marek.vasut+usb@mailbox.org \
    --cc=maximmosk4@gmail.com \
    --cc=me@0upti.me \
    --cc=naoki@radxa.com \
    --cc=pbrobinson@gmail.com \
    --cc=seb-dev@mail.de \
    --cc=sjg@chromium.org \
    --cc=sputnik@on-the-web.ch \
    --cc=sunil@amarulasolutions.com \
    --cc=tom@tom-fitzhenry.me.uk \
    --cc=trini@konsulko.com \
    --cc=u-boot@0leil.net \
    --cc=u-boot@lists.u-boot-project.org \
    --cc=zhangzj@rock-chips.com \
    --cc=zhihong@nzhnb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox