xref: /rk3399_ARM-atf/drivers/nxp/interconnect/ls_ccn.c (revision 76f735fd822ebedda9b4f756e17433c65fe24d8e)
1*76f735fdSPankaj Gupta /*
2*76f735fdSPankaj Gupta  * Copyright 2020 NXP
3*76f735fdSPankaj Gupta  *
4*76f735fdSPankaj Gupta  * SPDX-License-Identifier: BSD-3-Clause
5*76f735fdSPankaj Gupta  *
6*76f735fdSPankaj Gupta  */
7*76f735fdSPankaj Gupta 
8*76f735fdSPankaj Gupta #include <arch.h>
9*76f735fdSPankaj Gupta #include <ccn.h>
10*76f735fdSPankaj Gupta 
11*76f735fdSPankaj Gupta #include <plat_arm.h>
12*76f735fdSPankaj Gupta 
13*76f735fdSPankaj Gupta /******************************************************************************
14*76f735fdSPankaj Gupta  * Helper function to place current master into coherency
15*76f735fdSPankaj Gupta  *****************************************************************************/
16*76f735fdSPankaj Gupta void plat_ls_interconnect_enter_coherency(unsigned int num_clusters)
17*76f735fdSPankaj Gupta {
18*76f735fdSPankaj Gupta 	ccn_enter_snoop_dvm_domain(1ULL << MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
19*76f735fdSPankaj Gupta 
20*76f735fdSPankaj Gupta 	for (uint32_t index = 1U; index < num_clusters; index++) {
21*76f735fdSPankaj Gupta 		ccn_enter_snoop_dvm_domain(1ULL << index);
22*76f735fdSPankaj Gupta 	}
23*76f735fdSPankaj Gupta }
24*76f735fdSPankaj Gupta 
25*76f735fdSPankaj Gupta /******************************************************************************
26*76f735fdSPankaj Gupta  * Helper function to remove current master from coherency
27*76f735fdSPankaj Gupta  *****************************************************************************/
28*76f735fdSPankaj Gupta void plat_ls_interconnect_exit_coherency(void)
29*76f735fdSPankaj Gupta {
30*76f735fdSPankaj Gupta 	ccn_exit_snoop_dvm_domain(1ULL << MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
31*76f735fdSPankaj Gupta }
32