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

Jesse Taube mr.bossman075 at gmail.com
Thu Jan 27 21:40:13 CET 2022



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