[PATCH v5 3/5] rockchip: Separate the reset cause from display cpuinfo
Kever Yang
kever.yang at rock-chips.com
Sat Jul 18 14:45:37 CEST 2020
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 at amarulasolutions.com>
> Signed-off-by: Jagan Teki <jagan at amarulasolutions.com>
Reviewed-by: Kever Yang<kever.yang at 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
More information about the U-Boot
mailing list