[PATCH v4 02/12] rockchip: spl: change call condition rockchip_stimer_init()

Kever Yang kever.yang at rock-chips.com
Wed Apr 6 16:16:15 CEST 2022


Hi Johan,

On 2022/4/4 07:06, Johan Jonker wrote:
> The Rockchip SoCs rk3066/rk3188 have no CONFIG_ROCKCHIP_STIMER_BASE
> defined. Currently only rk3188 has an exception. Make this more
> generic and call the function rockchip_stimer_init() only when
> CONFIG_ROCKCHIP_STIMER_BASE is available.
>
> Signed-off-by: Johan Jonker <jbx6244 at gmail.com>
> Reviewed-by: Simon Glass <sjg at chromium.org>
> ---
>
> Changed V3:
>    use CONFIG_ROCKCHIP_STIMER
>
> Changed V2:
>    use IS_ENABLED
>    add include kconfig.h
>    move define location so that rockchip_stimer_init() is always
>    visible to the compiler
> ---
>   arch/arm/mach-rockchip/spl.c | 13 ++++++++-----
>   1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c
> index 7a8db632b8..0017ca71b0 100644
> --- a/arch/arm/mach-rockchip/spl.c
> +++ b/arch/arm/mach-rockchip/spl.c
> @@ -16,6 +16,7 @@
>   #include <asm/global_data.h>
>   #include <asm/io.h>
>   #include <linux/bitops.h>
> +#include <linux/kconfig.h>
>   
>   DECLARE_GLOBAL_DATA_PTR;
>   
> @@ -71,7 +72,6 @@ u32 spl_mmc_boot_mode(const u32 boot_device)
>   	return MMCSD_MODE_RAW;
>   }
>   
> -#if !defined(CONFIG_ROCKCHIP_RK3188)
>   #define TIMER_LOAD_COUNT_L	0x00
>   #define TIMER_LOAD_COUNT_H	0x04
>   #define TIMER_CONTROL_REG	0x10
> @@ -81,6 +81,7 @@ u32 spl_mmc_boot_mode(const u32 boot_device)
>   
>   __weak void rockchip_stimer_init(void)
>   {
> +#if defined(CONFIG_ROCKCHIP_STIMER_BASE)
>   	/* If Timer already enabled, don't re-init it */
>   	u32 reg = readl(CONFIG_ROCKCHIP_STIMER_BASE + TIMER_CONTROL_REG);
>   
> @@ -95,8 +96,8 @@ __weak void rockchip_stimer_init(void)
>   	writel(0xffffffff, CONFIG_ROCKCHIP_STIMER_BASE + 4);
>   	writel(TIMER_EN | TIMER_FMODE, CONFIG_ROCKCHIP_STIMER_BASE +
>   	       TIMER_CONTROL_REG);
> -}
>   #endif
> +}
>   
>   __weak int board_early_init_f(void)
>   {
> @@ -133,9 +134,11 @@ void board_init_f(ulong dummy)
>   		hang();
>   	}
>   	arch_cpu_init();
> -#if !defined(CONFIG_ROCKCHIP_RK3188)
> -	rockchip_stimer_init();
> -#endif
> +
> +	/* Init secure timer */
> +	if (IS_ENABLED(CONFIG_ROCKCHIP_STIMER))
> +		rockchip_stimer_init();
> +

The CONFIG_ROCKCHIP_STIMER and CONFIG_ROCKCHIP_STIMER_BASE are always 
show up at the same time,

so we don't need two ifdef with two different MACRO in this file, remove 
one of it.

I would prefer to just call rockchip_stimer_init() here, and it will be 
empty function for rk3066/rk3188.


Thanks,

- Kever

>   #ifdef CONFIG_SYS_ARCH_TIMER
>   	/* Init ARM arch timer in arch/arm/cpu/armv7/arch_timer.c */
>   	timer_init();


More information about the U-Boot mailing list