[PATCH v2 02/12] mach-sunxi: Move timer code to mach folder
Andre Przywara
andre.przywara at arm.com
Fri Jan 28 15:28:03 CET 2022
On Thu, 27 Jan 2022 23:51:09 -0500
Jesse Taube <mr.bossman075 at 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.bossman075 at 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.bossman075 at 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.
> 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.Bossman075 at 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;
> >>>
> >
More information about the U-Boot
mailing list