1 /*
2  * Copyright (c) 2019 Carlo Caione <ccaione@baylibre.com>
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 
8 #ifndef ZEPHYR_INCLUDE_DRIVERS_TIMER_ARM_ARCH_TIMER_H_
9 #define ZEPHYR_INCLUDE_DRIVERS_TIMER_ARM_ARCH_TIMER_H_
10 
11 #include <zephyr/dt-bindings/interrupt-controller/arm-gic.h>
12 #include <zephyr/types.h>
13 #include <zephyr/devicetree.h>
14 
15 #if DT_HAS_COMPAT_STATUS_OKAY(arm_armv8_timer)
16 #define ARM_TIMER_NODE DT_INST(0, arm_armv8_timer)
17 #elif DT_HAS_COMPAT_STATUS_OKAY(arm_armv7_timer)
18 #define ARM_TIMER_NODE DT_INST(0, arm_armv7_timer)
19 #endif
20 
21 #define ARM_TIMER_SECURE_IRQ		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 0, irq)
22 #define ARM_TIMER_NON_SECURE_IRQ	DT_IRQ_BY_IDX(ARM_TIMER_NODE, 1, irq)
23 #define ARM_TIMER_VIRTUAL_IRQ		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 2, irq)
24 #define ARM_TIMER_HYP_IRQ		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 3, irq)
25 
26 #define ARM_TIMER_SECURE_PRIO		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 0,\
27 					priority)
28 #define ARM_TIMER_NON_SECURE_PRIO	DT_IRQ_BY_IDX(ARM_TIMER_NODE, 1,\
29 					priority)
30 #define ARM_TIMER_VIRTUAL_PRIO		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 2,\
31 					priority)
32 #define ARM_TIMER_HYP_PRIO		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 3,\
33 					priority)
34 
35 #define ARM_TIMER_SECURE_FLAGS		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 0, flags)
36 #define ARM_TIMER_NON_SECURE_FLAGS	DT_IRQ_BY_IDX(ARM_TIMER_NODE, 1, flags)
37 #define ARM_TIMER_VIRTUAL_FLAGS		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 2, flags)
38 #define ARM_TIMER_HYP_FLAGS		DT_IRQ_BY_IDX(ARM_TIMER_NODE, 3, flags)
39 
40 #endif /* ZEPHYR_INCLUDE_DRIVERS_TIMER_ARM_ARCH_TIMER_H_ */
41