[v5,3/5] rockchip: Separate the reset cause from display cpuinfo

Message ID 20200714093229.28763-4-jagan@amarulasolutions.com
State New
Headers show
Series
  • roc-rk3399-pc: Custom SPL
Related show

Commit Message

Jagan Teki July 14, 2020, 9:32 a.m. UTC
reset cause is a generic functionality based on the soc
cru registers in rockchip. This can be used for printing
the cause of reset in cpuinfo or some other place where
reset cause is needed. 

Other than cpuinfo, reset cause can also be using during
bootcount for checking the specific reset cause and glow
the led based on the reset cause.

So, let's separate the reset cause code from cpuinfo, and
add a check to build it for rk3399, rk3288 since these two
soc are supporting reset cause as of now.

Tested-by: Suniel Mahesh <sunil@amarulasolutions.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
Changes for v5:
- update Makefile

 arch/arm/include/asm/arch-rockchip/cru.h |  2 ++
 arch/arm/mach-rockchip/Makefile          |  5 ++++-
 arch/arm/mach-rockchip/cpu-info.c        | 20 ++++++++++++--------
 3 files changed, 18 insertions(+), 9 deletions(-)

Comments

Kever Yang July 18, 2020, 12:45 p.m. UTC | #1
On 2020/7/14 下午5:32, Jagan Teki wrote:
> reset cause is a generic functionality based on the soc
> cru registers in rockchip. This can be used for printing
> the cause of reset in cpuinfo or some other place where
> reset cause is needed.
>
> Other than cpuinfo, reset cause can also be using during
> bootcount for checking the specific reset cause and glow
> the led based on the reset cause.
>
> So, let's separate the reset cause code from cpuinfo, and
> add a check to build it for rk3399, rk3288 since these two
> soc are supporting reset cause as of now.
>
> Tested-by: Suniel Mahesh <sunil@amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
Reviewed-by: Kever Yang<kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> Changes for v5:
> - update Makefile
>
>   arch/arm/include/asm/arch-rockchip/cru.h |  2 ++
>   arch/arm/mach-rockchip/Makefile          |  5 ++++-
>   arch/arm/mach-rockchip/cpu-info.c        | 20 ++++++++++++--------
>   3 files changed, 18 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-rockchip/cru.h b/arch/arm/include/asm/arch-rockchip/cru.h
> index d2057cb738..13ea4aba8e 100644
> --- a/arch/arm/include/asm/arch-rockchip/cru.h
> +++ b/arch/arm/include/asm/arch-rockchip/cru.h
> @@ -30,4 +30,6 @@ enum {
>   
>   #define MHz		1000000
>   
> +char *get_reset_cause(void);
> +
>   #endif /* _ROCKCHIP_CLOCK_H */
> diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
> index 5b38526fe0..121f23a563 100644
> --- a/arch/arm/mach-rockchip/Makefile
> +++ b/arch/arm/mach-rockchip/Makefile
> @@ -22,11 +22,14 @@ ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
>   # we can have the preprocessor correctly recognise both 0x0 and 0
>   # meaning "turn it off".
>   obj-y += boot_mode.o
> -obj-$(CONFIG_DISPLAY_CPUINFO) += cpu-info.o
>   obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o
>   obj-$(CONFIG_MISC_INIT_R) += misc.o
>   endif
>   
> +ifeq ($(CONFIG_TPL_BUILD),)
> +obj-$(CONFIG_DISPLAY_CPUINFO) += cpu-info.o
> +endif
> +
>   obj-$(CONFIG_$(SPL_TPL_)RAM) += sdram.o
>   
>   obj-$(CONFIG_ROCKCHIP_PX30) += px30/
> diff --git a/arch/arm/mach-rockchip/cpu-info.c b/arch/arm/mach-rockchip/cpu-info.c
> index bb5a198039..d0f030109f 100644
> --- a/arch/arm/mach-rockchip/cpu-info.c
> +++ b/arch/arm/mach-rockchip/cpu-info.c
> @@ -13,7 +13,7 @@
>   #include <asm/arch-rockchip/hardware.h>
>   #include <linux/err.h>
>   
> -static char *get_reset_cause(void)
> +char *get_reset_cause(void)
>   {
>   	struct rockchip_cru *cru = rockchip_get_cru();
>   	char *cause = NULL;
> @@ -41,21 +41,25 @@ static char *get_reset_cause(void)
>   		cause = "unknown reset";
>   	}
>   
> -	/**
> -	 * reset_reason env is used by rk3288, due to special use case
> -	 * to figure it the boot behavior. so keep this as it is.
> -	 */
> -	env_set("reset_reason", cause);
> -
>   	return cause;
>   }
>   
> +#if CONFIG_IS_ENABLED(DISPLAY_CPUINFO)
>   int print_cpuinfo(void)
>   {
> +	char *cause = get_reset_cause();
> +
>   	printf("SoC: Rockchip %s\n", CONFIG_SYS_SOC);
> -	printf("Reset cause: %s\n", get_reset_cause());
> +	printf("Reset cause: %s\n", cause);
> +
> +	/**
> +	 * reset_reason env is used by rk3288, due to special use case
> +	 * to figure it the boot behavior. so keep this as it is.
> +	 */
> +	env_set("reset_reason", cause);
>   
>   	/* TODO print operating temparature and clock */
>   
>   	return 0;
>   }
> +#endif

Patch

diff --git a/arch/arm/include/asm/arch-rockchip/cru.h b/arch/arm/include/asm/arch-rockchip/cru.h
index d2057cb738..13ea4aba8e 100644
--- a/arch/arm/include/asm/arch-rockchip/cru.h
+++ b/arch/arm/include/asm/arch-rockchip/cru.h
@@ -30,4 +30,6 @@  enum {
 
 #define MHz		1000000
 
+char *get_reset_cause(void);
+
 #endif /* _ROCKCHIP_CLOCK_H */
diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
index 5b38526fe0..121f23a563 100644
--- a/arch/arm/mach-rockchip/Makefile
+++ b/arch/arm/mach-rockchip/Makefile
@@ -22,11 +22,14 @@  ifeq ($(CONFIG_SPL_BUILD)$(CONFIG_TPL_BUILD),)
 # we can have the preprocessor correctly recognise both 0x0 and 0
 # meaning "turn it off".
 obj-y += boot_mode.o
-obj-$(CONFIG_DISPLAY_CPUINFO) += cpu-info.o
 obj-$(CONFIG_ROCKCHIP_COMMON_BOARD) += board.o
 obj-$(CONFIG_MISC_INIT_R) += misc.o
 endif
 
+ifeq ($(CONFIG_TPL_BUILD),)
+obj-$(CONFIG_DISPLAY_CPUINFO) += cpu-info.o
+endif
+
 obj-$(CONFIG_$(SPL_TPL_)RAM) += sdram.o
 
 obj-$(CONFIG_ROCKCHIP_PX30) += px30/
diff --git a/arch/arm/mach-rockchip/cpu-info.c b/arch/arm/mach-rockchip/cpu-info.c
index bb5a198039..d0f030109f 100644
--- a/arch/arm/mach-rockchip/cpu-info.c
+++ b/arch/arm/mach-rockchip/cpu-info.c
@@ -13,7 +13,7 @@ 
 #include <asm/arch-rockchip/hardware.h>
 #include <linux/err.h>
 
-static char *get_reset_cause(void)
+char *get_reset_cause(void)
 {
 	struct rockchip_cru *cru = rockchip_get_cru();
 	char *cause = NULL;
@@ -41,21 +41,25 @@  static char *get_reset_cause(void)
 		cause = "unknown reset";
 	}
 
-	/**
-	 * reset_reason env is used by rk3288, due to special use case
-	 * to figure it the boot behavior. so keep this as it is.
-	 */
-	env_set("reset_reason", cause);
-
 	return cause;
 }
 
+#if CONFIG_IS_ENABLED(DISPLAY_CPUINFO)
 int print_cpuinfo(void)
 {
+	char *cause = get_reset_cause();
+
 	printf("SoC: Rockchip %s\n", CONFIG_SYS_SOC);
-	printf("Reset cause: %s\n", get_reset_cause());
+	printf("Reset cause: %s\n", cause);
+
+	/**
+	 * reset_reason env is used by rk3288, due to special use case
+	 * to figure it the boot behavior. so keep this as it is.
+	 */
+	env_set("reset_reason", cause);
 
 	/* TODO print operating temparature and clock */
 
 	return 0;
 }
+#endif