On 1/27/22 19:41, Andre Przywara wrote:
On Thu, 27 Jan 2022 15:40:13 -0500 Jesse Taube <[email protected]> wrote: Hi,On 1/27/22 05:21, Andre Przywara wrote:On Wed, 26 Jan 2022 08:53:19 -0500 Jesse Taube <[email protected]> wrote:Both armv7 and arm926ejs use this timer code so move it to mach-sunxi.Very nice, thanks for cleaning this up. But please remove the respective line from the Makefile in arch/arm/cpu/armv7/sunxi/, otherwise 32-bit board builds fail: make[2]: *** No rule to make target 'arch/arm/cpu/armv7/sunxi/timer.o' ...Oh my I'm very sorry about this. There is one thing though arch/arm/cpu/armv7/sunxi/ needs to have one .o file in there to compile. If I remove `ifdef CONFIG_SPL_BUILD` for fel_utils it will work but its not used in u-boot proper.Mmh, not sure I follow, I cannot reproduce any problem. Can you elaborate? And did you do a "make clean" afterwards?
If nothing is built by that MAKEFILE which would happen if !(CONFIG_MACH_SUN6I || CONFIG_MACH_SUN8I_H3 CONFIG_MACH_SUN8I || CONFIG_ARMV7_PSCI) it will error with the following `ar: arch/arm/cpu/armv7/sunxi/built-in.o: No such file or directory`I don't know if there is a config that will break it currently but it is possible. So we will have to let it generate some .o file. Even if it is optimized out.
Should I still wait for your review of V2? Also thank you so much for being interested in this! Have my patches been okay so far?I really hope this gets in before cleanup of sunxi starts as rebasing it was already difficult.
Thank you,
Jesse Taube
Cheers, AndreCheers, AndreSigned-off-by: Jesse Taube <[email protected]> --- V1->V2: * New commit --- arch/arm/mach-sunxi/Makefile | 3 +++ arch/arm/{cpu/armv7/sunxi => mach-sunxi}/timer.c | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) rename arch/arm/{cpu/armv7/sunxi => mach-sunxi}/timer.c (97%) 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 +endififdef CONFIG_SPL_BUILDobj-$(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;

