mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-26 14:55:16 +00:00

Add SoC erratum a008850 support. Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com> Change-Id: I1ef41c67737b7b5fdf1d892929a2d8040effc282
42 lines
936 B
C
42 lines
936 B
C
/*
|
|
* Copyright 2021 NXP
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*
|
|
*/
|
|
#include <cci.h>
|
|
#include <common/debug.h>
|
|
#include <ls_interconnect.h>
|
|
#include <mmio.h>
|
|
|
|
#include <platform_def.h>
|
|
|
|
void erratum_a008850_early(void)
|
|
{
|
|
/* part 1 of 2 */
|
|
uintptr_t cci_base = NXP_CCI_ADDR;
|
|
uint32_t val = mmio_read_32(cci_base + CTRL_OVERRIDE_REG);
|
|
|
|
/* enabling forced barrier termination on CCI400 */
|
|
mmio_write_32(cci_base + CTRL_OVERRIDE_REG,
|
|
(val | CCI_TERMINATE_BARRIER_TX));
|
|
|
|
}
|
|
|
|
void erratum_a008850_post(void)
|
|
{
|
|
/* part 2 of 2 */
|
|
uintptr_t cci_base = NXP_CCI_ADDR;
|
|
uint32_t val = mmio_read_32(cci_base + CTRL_OVERRIDE_REG);
|
|
|
|
/* Clear the BARRIER_TX bit */
|
|
val = val & ~(CCI_TERMINATE_BARRIER_TX);
|
|
|
|
/*
|
|
* Disable barrier termination on CCI400, allowing
|
|
* barriers to propagate across CCI
|
|
*/
|
|
mmio_write_32(cci_base + CTRL_OVERRIDE_REG, val);
|
|
|
|
INFO("SoC workaround for Errata A008850 Post-Phase was applied\n");
|
|
}
|