1 /* 2 * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <platform_def.h> 8 9 #include <arch.h> 10 #include <drivers/arm/cci.h> 11 #include <lib/utils.h> 12 #include <plat/arm/common/plat_arm.h> 13 14 static const int cci_map[] = { 15 PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX, 16 PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX 17 }; 18 19 /****************************************************************************** 20 * Helper function to initialize ARM CCI driver. 21 *****************************************************************************/ plat_arm_interconnect_init(void)22void __init plat_arm_interconnect_init(void) 23 { 24 cci_init(PLAT_ARM_CCI_BASE, cci_map, (unsigned int)ARRAY_SIZE(cci_map)); 25 } 26 27 /****************************************************************************** 28 * Helper function to place current master into coherency 29 *****************************************************************************/ plat_arm_interconnect_enter_coherency(void)30void plat_arm_interconnect_enter_coherency(void) 31 { 32 cci_enable_snoop_dvm_reqs((unsigned int)MPIDR_AFFLVL1_VAL(read_mpidr_el1())); 33 } 34 35 /****************************************************************************** 36 * Helper function to remove current master from coherency 37 *****************************************************************************/ plat_arm_interconnect_exit_coherency(void)38void plat_arm_interconnect_exit_coherency(void) 39 { 40 cci_disable_snoop_dvm_reqs((unsigned int)MPIDR_AFFLVL1_VAL(read_mpidr_el1())); 41 } 42