| // SPDX-License-Identifier: GPL-2.0+ |
| * Copyright (C) Marvell International Ltd. and its affiliates |
| * Written-by: Prafulla Wadaskar <prafulla@marvell.com> |
| * Copyright (C) 2015 Stefan Roese <sr@denx.de> |
| #include <asm/arch/soc.h> |
| #include <linux/bitops.h> |
| #define TIMER_LOAD_VAL 0xffffffff |
| static int init_done __section(".data") = 0; |
| /* Only init the timer once */ |
| /* load value into timer */ |
| writel(TIMER_LOAD_VAL, MVEBU_TIMER_BASE + 0x10); |
| writel(TIMER_LOAD_VAL, MVEBU_TIMER_BASE + 0x14); |
| #if defined(CONFIG_ARCH_MVEBU) |
| /* On Armada XP / 38x ..., the 25MHz clock source needs to be enabled */ |
| setbits_le32(MVEBU_TIMER_BASE + 0x00, BIT(11)); |
| /* enable timer in auto reload mode */ |
| setbits_le32(MVEBU_TIMER_BASE + 0x00, 0x3); |