16fba6e04STony Xie /* 2*d31dcdc5SAntonio Nino Diaz * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved. 36fba6e04STony Xie * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 56fba6e04STony Xie */ 66fba6e04STony Xie 76fba6e04STony Xie #include <platform_def.h> 809d40e0eSAntonio Nino Diaz 909d40e0eSAntonio Nino Diaz #include <common/bl_common.h> 1009d40e0eSAntonio Nino Diaz #include <common/interrupt_props.h> 1109d40e0eSAntonio Nino Diaz #include <drivers/arm/gicv2.h> 1209d40e0eSAntonio Nino Diaz #include <lib/utils.h> 136fba6e04STony Xie 146fba6e04STony Xie /****************************************************************************** 156fba6e04STony Xie * The following functions are defined as weak to allow a platform to override 166fba6e04STony Xie * the way the GICv2 driver is initialised and used. 176fba6e04STony Xie *****************************************************************************/ 186fba6e04STony Xie #pragma weak plat_rockchip_gic_driver_init 196fba6e04STony Xie #pragma weak plat_rockchip_gic_init 206fba6e04STony Xie #pragma weak plat_rockchip_gic_cpuif_enable 216fba6e04STony Xie #pragma weak plat_rockchip_gic_cpuif_disable 226fba6e04STony Xie #pragma weak plat_rockchip_gic_pcpu_init 236fba6e04STony Xie 246fba6e04STony Xie /****************************************************************************** 25*d31dcdc5SAntonio Nino Diaz * List of interrupts. 266fba6e04STony Xie *****************************************************************************/ 272d6f1f01SAntonio Nino Diaz static const interrupt_prop_t g0_interrupt_props[] = { 28*d31dcdc5SAntonio Nino Diaz PLAT_RK_GICV2_G0_IRQS 296fba6e04STony Xie }; 306fba6e04STony Xie 316fba6e04STony Xie /* 326fba6e04STony Xie * Ideally `rockchip_gic_data` structure definition should be a `const` but it 336fba6e04STony Xie * is kept as modifiable for overwriting with different GICD and GICC base when 346fba6e04STony Xie * running on FVP with VE memory map. 356fba6e04STony Xie */ 366fba6e04STony Xie gicv2_driver_data_t rockchip_gic_data = { 376fba6e04STony Xie .gicd_base = PLAT_RK_GICD_BASE, 386fba6e04STony Xie .gicc_base = PLAT_RK_GICC_BASE, 392d6f1f01SAntonio Nino Diaz .interrupt_props = g0_interrupt_props, 402d6f1f01SAntonio Nino Diaz .interrupt_props_num = ARRAY_SIZE(g0_interrupt_props), 416fba6e04STony Xie }; 426fba6e04STony Xie 436fba6e04STony Xie /****************************************************************************** 446fba6e04STony Xie * RockChip common helper to initialize the GICv2 only driver. 456fba6e04STony Xie *****************************************************************************/ plat_rockchip_gic_driver_init(void)466fba6e04STony Xievoid plat_rockchip_gic_driver_init(void) 476fba6e04STony Xie { 486fba6e04STony Xie gicv2_driver_init(&rockchip_gic_data); 496fba6e04STony Xie } 506fba6e04STony Xie plat_rockchip_gic_init(void)516fba6e04STony Xievoid plat_rockchip_gic_init(void) 526fba6e04STony Xie { 536fba6e04STony Xie gicv2_distif_init(); 546fba6e04STony Xie gicv2_pcpu_distif_init(); 556fba6e04STony Xie gicv2_cpuif_enable(); 566fba6e04STony Xie } 576fba6e04STony Xie 586fba6e04STony Xie /****************************************************************************** 596fba6e04STony Xie * RockChip common helper to enable the GICv2 CPU interface 606fba6e04STony Xie *****************************************************************************/ plat_rockchip_gic_cpuif_enable(void)616fba6e04STony Xievoid plat_rockchip_gic_cpuif_enable(void) 626fba6e04STony Xie { 636fba6e04STony Xie gicv2_cpuif_enable(); 646fba6e04STony Xie } 656fba6e04STony Xie 666fba6e04STony Xie /****************************************************************************** 676fba6e04STony Xie * RockChip common helper to disable the GICv2 CPU interface 686fba6e04STony Xie *****************************************************************************/ plat_rockchip_gic_cpuif_disable(void)696fba6e04STony Xievoid plat_rockchip_gic_cpuif_disable(void) 706fba6e04STony Xie { 716fba6e04STony Xie gicv2_cpuif_disable(); 726fba6e04STony Xie } 736fba6e04STony Xie 746fba6e04STony Xie /****************************************************************************** 756fba6e04STony Xie * RockChip common helper to initialize the per cpu distributor interface 766fba6e04STony Xie * in GICv2 776fba6e04STony Xie *****************************************************************************/ plat_rockchip_gic_pcpu_init(void)786fba6e04STony Xievoid plat_rockchip_gic_pcpu_init(void) 796fba6e04STony Xie { 806fba6e04STony Xie gicv2_pcpu_distif_init(); 816fba6e04STony Xie } 82