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