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 05/11] arm: rockchip: support DISPLAY_CPUINFO on all Rockchip SoC
Date: Sun, 20 Sep 2026 16:15:49 +0200	[thread overview]
Message-ID: <20260920-reset-v1-5-42820216369f@gmail.com> (raw)
In-Reply-To: <20260920-reset-v1-0-42820216369f@gmail.com>

Move rockchip_get_reset_cause() implementation to SoC-specific source
files, leaving a dummy weak common implementation in cpu-info.c file:
an effective common implementation is not feasible due SoC differences.
BTW the existing ones for RK3568 and RK3588 need to be fixed/improved
because their CRU_GLB_RST_ST registers differ from the one common to
RK3288 and RK3399 on which the implementation is based.

Moreover, now all the Rockchip SoC board configurations can select the
DISPLAY_CPUINFO config option and compile cpu-info.c successfully which
provides print_cpuinfo(). Previously, boards with SoC other than RK3288
RK3399 RK3568 and RK3588 could not have DISPLAY_CPUINFO selected.

Signed-off-by: Massimo Pegorer <massimo.pegorer+oss@gmail.com>
---
 arch/arm/mach-rockchip/cpu-info.c          | 44 ++----------------------------
 arch/arm/mach-rockchip/rk3288/clk_rk3288.c | 35 ++++++++++++++++++++++++
 arch/arm/mach-rockchip/rk3399/clk_rk3399.c | 35 ++++++++++++++++++++++++
 arch/arm/mach-rockchip/rk3568/clk_rk3568.c | 35 ++++++++++++++++++++++++
 arch/arm/mach-rockchip/rk3588/clk_rk3588.c | 35 ++++++++++++++++++++++++
 5 files changed, 142 insertions(+), 42 deletions(-)

diff --git a/arch/arm/mach-rockchip/cpu-info.c b/arch/arm/mach-rockchip/cpu-info.c
index 2ec96a20c3d..b6e3d9ff964 100644
--- a/arch/arm/mach-rockchip/cpu-info.c
+++ b/arch/arm/mach-rockchip/cpu-info.c
@@ -10,49 +10,9 @@
 #include <asm/arch-rockchip/hardware.h>
 #include <linux/err.h>
 
-#if defined(CONFIG_ROCKCHIP_RK3288)
-# include <asm/arch-rockchip/cru_rk3288.h>
-#elif defined(CONFIG_ROCKCHIP_RK3399)
-# include <asm/arch-rockchip/cru_rk3399.h>
-#elif defined(CONFIG_ROCKCHIP_RK3568)
-#include <asm/arch-rockchip/cru_rk3568.h>
-#elif defined(CONFIG_ROCKCHIP_RK3588)
-#include <asm/arch-rockchip/cru_rk3588.h>
-#endif
-
-/* CRU_GLB_RST_ST */
-enum {
-	GLB_POR_RST,
-	FST_GLB_RST_ST		= BIT(0),
-	SND_GLB_RST_ST		= BIT(1),
-	FST_GLB_TSADC_RST_ST	= BIT(2),
-	SND_GLB_TSADC_RST_ST	= BIT(3),
-	FST_GLB_WDT_RST_ST	= BIT(4),
-	SND_GLB_WDT_RST_ST	= BIT(5),
-};
-
-enum rockchip_rst_cause rockchip_get_reset_cause(void)
+__weak enum rockchip_rst_cause rockchip_get_reset_cause(void)
 {
-	struct rockchip_cru *cru = rockchip_get_cru();
-
-	if (IS_ERR(cru))
-		return RST_CAUSE_UNAVAILABLE;
-
-	switch (cru->glb_rst_st) {
-	case GLB_POR_RST:
-		return RST_CAUSE_POR;
-	case FST_GLB_RST_ST:
-	case SND_GLB_RST_ST:
-		return RST_CAUSE_REG;
-	case FST_GLB_TSADC_RST_ST:
-	case SND_GLB_TSADC_RST_ST:
-		return RST_CAUSE_THERMAL;
-	case FST_GLB_WDT_RST_ST:
-	case SND_GLB_WDT_RST_ST:
-		return RST_CAUSE_WDOG;
-	}
-
-	return RST_CAUSE_UNKNOWN;
+	return RST_CAUSE_UNAVAILABLE;
 }
 
 #if IS_ENABLED(CONFIG_DISPLAY_CPUINFO)
diff --git a/arch/arm/mach-rockchip/rk3288/clk_rk3288.c b/arch/arm/mach-rockchip/rk3288/clk_rk3288.c
index d725730f5bd..a245d865a0b 100644
--- a/arch/arm/mach-rockchip/rk3288/clk_rk3288.c
+++ b/arch/arm/mach-rockchip/rk3288/clk_rk3288.c
@@ -30,3 +30,38 @@ void *rockchip_get_cru(void)
 
 	return priv->cru;
 }
+
+/* CRU_GLB_RST_ST */
+enum {
+	GLB_POR_RST,
+	FST_GLB_RST_ST		= BIT(0),
+	SND_GLB_RST_ST		= BIT(1),
+	FST_GLB_TSADC_RST_ST	= BIT(2),
+	SND_GLB_TSADC_RST_ST	= BIT(3),
+	FST_GLB_WDT_RST_ST	= BIT(4),
+	SND_GLB_WDT_RST_ST	= BIT(5),
+};
+
+enum rockchip_rst_cause rockchip_get_reset_cause(void)
+{
+	struct rockchip_cru *cru = rockchip_get_cru();
+
+	if (IS_ERR(cru))
+		return RST_CAUSE_UNAVAILABLE;
+
+	switch (cru->glb_rst_st) {
+	case GLB_POR_RST:
+		return RST_CAUSE_POR;
+	case FST_GLB_RST_ST:
+	case SND_GLB_RST_ST:
+		return RST_CAUSE_REG;
+	case FST_GLB_TSADC_RST_ST:
+	case SND_GLB_TSADC_RST_ST:
+		return RST_CAUSE_THERMAL;
+	case FST_GLB_WDT_RST_ST:
+	case SND_GLB_WDT_RST_ST:
+		return RST_CAUSE_WDOG;
+	}
+
+	return RST_CAUSE_UNKNOWN;
+}
diff --git a/arch/arm/mach-rockchip/rk3399/clk_rk3399.c b/arch/arm/mach-rockchip/rk3399/clk_rk3399.c
index 170071d243d..afd57b2e354 100644
--- a/arch/arm/mach-rockchip/rk3399/clk_rk3399.c
+++ b/arch/arm/mach-rockchip/rk3399/clk_rk3399.c
@@ -51,3 +51,38 @@ void *rockchip_get_pmucru(void)
 
 	return priv->pmucru;
 }
+
+/* CRU_GLB_RST_ST */
+enum {
+	GLB_POR_RST,
+	FST_GLB_RST_ST		= BIT(0),
+	SND_GLB_RST_ST		= BIT(1),
+	FST_GLB_TSADC_RST_ST	= BIT(2),
+	SND_GLB_TSADC_RST_ST	= BIT(3),
+	FST_GLB_WDT_RST_ST	= BIT(4),
+	SND_GLB_WDT_RST_ST	= BIT(5),
+};
+
+enum rockchip_rst_cause rockchip_get_reset_cause(void)
+{
+	struct rockchip_cru *cru = rockchip_get_cru();
+
+	if (IS_ERR(cru))
+		return RST_CAUSE_UNAVAILABLE;
+
+	switch (cru->glb_rst_st) {
+	case GLB_POR_RST:
+		return RST_CAUSE_POR;
+	case FST_GLB_RST_ST:
+	case SND_GLB_RST_ST:
+		return RST_CAUSE_REG;
+	case FST_GLB_TSADC_RST_ST:
+	case SND_GLB_TSADC_RST_ST:
+		return RST_CAUSE_THERMAL;
+	case FST_GLB_WDT_RST_ST:
+	case SND_GLB_WDT_RST_ST:
+		return RST_CAUSE_WDOG;
+	}
+
+	return RST_CAUSE_UNKNOWN;
+}
diff --git a/arch/arm/mach-rockchip/rk3568/clk_rk3568.c b/arch/arm/mach-rockchip/rk3568/clk_rk3568.c
index 1c6b2ece602..e10bcef727d 100644
--- a/arch/arm/mach-rockchip/rk3568/clk_rk3568.c
+++ b/arch/arm/mach-rockchip/rk3568/clk_rk3568.c
@@ -50,3 +50,38 @@ void *rockchip_get_pmucru(void)
 
 	return priv->pmucru;
 }
+
+/* CRU_GLB_RST_ST */
+enum {
+	GLB_POR_RST,
+	FST_GLB_RST_ST		= BIT(0),
+	SND_GLB_RST_ST		= BIT(1),
+	FST_GLB_TSADC_RST_ST	= BIT(2),
+	SND_GLB_TSADC_RST_ST	= BIT(3),
+	FST_GLB_WDT_RST_ST	= BIT(4),
+	SND_GLB_WDT_RST_ST	= BIT(5),
+};
+
+enum rockchip_rst_cause rockchip_get_reset_cause(void)
+{
+	struct rockchip_cru *cru = rockchip_get_cru();
+
+	if (IS_ERR(cru))
+		return RST_CAUSE_UNAVAILABLE;
+
+	switch (cru->glb_rst_st) {
+	case GLB_POR_RST:
+		return RST_CAUSE_POR;
+	case FST_GLB_RST_ST:
+	case SND_GLB_RST_ST:
+		return RST_CAUSE_REG;
+	case FST_GLB_TSADC_RST_ST:
+	case SND_GLB_TSADC_RST_ST:
+		return RST_CAUSE_THERMAL;
+	case FST_GLB_WDT_RST_ST:
+	case SND_GLB_WDT_RST_ST:
+		return RST_CAUSE_WDOG;
+	}
+
+	return RST_CAUSE_UNKNOWN;
+}
diff --git a/arch/arm/mach-rockchip/rk3588/clk_rk3588.c b/arch/arm/mach-rockchip/rk3588/clk_rk3588.c
index 250ec423bd2..5698b16db58 100644
--- a/arch/arm/mach-rockchip/rk3588/clk_rk3588.c
+++ b/arch/arm/mach-rockchip/rk3588/clk_rk3588.c
@@ -29,3 +29,38 @@ void *rockchip_get_cru(void)
 
 	return priv->cru;
 }
+
+/* CRU_GLB_RST_ST */
+enum {
+	GLB_POR_RST,
+	FST_GLB_RST_ST		= BIT(0),
+	SND_GLB_RST_ST		= BIT(1),
+	FST_GLB_TSADC_RST_ST	= BIT(2),
+	SND_GLB_TSADC_RST_ST	= BIT(3),
+	FST_GLB_WDT_RST_ST	= BIT(4),
+	SND_GLB_WDT_RST_ST	= BIT(5),
+};
+
+enum rockchip_rst_cause rockchip_get_reset_cause(void)
+{
+	struct rockchip_cru *cru = rockchip_get_cru();
+
+	if (IS_ERR(cru))
+		return RST_CAUSE_UNAVAILABLE;
+
+	switch (cru->glb_rst_st) {
+	case GLB_POR_RST:
+		return RST_CAUSE_POR;
+	case FST_GLB_RST_ST:
+	case SND_GLB_RST_ST:
+		return RST_CAUSE_REG;
+	case FST_GLB_TSADC_RST_ST:
+	case SND_GLB_TSADC_RST_ST:
+		return RST_CAUSE_THERMAL;
+	case FST_GLB_WDT_RST_ST:
+	case SND_GLB_WDT_RST_ST:
+		return RST_CAUSE_WDOG;
+	}
+
+	return RST_CAUSE_UNKNOWN;
+}

-- 
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 ` [PATCH RFC 04/11] rockchip: cru: improve and simplify reset cause handling Massimo Pegorer
2026-09-20 14:15 ` Massimo Pegorer [this message]
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-5-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