ARM: i.MX7: Make sure CNTFRQ is initialized early enough
We need to make sure that CNTFRQ is initialized before corresponding
clocksource driver tries to use it, otherwise we'll end up crashing
due to division by zero.

We can't convert imx7_timer_init() to be an initcall since it is an
i.MX7 specific task, but CPU type information won't be availible until
after imx_init() gets executed at postcore_initcall() level. To solve
this move all of the necessary code to be a part of
imx7_cpu_lowlevel_init().

Note, that original code both hardcoded frequency value to 8MHz as
well as tried to write it to the first element of the frequency mode
table which appears to be read-only on i.MX7. So while we are at it,
simplify the code by adding set_cntfrq() implementation for ARMv7 and
copy the code we already using for i.MX8MQ.

Fixes: dece70752 ("clocksource: Enable architected timer support for CPU_V7")
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
1 parent 5a0a620 commit 99ddaa5c52a3567f0ae928ce90c44e0976cf58ad
@Andrey Smirnov Andrey Smirnov authored on 12 Mar 2019
Sascha Hauer committed on 18 Mar 2019
Showing 3 changed files
View
arch/arm/include/asm/system.h
View
arch/arm/mach-imx/cpu_init.c
View
arch/arm/mach-imx/imx7.c