blob: 14c7331e1ab2ee47a701a18fb71f7763840789ae [file] [log] [blame]
Jagan Teki2952f392020-01-09 14:22:15 +05301// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * (C) Copyright 2019 Amarula Solutions(India)
4 * Author: Jagan Teki <jagan@amarulasolutions.com>
5 */
6
Simon Glass09140112020-05-10 11:40:03 -06007#include <env.h>
Simon Glass691d7192020-05-10 11:40:02 -06008#include <init.h>
Jagan Tekiee6321f2020-01-09 14:22:18 +05309#include <asm/arch-rockchip/clock.h>
10#include <asm/arch-rockchip/cru.h>
11#include <asm/arch-rockchip/hardware.h>
12#include <linux/err.h>
13
Jagan Tekie230c572020-07-21 20:36:03 +053014char *get_reset_cause(void)
Jagan Tekiee6321f2020-01-09 14:22:18 +053015{
16 struct rockchip_cru *cru = rockchip_get_cru();
17 char *cause = NULL;
18
19 if (IS_ERR(cru))
20 return cause;
21
22 switch (cru->glb_rst_st) {
23 case GLB_POR_RST:
24 cause = "POR";
25 break;
26 case FST_GLB_RST_ST:
27 case SND_GLB_RST_ST:
28 cause = "RST";
29 break;
30 case FST_GLB_TSADC_RST_ST:
31 case SND_GLB_TSADC_RST_ST:
32 cause = "THERMAL";
33 break;
34 case FST_GLB_WDT_RST_ST:
35 case SND_GLB_WDT_RST_ST:
36 cause = "WDOG";
37 break;
38 default:
39 cause = "unknown reset";
40 }
41
Jagan Tekie230c572020-07-21 20:36:03 +053042 return cause;
43}
44
Simon Glassf27a5452023-02-05 15:39:36 -070045#if IS_ENABLED(CONFIG_DISPLAY_CPUINFO)
Jagan Tekie230c572020-07-21 20:36:03 +053046int print_cpuinfo(void)
47{
48 char *cause = get_reset_cause();
49
50 printf("SoC: Rockchip %s\n", CONFIG_SYS_SOC);
51 printf("Reset cause: %s\n", cause);
52
Jagan Tekiee6321f2020-01-09 14:22:18 +053053 /**
54 * reset_reason env is used by rk3288, due to special use case
55 * to figure it the boot behavior. so keep this as it is.
56 */
57 env_set("reset_reason", cause);
58
Jagan Teki2952f392020-01-09 14:22:15 +053059 /* TODO print operating temparature and clock */
60
61 return 0;
62}
Jagan Tekie230c572020-07-21 20:36:03 +053063#endif