[PATCH v2 02/12] mach-sunxi: Move timer code to mach folder

Jesse Taube mr.bossman075 at gmail.com
Fri Jan 28 05:51:09 CET 2022



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`

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.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