plat_delay_timer.c 709 Bytes
Newer Older
1
/*
Leon Chen's avatar
Leon Chen committed
2
 * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3
 *
dp-arm's avatar
dp-arm committed
4
 * SPDX-License-Identifier: BSD-3-Clause
5
6
 */

Leon Chen's avatar
Leon Chen committed
7
8
9
#include <arch_helpers.h>
#include <delay_timer.h>
#include <platform_def.h>
10

Leon Chen's avatar
Leon Chen committed
11
12
13
14
15
16
17
18
19
static uint32_t plat_get_timer_value(void)
{
	/*
	 * Generic delay timer implementation expects the timer to be a down
	 * counter. We apply bitwise NOT operator to the tick values returned
	 * by read_cntpct_el0() to simulate the down counter.
	 */
	return (uint32_t)(~read_cntpct_el0());
}
20

Leon Chen's avatar
Leon Chen committed
21
22
23
24
25
static const timer_ops_t plat_timer_ops = {
	.get_timer_value	= plat_get_timer_value,
	.clk_mult		= 1,
	.clk_div		= SYS_COUNTER_FREQ_IN_MHZ,
};
26

Leon Chen's avatar
Leon Chen committed
27
28
29
30
void plat_delay_timer_init(void)
{
	timer_init(&plat_timer_ops);
}