[PATCH v20 08/17] clocksource/drivers/arm_arch_timer: Rework counter frequency detection.
Hanjun Guo
hanjun.guo at linaro.org
Thu Jan 19 00:02:28 PST 2017
Hi Fuwei,
One comments below.
On 2017/1/18 21:25, fu.wei at linaro.org wrote:
> From: Fu Wei <fu.wei at linaro.org>
>
> The counter frequency detection call(arch_timer_detect_rate) combines two
> ways to get counter frequency: system coprocessor register and MMIO timer.
> But in a specific timer init code, we only need one way to try:
> getting frequency from MMIO timer register will be needed only when we
> init MMIO timer; getting frequency from system coprocessor register will
> be needed only when we init arch timer.
>
> This patch separates paths to determine frequency:
> Separate out the MMIO frequency and the sysreg frequency detection call,
> and use the appropriate one for the counter.
>
> Signed-off-by: Fu Wei <fu.wei at linaro.org>
> ---
> drivers/clocksource/arm_arch_timer.c | 40 ++++++++++++++++++++++--------------
> 1 file changed, 25 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
> index 6484f84..9482481 100644
> --- a/drivers/clocksource/arm_arch_timer.c
> +++ b/drivers/clocksource/arm_arch_timer.c
> @@ -488,23 +488,33 @@ static int arch_timer_starting_cpu(unsigned int cpu)
> return 0;
> }
>
> -static void arch_timer_detect_rate(void __iomem *cntbase)
> +static void __arch_timer_determine_rate(u32 rate)
> {
> - /* Who has more than one independent system counter? */
> - if (arch_timer_rate)
> - return;
> + /* Check the timer frequency. */
> + if (!arch_timer_rate) {
> + if (rate)
> + arch_timer_rate = rate;
> + else
> + pr_warn("frequency not available\n");
> + } else if (rate && arch_timer_rate != rate) {
^
Typo? I think it's "&" here.
Thanks
Hanjun
More information about the linux-arm-kernel
mailing list