xref: /rk3399_rockchip-uboot/arch/arm/mach-mvebu/timer.c (revision f46c25583a73042edf432b209ee4b93bc3f7e762)
1d0787656SStefan Roese /*
2d0787656SStefan Roese  * Copyright (C) Marvell International Ltd. and its affiliates
3d0787656SStefan Roese  * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
4d0787656SStefan Roese  *
52fbc18feSStefan Roese  * Copyright (C) 2015 Stefan Roese <sr@denx.de>
62fbc18feSStefan Roese  *
7d0787656SStefan Roese  * SPDX-License-Identifier:	GPL-2.0+
8d0787656SStefan Roese  */
9d0787656SStefan Roese 
10d0787656SStefan Roese #include <common.h>
11d0787656SStefan Roese #include <asm/io.h>
12d0787656SStefan Roese #include <asm/arch/soc.h>
13d0787656SStefan Roese 
142fbc18feSStefan Roese DECLARE_GLOBAL_DATA_PTR;
15d0787656SStefan Roese 
16d0787656SStefan Roese #define TIMER_LOAD_VAL			0xffffffff
17d0787656SStefan Roese 
18787ddb7cSStefan Roese static int init_done __attribute__((section(".data"))) = 0;
19ade741b3SStefan Roese 
20d0787656SStefan Roese /*
212fbc18feSStefan Roese  * Timer initialization
22d0787656SStefan Roese  */
timer_init(void)23d0787656SStefan Roese int timer_init(void)
24d0787656SStefan Roese {
25ade741b3SStefan Roese 	/* Only init the timer once */
26ade741b3SStefan Roese 	if (init_done)
27ade741b3SStefan Roese 		return 0;
28ade741b3SStefan Roese 	init_done = 1;
29ade741b3SStefan Roese 
30d0787656SStefan Roese 	/* load value into timer */
312fbc18feSStefan Roese 	writel(TIMER_LOAD_VAL, MVEBU_TIMER_BASE + 0x10);
322fbc18feSStefan Roese 	writel(TIMER_LOAD_VAL, MVEBU_TIMER_BASE + 0x14);
33d0787656SStefan Roese 
34*81e33f4bSStefan Roese #if defined(CONFIG_ARCH_MVEBU)
352fbc18feSStefan Roese 	/* On Armada XP / 38x ..., the 25MHz clock source needs to be enabled */
362fbc18feSStefan Roese 	setbits_le32(MVEBU_TIMER_BASE + 0x00, BIT(11));
372fbc18feSStefan Roese #endif
38d0787656SStefan Roese 	/* enable timer in auto reload mode */
392fbc18feSStefan Roese 	setbits_le32(MVEBU_TIMER_BASE + 0x00, 0x3);
40d0787656SStefan Roese 
41d0787656SStefan Roese 	return 0;
42d0787656SStefan Roese }
43