[PATCH 23/30] rockchip: cpuinfo: Use sysreset_get_status() helper

Jonas Karlman <[email protected]>
Newsgroups org.u-boot-project.lists.u-boot
Message-ID <[email protected]>
The get_reset_cause() helper only works on RK3288, RK3399, RK3568 and
RK3588 due to its dependency on rockchip_get_cru() and the glb_rst_st
field in struct rockchip_cru.

Convert to use the sysreset_get_status() helper now that the
sysreset_rockchip driver implements the get_status() ops to remove any
dependency on rockchip_get_cru() and the glb_rst_st field.

Signed-off-by: Jonas Karlman <[email protected]>
---
 arch/arm/include/asm/arch-rockchip/cru.h | 13 ------
 arch/arm/mach-rockchip/cpu-info.c        | 50 ++++++------------------
 2 files changed, 13 insertions(+), 50 deletions(-)

diff --git a/arch/arm/include/asm/arch-rockchip/cru.h b/arch/arm/include/asm/arch-rockchip/cru.h
index c3259b8e7cc0..b583d08a50c3 100644
--- a/arch/arm/include/asm/arch-rockchip/cru.h
+++ b/arch/arm/include/asm/arch-rockchip/cru.h
@@ -21,19 +21,6 @@
 #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),
-};
-
 #define MHz		1000000
 
-char *get_reset_cause(void);
-
 #endif /* _ROCKCHIP_CLOCK_H */
diff --git a/arch/arm/mach-rockchip/cpu-info.c b/arch/arm/mach-rockchip/cpu-info.c
index 14c7331e1ab2..9be523b11003 100644
--- a/arch/arm/mach-rockchip/cpu-info.c
+++ b/arch/arm/mach-rockchip/cpu-info.c
@@ -4,48 +4,24 @@
  * Author: Jagan Teki <[email protected]>
  */
 
+#include <dm.h>
 #include <env.h>
-#include <init.h>
-#include <asm/arch-rockchip/clock.h>
-#include <asm/arch-rockchip/cru.h>
-#include <asm/arch-rockchip/hardware.h>
-#include <linux/err.h>
-
-char *get_reset_cause(void)
-{
-	struct rockchip_cru *cru = rockchip_get_cru();
-	char *cause = NULL;
-
-	if (IS_ERR(cru))
-		return cause;
-
-	switch (cru->glb_rst_st) {
-	case GLB_POR_RST:
-		cause = "POR";
-		break;
-	case FST_GLB_RST_ST:
-	case SND_GLB_RST_ST:
-		cause = "RST";
-		break;
-	case FST_GLB_TSADC_RST_ST:
-	case SND_GLB_TSADC_RST_ST:
-		cause = "THERMAL";
-		break;
-	case FST_GLB_WDT_RST_ST:
-	case SND_GLB_WDT_RST_ST:
-		cause = "WDOG";
-		break;
-	default:
-		cause = "unknown reset";
-	}
-
-	return cause;
-}
+#include <sysreset.h>
 
 #if IS_ENABLED(CONFIG_DISPLAY_CPUINFO)
 int print_cpuinfo(void)
 {
-	char *cause = get_reset_cause();
+	struct udevice *sysreset_dev;
+	char cause[16];
+	int ret;
+
+	ret = uclass_get_device_by_driver(UCLASS_SYSRESET,
+					  DM_DRIVER_GET(sysreset_rockchip),
+					  &sysreset_dev);
+	if (!ret)
+		ret = sysreset_get_status(sysreset_dev, cause, sizeof(cause));
+	if (ret)
+		strcpy(cause, "unknown reset");
 
 	printf("SoC: Rockchip %s\n", CONFIG_SYS_SOC);
 	printf("Reset cause: %s\n", cause);
-- 
2.54.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.