/* * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef SDEI_FLAGS_H #define SDEI_FLAGS_H #include <lib/utils_def.h> /* Internal: SDEI flag bit positions */ #define SDEI_MAPF_DYNAMIC_SHIFT_ 1U #define SDEI_MAPF_BOUND_SHIFT_ 2U #define SDEI_MAPF_SIGNALABLE_SHIFT_ 3U #define SDEI_MAPF_PRIVATE_SHIFT_ 4U #define SDEI_MAPF_CRITICAL_SHIFT_ 5U #define SDEI_MAPF_EXPLICIT_SHIFT_ 6U /* SDEI event 0 */ #define SDEI_EVENT_0 0 /* Placeholder interrupt for dynamic mapping */ #define SDEI_DYN_IRQ 0U /* SDEI flags */ /* * These flags determine whether or not an event can be associated with an * interrupt. Static events are permanently associated with an interrupt, and * can't be changed at runtime. Association of dynamic events with interrupts * can be changed at run time using the SDEI_INTERRUPT_BIND and * SDEI_INTERRUPT_RELEASE calls. * * SDEI_MAPF_DYNAMIC only indicates run time configurability, where as * SDEI_MAPF_BOUND indicates interrupt association. For example: * * - Calling SDEI_INTERRUPT_BIND on a dynamic event will have both * SDEI_MAPF_DYNAMIC and SDEI_MAPF_BOUND set. * * - Statically-bound events will always have SDEI_MAPF_BOUND set, and neither * SDEI_INTERRUPT_BIND nor SDEI_INTERRUPT_RELEASE can be called on them. * * See also the is_map_bound() macro. */ #define SDEI_MAPF_DYNAMIC BIT(SDEI_MAPF_DYNAMIC_SHIFT_) #define SDEI_MAPF_BOUND BIT(SDEI_MAPF_BOUND_SHIFT_) #define SDEI_MAPF_EXPLICIT BIT(SDEI_MAPF_EXPLICIT_SHIFT_) #define SDEI_MAPF_SIGNALABLE BIT(SDEI_MAPF_SIGNALABLE_SHIFT_) #define SDEI_MAPF_PRIVATE BIT(SDEI_MAPF_PRIVATE_SHIFT_) #define SDEI_MAPF_NORMAL 0 #define SDEI_MAPF_CRITICAL BIT(SDEI_MAPF_CRITICAL_SHIFT_) #endif /* SDEI_FLAGS_H */