xref: /rk3399_ARM-atf/drivers/arm/gicv5/gicv5_main.c (revision 13b62814abb822e1841fd9430fa96da91d63b776)
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