blob: c8f602afce301d879aa89fe5cab15f99e243d3d8 [file] [log] [blame]
/*
* Copyright 2020 Broadcom
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
*@file
*@brief plat/core specific init
*/
#include <toolchain.h>
#include <linker/sections.h>
#include <arch/cpu.h>
_ASM_FILE_PROLOGUE
GTEXT(z_arch_el3_plat_init)
GTEXT(plat_l2_init)
SECTION_FUNC(TEXT, z_arch_el3_plat_init)
mov x19, x30
/* Enable GIC v3 system interface */
mov_imm x0, (ICC_SRE_ELx_DFB | ICC_SRE_ELx_DIB | \
ICC_SRE_ELx_SRE | ICC_SRE_EL3_EN)
msr ICC_SRE_EL3, x0
/* L2 config */
bl plat_l2_init
mov x30, x19
ret
SECTION_FUNC(TEXT,plat_l2_init)
/*
* Set L2 Auxiliary Control Register of Cortex-A72
*/
/* Disable cluster coherency */
mrs x0, CORTEX_A72_L2ACTLR_EL1
orr x0, x0, #CORTEX_A72_L2ACTLR_DISABLE_ACE_SH_OR_CHI
msr CORTEX_A72_L2ACTLR_EL1, x0
/* Set L2 Control Register */
mov_imm x1, ((CORTEX_A72_L2_DATA_RAM_LATENCY_MASK << \
CORTEX_A72_L2CTLR_DATA_RAM_LATENCY_SHIFT) | \
(CORTEX_A72_L2_TAG_RAM_LATENCY_MASK << \
CORTEX_A72_L2CTLR_TAG_RAM_LATENCY_SHIFT) | \
(CORTEX_A72_L2_TAG_RAM_SETUP_1_CYCLE << \
CORTEX_A72_L2CTLR_TAG_RAM_SETUP_SHIFT) | \
(CORTEX_A72_L2_DATA_RAM_SETUP_1_CYCLE << \
CORTEX_A72_L2CTLR_DATA_RAM_SETUP_SHIFT))
bic x0, x0, x1
mov_imm x1, ((CORTEX_A72_L2_DATA_RAM_LATENCY_3_CYCLES << \
CORTEX_A72_L2CTLR_DATA_RAM_LATENCY_SHIFT) | \
(CORTEX_A72_L2_TAG_RAM_SETUP_1_CYCLE << \
CORTEX_A72_L2CTLR_TAG_RAM_SETUP_SHIFT) | \
(CORTEX_A72_L2_DATA_RAM_SETUP_1_CYCLE << \
CORTEX_A72_L2CTLR_DATA_RAM_SETUP_SHIFT))
orr x0, x0, x1
msr CORTEX_A72_L2CTLR_EL1, x0
dsb sy
isb
ret