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