[U-Boot] nds32: ag101/ag102: Inconsistent timer3 counter unit?

Kuan-Yu Kuo ken.kuoky at gmail.com
Mon Jul 8 05:02:29 CEST 2013


Hi Axel,

2013/7/3 Axel Lin <axel.lin at ingics.com>:
> Hi Macpaul,
>
> For the case CONFIG_FTTMR010_EXT_CLK is not defined:
>
> In reset_timer_masked():
> lastdec = readl(&tmr->timer3_counter) / (CONFIG_SYS_CLK_FREQ / 2);
>
> In get_timer_masked():
> ulong now = readl(&tmr->timer3_counter) / (CONFIG_SYS_CLK_FREQ / 2 / 1024);
>
> The code looks strange.
> (Why one needs to be divided by 1024 and the other one does not?)
> I'm not sure which one is correct.
>
> Regards,
> Axel
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

The unit of "readl(&tmr->timer3_counter) / (CONFIG_SYS_CLK_FREQ / 2)" is second.
However, there is a definition CONFIG_SYS_HZ = 1000 in
include/configs/adp-ag101p.h ,
this means the accuracy of "lastdec" and "now" should be in millisecond,
I think divided by 1024 is just for this purpose, but use CONFIG_SYS_HZ to
replace 1024 would be better.

so the correct should be:
lastdec = readl(&tmr->timer3_counter) / (CONFIG_SYS_CLK_FREQ / 2 /
CONFIG_SYS_HZ);
ulong now = readl(&tmr->timer3_counter) / (CONFIG_SYS_CLK_FREQ / 2 /
CONFIG_SYS_HZ);

Best Regards,
Kuan-Yu Kuo


More information about the U-Boot mailing list