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
next prev 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.