xref: /rk3399_ARM-atf/plat/socionext/synquacer/sq_ccn.c (revision 9a207532f8216bf83fed0891fed9ed0bc72ca450)
10eb275c9SSumit Garg /*
20eb275c9SSumit Garg  * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
30eb275c9SSumit Garg  *
40eb275c9SSumit Garg  * SPDX-License-Identifier: BSD-3-Clause
50eb275c9SSumit Garg  */
60eb275c9SSumit Garg 
7*09d40e0eSAntonio Nino Diaz #include <platform_def.h>
8*09d40e0eSAntonio Nino Diaz 
90eb275c9SSumit Garg #include <arch.h>
100eb275c9SSumit Garg #include <arch_helpers.h>
11*09d40e0eSAntonio Nino Diaz #include <drivers/arm/ccn.h>
120eb275c9SSumit Garg 
130eb275c9SSumit Garg static const unsigned char master_to_rn_id_map[] = {
140eb275c9SSumit Garg 	PLAT_SQ_CLUSTER_TO_CCN_ID_MAP
150eb275c9SSumit Garg };
160eb275c9SSumit Garg 
170eb275c9SSumit Garg static const ccn_desc_t sq_ccn_desc = {
180eb275c9SSumit Garg 	.periphbase = PLAT_SQ_CCN_BASE,
190eb275c9SSumit Garg 	.num_masters = ARRAY_SIZE(master_to_rn_id_map),
200eb275c9SSumit Garg 	.master_to_rn_id_map = master_to_rn_id_map
210eb275c9SSumit Garg };
220eb275c9SSumit Garg 
230eb275c9SSumit Garg /******************************************************************************
240eb275c9SSumit Garg  * Helper function to initialize SQ CCN driver.
250eb275c9SSumit Garg  *****************************************************************************/
plat_sq_interconnect_init(void)260eb275c9SSumit Garg void plat_sq_interconnect_init(void)
270eb275c9SSumit Garg {
280eb275c9SSumit Garg 	ccn_init(&sq_ccn_desc);
290eb275c9SSumit Garg }
300eb275c9SSumit Garg 
310eb275c9SSumit Garg /******************************************************************************
320eb275c9SSumit Garg  * Helper function to place current master into coherency
330eb275c9SSumit Garg  *****************************************************************************/
plat_sq_interconnect_enter_coherency(void)340eb275c9SSumit Garg void plat_sq_interconnect_enter_coherency(void)
350eb275c9SSumit Garg {
360eb275c9SSumit Garg 	ccn_enter_snoop_dvm_domain(1 << MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
370eb275c9SSumit Garg }
380eb275c9SSumit Garg 
390eb275c9SSumit Garg /******************************************************************************
400eb275c9SSumit Garg  * Helper function to remove current master from coherency
410eb275c9SSumit Garg  *****************************************************************************/
plat_sq_interconnect_exit_coherency(void)420eb275c9SSumit Garg void plat_sq_interconnect_exit_coherency(void)
430eb275c9SSumit Garg {
440eb275c9SSumit Garg 	ccn_exit_snoop_dvm_domain(1 << MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
450eb275c9SSumit Garg }
46