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