On 1/28/22 09:28, Andre Przywara wrote:
On Thu, 27 Jan 2022 23:51:09 -0500
Jesse Taube <mr.bossman...@gmail.com> wrote:

Hi Jesse,

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`

How did you trigger this? I built all 159 (+1 F1C100s) sunxi defconfigs
without errors.
What toolchain are you using? I see that for instance Cubieboard_defconfig
comes out empty for U-Boot proper, but this does not seem to be a problem
for my "arm-linux-gnueabihf-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0" and
"GNU ld (GNU Binutils for Ubuntu) 2.34". I see an 8 byte sized built-in.o,
and no other .o files in the directory.

Ah I see. My misunderstanding of how it worked.
If the MAKEFILE has nothing in it it will cause it.
It will also happen if ifdefs make the file empty. This was happening with arm926ejs/sunxi and I thought it had to do with there being nothing assembled or compiled. I thought the same may happen with this file but adding anything not in an ifdef will cuase it to be fixed. If you dont understand what I'm saying that's fine its unimportant because my issue doesn't exist sorry for the confusion.

Sorry,
        Jesse Taube
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?

I will check the rest of the patches today, but there are only minor
things.

Also thank you so much for being interested in this!

Yeah, I decided to bite the bullet and join Allwinner's race to the
bottom ;-) After all, a mainline Linux capable device in the size of an SD
card has something to it, even when it's missing half of the bits ;-)
I ordered a LicheePi Nano, but not sure if that makes it out before
Chinese New Year still.

Have my patches been okay so far?

They look good so far, yes.

I really hope this gets in before cleanup of sunxi starts as rebasing it
was already difficult.

Pretty sure of that.

Cheers,
Andre


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;

Reply via email to