On 1/27/22 19:41, Andre Przywara wrote:
On Thu, 27 Jan 2022 15:40:13 -0500
Jesse Taube <mr.bossman...@gmail.com> wrote:
Hi,
On 1/27/22 05:21, Andre Przywara wrote:
On Wed, 26 Jan 2022 08:53:19 -0500
Jesse Taube <mr.bossman...@gmail.com> 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,
Andre
Cheers,
Andre
Signed-off-by: Jesse Taube <mr.bossman...@gmail.com>
---
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
+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;