blob: fa6ea87b2d0b87909436dd7ed0f948cbf7dd7867 [file] [log] [blame]
Sumit Gargbda9d3c2018-06-15 14:50:19 +05301/*
2 * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00007#include <platform_def.h>
8
Sumit Gargbda9d3c2018-06-15 14:50:19 +05309#include <arch.h>
10#include <arch_helpers.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000011#include <drivers/arm/ccn.h>
Sumit Gargbda9d3c2018-06-15 14:50:19 +053012
13static const unsigned char master_to_rn_id_map[] = {
14 PLAT_SQ_CLUSTER_TO_CCN_ID_MAP
15};
16
17static const ccn_desc_t sq_ccn_desc = {
18 .periphbase = PLAT_SQ_CCN_BASE,
19 .num_masters = ARRAY_SIZE(master_to_rn_id_map),
20 .master_to_rn_id_map = master_to_rn_id_map
21};
22
23/******************************************************************************
24 * Helper function to initialize SQ CCN driver.
25 *****************************************************************************/
26void plat_sq_interconnect_init(void)
27{
28 ccn_init(&sq_ccn_desc);
29}
30
31/******************************************************************************
32 * Helper function to place current master into coherency
33 *****************************************************************************/
34void plat_sq_interconnect_enter_coherency(void)
35{
36 ccn_enter_snoop_dvm_domain(1 << MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
37}
38
39/******************************************************************************
40 * Helper function to remove current master from coherency
41 *****************************************************************************/
42void plat_sq_interconnect_exit_coherency(void)
43{
44 ccn_exit_snoop_dvm_domain(1 << MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
45}