18cef63d6SBoyan Karatotev /* 28cef63d6SBoyan Karatotev * Copyright (c) 2025, Arm Limited and Contributors. All rights reserved. 38cef63d6SBoyan Karatotev * 48cef63d6SBoyan Karatotev * SPDX-License-Identifier: BSD-3-Clause 58cef63d6SBoyan Karatotev */ 6*13b62814SBoyan Karatotev 7*13b62814SBoyan Karatotev #include <cdefs.h> 8*13b62814SBoyan Karatotev 9*13b62814SBoyan Karatotev #include <arch_features.h> 10*13b62814SBoyan Karatotev #include <bl31/interrupt_mgmt.h> 11*13b62814SBoyan Karatotev #include <common/debug.h> 12*13b62814SBoyan Karatotev #include <drivers/arm/gicv5.h> 13*13b62814SBoyan Karatotev 14*13b62814SBoyan Karatotev void __init gicv5_driver_init(void) 15*13b62814SBoyan Karatotev { 16*13b62814SBoyan Karatotev } 17*13b62814SBoyan Karatotev 18*13b62814SBoyan Karatotev /* 19*13b62814SBoyan Karatotev * There exists a theoretical configuration where FEAT_RME is enabled 20*13b62814SBoyan Karatotev * without using TrustZone (i.e., no Secure world present). Currently, 21*13b62814SBoyan Karatotev * there is no reliable mechanism to detect this scenario at runtime. 22*13b62814SBoyan Karatotev * 23*13b62814SBoyan Karatotev * TODO: Add support for this configuration in the future if required. 24*13b62814SBoyan Karatotev */ 25*13b62814SBoyan Karatotev bool gicv5_has_interrupt_type(unsigned int type) 26*13b62814SBoyan Karatotev { 27*13b62814SBoyan Karatotev switch (type) { 28*13b62814SBoyan Karatotev case INTR_TYPE_EL3: 29*13b62814SBoyan Karatotev case INTR_TYPE_S_EL1: 30*13b62814SBoyan Karatotev case INTR_TYPE_NS: 31*13b62814SBoyan Karatotev return true; 32*13b62814SBoyan Karatotev case INTR_TYPE_RL: 33*13b62814SBoyan Karatotev return is_feat_rme_supported(); 34*13b62814SBoyan Karatotev default: 35*13b62814SBoyan Karatotev return false; 36*13b62814SBoyan Karatotev } 37*13b62814SBoyan Karatotev } 38*13b62814SBoyan Karatotev 39*13b62814SBoyan Karatotev uint8_t gicv5_get_pending_interrupt_type(void) 40*13b62814SBoyan Karatotev { 41*13b62814SBoyan Karatotev /* there is no pending interrupt expected */ 42*13b62814SBoyan Karatotev return INTR_TYPE_INVAL; 43*13b62814SBoyan Karatotev } 44