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

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

Hi Axel,
2013/7/3 Axel Lin axel.lin@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@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
participants (2)
-
Axel Lin
-
Kuan-Yu Kuo