xref: /rk3399_ARM-atf/include/services/sdei_flags.h (revision cbf9e84a193883f11a99b2f61417710a69e36e0d)
1*cbf9e84aSBalint Dobszay /*
2*cbf9e84aSBalint Dobszay  * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
3*cbf9e84aSBalint Dobszay  *
4*cbf9e84aSBalint Dobszay  * SPDX-License-Identifier: BSD-3-Clause
5*cbf9e84aSBalint Dobszay  */
6*cbf9e84aSBalint Dobszay 
7*cbf9e84aSBalint Dobszay #ifndef SDEI_FLAGS_H
8*cbf9e84aSBalint Dobszay #define SDEI_FLAGS_H
9*cbf9e84aSBalint Dobszay 
10*cbf9e84aSBalint Dobszay #include <lib/utils_def.h>
11*cbf9e84aSBalint Dobszay 
12*cbf9e84aSBalint Dobszay /* Internal: SDEI flag bit positions */
13*cbf9e84aSBalint Dobszay #define SDEI_MAPF_DYNAMIC_SHIFT_	1U
14*cbf9e84aSBalint Dobszay #define SDEI_MAPF_BOUND_SHIFT_		2U
15*cbf9e84aSBalint Dobszay #define SDEI_MAPF_SIGNALABLE_SHIFT_	3U
16*cbf9e84aSBalint Dobszay #define SDEI_MAPF_PRIVATE_SHIFT_	4U
17*cbf9e84aSBalint Dobszay #define SDEI_MAPF_CRITICAL_SHIFT_	5U
18*cbf9e84aSBalint Dobszay #define SDEI_MAPF_EXPLICIT_SHIFT_	6U
19*cbf9e84aSBalint Dobszay 
20*cbf9e84aSBalint Dobszay /* SDEI event 0 */
21*cbf9e84aSBalint Dobszay #define SDEI_EVENT_0	0
22*cbf9e84aSBalint Dobszay 
23*cbf9e84aSBalint Dobszay /* Placeholder interrupt for dynamic mapping */
24*cbf9e84aSBalint Dobszay #define SDEI_DYN_IRQ	0U
25*cbf9e84aSBalint Dobszay 
26*cbf9e84aSBalint Dobszay /* SDEI flags */
27*cbf9e84aSBalint Dobszay 
28*cbf9e84aSBalint Dobszay /*
29*cbf9e84aSBalint Dobszay  * These flags determine whether or not an event can be associated with an
30*cbf9e84aSBalint Dobszay  * interrupt. Static events are permanently associated with an interrupt, and
31*cbf9e84aSBalint Dobszay  * can't be changed at runtime.  Association of dynamic events with interrupts
32*cbf9e84aSBalint Dobszay  * can be changed at run time using the SDEI_INTERRUPT_BIND and
33*cbf9e84aSBalint Dobszay  * SDEI_INTERRUPT_RELEASE calls.
34*cbf9e84aSBalint Dobszay  *
35*cbf9e84aSBalint Dobszay  * SDEI_MAPF_DYNAMIC only indicates run time configurability, where as
36*cbf9e84aSBalint Dobszay  * SDEI_MAPF_BOUND indicates interrupt association. For example:
37*cbf9e84aSBalint Dobszay  *
38*cbf9e84aSBalint Dobszay  *  - Calling SDEI_INTERRUPT_BIND on a dynamic event will have both
39*cbf9e84aSBalint Dobszay  *    SDEI_MAPF_DYNAMIC and SDEI_MAPF_BOUND set.
40*cbf9e84aSBalint Dobszay  *
41*cbf9e84aSBalint Dobszay  *  - Statically-bound events will always have SDEI_MAPF_BOUND set, and neither
42*cbf9e84aSBalint Dobszay  *    SDEI_INTERRUPT_BIND nor SDEI_INTERRUPT_RELEASE can be called on them.
43*cbf9e84aSBalint Dobszay  *
44*cbf9e84aSBalint Dobszay  * See also the is_map_bound() macro.
45*cbf9e84aSBalint Dobszay  */
46*cbf9e84aSBalint Dobszay #define SDEI_MAPF_DYNAMIC	BIT(SDEI_MAPF_DYNAMIC_SHIFT_)
47*cbf9e84aSBalint Dobszay #define SDEI_MAPF_BOUND		BIT(SDEI_MAPF_BOUND_SHIFT_)
48*cbf9e84aSBalint Dobszay #define SDEI_MAPF_EXPLICIT	BIT(SDEI_MAPF_EXPLICIT_SHIFT_)
49*cbf9e84aSBalint Dobszay 
50*cbf9e84aSBalint Dobszay #define SDEI_MAPF_SIGNALABLE	BIT(SDEI_MAPF_SIGNALABLE_SHIFT_)
51*cbf9e84aSBalint Dobszay #define SDEI_MAPF_PRIVATE	BIT(SDEI_MAPF_PRIVATE_SHIFT_)
52*cbf9e84aSBalint Dobszay 
53*cbf9e84aSBalint Dobszay #define SDEI_MAPF_NORMAL	0
54*cbf9e84aSBalint Dobszay #define SDEI_MAPF_CRITICAL	BIT(SDEI_MAPF_CRITICAL_SHIFT_)
55*cbf9e84aSBalint Dobszay 
56*cbf9e84aSBalint Dobszay #endif /* SDEI_FLAGS_H */
57