xref: /rk3399_ARM-atf/plat/nuvoton/common/plat_nuvoton_gic.c (revision b74a193852979fcc3dffabbe3153d0f069514400)
1*edcece15Srutigl@gmail.com /*
2*edcece15Srutigl@gmail.com  * Copyright (c) 2016-2023, ARM Limited and Contributors. All rights reserved.
3*edcece15Srutigl@gmail.com  *
4*edcece15Srutigl@gmail.com  * Copyright (C) 2022-2023 Nuvoton Ltd.
5*edcece15Srutigl@gmail.com  *
6*edcece15Srutigl@gmail.com  * SPDX-License-Identifier: BSD-3-Clause
7*edcece15Srutigl@gmail.com  */
8*edcece15Srutigl@gmail.com 
9*edcece15Srutigl@gmail.com #include <common/interrupt_props.h>
10*edcece15Srutigl@gmail.com #include <drivers/arm/gicv2.h>
11*edcece15Srutigl@gmail.com #include <plat/common/platform.h>
12*edcece15Srutigl@gmail.com #include <platform_def.h>
13*edcece15Srutigl@gmail.com 
14*edcece15Srutigl@gmail.com static const interrupt_prop_t g0_interrupt_props[] = {
15*edcece15Srutigl@gmail.com 	INTR_PROP_DESC(FIQ_SMP_CALL_SGI, GIC_HIGHEST_SEC_PRIORITY,
16*edcece15Srutigl@gmail.com 			GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL),
17*edcece15Srutigl@gmail.com };
18*edcece15Srutigl@gmail.com 
19*edcece15Srutigl@gmail.com gicv2_driver_data_t arm_gic_data = {
20*edcece15Srutigl@gmail.com 	.gicd_base = BASE_GICD_BASE,
21*edcece15Srutigl@gmail.com 	.gicc_base = BASE_GICC_BASE,
22*edcece15Srutigl@gmail.com 	.interrupt_props = g0_interrupt_props,
23*edcece15Srutigl@gmail.com 	.interrupt_props_num = ARRAY_SIZE(g0_interrupt_props),
24*edcece15Srutigl@gmail.com };
25*edcece15Srutigl@gmail.com 
plat_gic_driver_init(void)26*edcece15Srutigl@gmail.com void plat_gic_driver_init(void)
27*edcece15Srutigl@gmail.com {
28*edcece15Srutigl@gmail.com 	gicv2_driver_init(&arm_gic_data);
29*edcece15Srutigl@gmail.com }
30*edcece15Srutigl@gmail.com 
plat_gic_init(void)31*edcece15Srutigl@gmail.com void plat_gic_init(void)
32*edcece15Srutigl@gmail.com {
33*edcece15Srutigl@gmail.com 	gicv2_distif_init();
34*edcece15Srutigl@gmail.com 	gicv2_pcpu_distif_init();
35*edcece15Srutigl@gmail.com 	gicv2_cpuif_enable();
36*edcece15Srutigl@gmail.com }
37*edcece15Srutigl@gmail.com 
plat_gic_cpuif_enable(void)38*edcece15Srutigl@gmail.com void plat_gic_cpuif_enable(void)
39*edcece15Srutigl@gmail.com {
40*edcece15Srutigl@gmail.com 	gicv2_cpuif_enable();
41*edcece15Srutigl@gmail.com }
42*edcece15Srutigl@gmail.com 
plat_gic_cpuif_disable(void)43*edcece15Srutigl@gmail.com void plat_gic_cpuif_disable(void)
44*edcece15Srutigl@gmail.com {
45*edcece15Srutigl@gmail.com 	gicv2_cpuif_disable();
46*edcece15Srutigl@gmail.com }
47*edcece15Srutigl@gmail.com 
plat_gic_pcpu_init(void)48*edcece15Srutigl@gmail.com void plat_gic_pcpu_init(void)
49*edcece15Srutigl@gmail.com {
50*edcece15Srutigl@gmail.com 	gicv2_pcpu_distif_init();
51*edcece15Srutigl@gmail.com }
52