2 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
4 * SPDX-License-Identifier: BSD-3-Clause
7 #include <arch_helpers.h>
8 #include <delay_timer.h>
9 #include <platform_def.h>
11 static uint32_t plat_get_timer_value(void)
14 * Generic delay timer implementation expects the timer to be a down
15 * counter. We apply bitwise NOT operator to the tick values returned
16 * by read_cntpct_el0() to simulate the down counter.
18 return (uint32_t)(~read_cntpct_el0());
21 static const timer_ops_t plat_timer_ops
= {
22 .get_timer_value
= plat_get_timer_value
,
24 .clk_div
= SYS_COUNTER_FREQ_IN_MHZ
,
27 void plat_delay_timer_init(void)
29 timer_init(&plat_timer_ops
);