[U-Boot] [PATCH 04/28] armv8/ls2085a: Fix generic timer clock source

York Sun
2015-03-19T18:24:10Z

On 03/19/2015 11:17 AM, Mark Rutland wrote:
> On Thu, Mar 19, 2015 at 06:16:25PM +0000, York Sun wrote:
>> On 03/19/2015 11:08 AM, Mark Rutland wrote:
>>>> +
>>>> +int timer_init(void)
>>>> +{
>>>> + u32 __iomem *cntcr = (u32 *)CONFIG_SYS_FSL_TIMER_ADDR;
>>>> + u32 __iomem *cltbenr = (u32 *)CONFIG_SYS_FSL_PMU_CLTBENR;
>>>> +#ifdef COUNTER_FREQUENCY_REAL
>>>> + unsigned long cntfrq = COUNTER_FREQUENCY_REAL;
>>>> +
>>>> + /* Update with accurate clock frequency */
>>>> + asm volatile("msr cntfrq_el0, %0" : : "r" (cntfrq) : "memory");
>>>> +#endif
>>>
>>> Is this executed on all CPUs, or do secondary CPUs have CNTFRQ
>>> programmed with the correct value elsewhere?
>>>
>>
>> Only the primary CPU runs here. The secondary CPU doesn't come here.
>
> Ok. Where does CNTFRQ get programmed for those CPUs?
>
> If it's necessary to write COUNTER_FREQUENCY_REAL to the primary CPU's
> CNTFRQ, that's also necessary on the secondaries before they enter the
> OS.

Hmm, this may be a bug. Didn't hear any complain from Linux users. We found the
timer wasn't correct during bring-up. Let me check with internal team.

Thanks, Mark.

York