blob: 72a898abd41c4cdefa7464b33b39693f509d834d [file] [log] [blame]
/*
* Copyright 2020 NXP
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#include <arch.h>
#include <cci.h>
#include <plat_arm.h>
/******************************************************************************
* The following functions are defined as weak to allow a platform to override
* the way ARM CCI driver is initialised and used.
*****************************************************************************/
#pragma weak plat_arm_interconnect_enter_coherency
#pragma weak plat_arm_interconnect_exit_coherency
/******************************************************************************
* Helper function to place current master into coherency
*****************************************************************************/
void plat_ls_interconnect_enter_coherency(unsigned int num_clusters)
{
cci_enable_snoop_dvm_reqs(MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
for (uint32_t index = 1U; index < num_clusters; index++) {
cci_enable_snoop_dvm_reqs(index);
}
}
/******************************************************************************
* Helper function to remove current master from coherency
*****************************************************************************/
void plat_ls_interconnect_exit_coherency(void)
{
cci_disable_snoop_dvm_reqs(MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
}