Re: [PATCH v3 02/10] mach-sunxi: Move timer code to mach folder

Andre Przywara
2022-01-29T22:58:27Z

On Sat, 29 Jan 2022 10:23:01 -0500
Jesse Taube <mr.bossman075@gmail.com> wrote:

> Both armv7 and arm926ejs use this timer code so move it to mach-sunxi.
>
> Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>

Reviewed-by: Andre Przywara <andre.przywara@arm.com>

Thanks,
Andre

> ---
> V1->V2:
> * New commit
> V2->V3:
> * Remove timer.o from armv7 Makefile
> ---
> arch/arm/cpu/armv7/sunxi/Makefile | 1 -
> arch/arm/mach-sunxi/Makefile | 3 +++
> arch/arm/{cpu/armv7/sunxi => mach-sunxi}/timer.c | 7 ++++---
> 3 files changed, 7 insertions(+), 4 deletions(-)
> rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/timer.c (97%)
>
> diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
> index ad11be7863..3e975b366c 100644
> --- a/arch/arm/cpu/armv7/sunxi/Makefile
> +++ b/arch/arm/cpu/armv7/sunxi/Makefile
> @@ -5,7 +5,6 @@
> # Based on some other Makefile
> # (C) Copyright 2000-2003
> # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
> -obj-y += timer.o
>
> obj-$(CONFIG_MACH_SUN6I) += tzpc.o
> obj-$(CONFIG_MACH_SUN8I_H3) += tzpc.o
> diff --git a/arch/arm/mach-sunxi/Makefile b/arch/arm/mach-sunxi/Makefile
> index 5d3fd70f74..b1adb75e17 100644
> --- a/arch/arm/mach-sunxi/Makefile
> +++ b/arch/arm/mach-sunxi/Makefile
> @@ -25,6 +25,9 @@ obj-$(CONFIG_MACH_SUN8I) += clock_sun6i.o
> endif
> obj-$(CONFIG_MACH_SUN9I) += clock_sun9i.o gtbus_sun9i.o
> obj-$(CONFIG_SUN50I_GEN_H6) += clock_sun50i_h6.o
> +ifndef CONFIG_ARM64
> +obj-y += timer.o
> +endif
>
> ifdef CONFIG_SPL_BUILD
> obj-$(CONFIG_DRAM_SUN4I) += dram_sun4i.o
> diff --git a/arch/arm/cpu/armv7/sunxi/timer.c b/arch/arm/mach-sunxi/timer.c
> similarity index 97%
> rename from arch/arm/cpu/armv7/sunxi/timer.c
> rename to arch/arm/mach-sunxi/timer.c
> index b758599636..fc9d419a25 100644
> --- a/arch/arm/cpu/armv7/sunxi/timer.c
> +++ b/arch/arm/mach-sunxi/timer.c
> @@ -51,6 +51,7 @@ int timer_init(void)
> struct sunxi_timer_reg *timers =
> (struct sunxi_timer_reg *)SUNXI_TIMER_BASE;
> struct sunxi_timer *timer = &timers->timer[TIMER_NUM];
> +
> writel(TIMER_LOAD_VAL, &timer->inter);
> writel(TIMER_MODE | TIMER_DIV | TIMER_SRC | TIMER_RELOAD | TIMER_EN,
> &timer->ctl);
> @@ -58,15 +59,14 @@ int timer_init(void)
> return 0;
> }
>
> -/* timer without interrupts */
> static ulong get_timer_masked(void)
> {
> /* current tick value */
> ulong now = TICKS_TO_HZ(read_timer());
>
> - if (now >= gd->arch.lastinc) /* normal (non rollover) */
> + if (now >= gd->arch.lastinc) { /* normal (non rollover) */
> gd->arch.tbl += (now - gd->arch.lastinc);
> - else {
> + } else {
> /* rollover */
> gd->arch.tbl += (TICKS_TO_HZ(TIMER_LOAD_VAL)
> - gd->arch.lastinc) + now;
> @@ -76,6 +76,7 @@ static ulong get_timer_masked(void)
> return gd->arch.tbl;
> }
>
> +/* timer without interrupts */
> ulong get_timer(ulong base)
> {
> return get_timer_masked() - base;