diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2018-06-07 06:00:36 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-06-11 08:54:10 +0200 |
commit | 52a1cadf11d40ec0b8fed08b98b25a8a0c9b4f57 (patch) | |
tree | 65a5fd4ede4e4312c41aacfc1b87db01738ae100 | |
parent | 758b6304c598a574c4aba8fe7cd9b7a15719057c (diff) | |
download | barebox-52a1cadf11d40ec0b8fed08b98b25a8a0c9b4f57.tar.gz barebox-52a1cadf11d40ec0b8fed08b98b25a8a0c9b4f57.tar.xz |
ARM: i.MX8: Initialize system counter
Add code to properly initialize system counter, so it would be posible
to get accurate time delays.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | arch/arm/mach-imx/imx8mq.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx8mq.c b/arch/arm/mach-imx/imx8mq.c index 74fa8aca7a..f3246e4373 100644 --- a/arch/arm/mach-imx/imx8mq.c +++ b/arch/arm/mach-imx/imx8mq.c @@ -14,6 +14,8 @@ #include <init.h> #include <common.h> #include <io.h> +#include <asm/syscounter.h> +#include <asm/system.h> #include <mach/generic.h> #include <mach/revision.h> #include <mach/imx8mq-regs.h> @@ -58,6 +60,23 @@ static void imx8mq_silicon_revision(void) imx_set_silicon_revision(cputypestr, reg); } +static int imx8mq_init_syscnt_frequency(void) +{ + void __iomem *syscnt = IOMEM(MX8MQ_SYSCNT_CTRL_BASE_ADDR); + /* + * Update with accurate clock frequency + */ + set_cntfrq(syscnt_get_cntfrq(syscnt)); + syscnt_enable(syscnt); + + return 0; +} +/* + * This call needs to happen before timer driver gets probed and + * requests its update frequency via cntfrq_el0 + */ +core_initcall(imx8mq_init_syscnt_frequency); + int imx8mq_init(void) { imx8mq_silicon_revision(); |