mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-08 13:53:54 +00:00

The existing DSU errata workarounds hijack the errata framework's inner workings to register with it. However, that is undesirable as any change to the framework may end up missing these workarounds. So convert the checks and workarounds to macros and have them included with the standard wrappers. The only problem with this is the is_scu_present_in_dsu weak function. Fortunately, it is only needed for 2 of the errata and only on 3 cores. So drop it, assuming the default behaviour and have the callers handle the exception. Change-Id: Iefa36325804ea093e938f867b9a6f49a6984b8ae Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
62 lines
1.9 KiB
C
62 lines
1.9 KiB
C
/*
|
|
* Copyright (c) 2018-2025, Arm Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef DSU_DEF_H
|
|
#define DSU_DEF_H
|
|
|
|
#include <lib/utils_def.h>
|
|
|
|
/********************************************************************
|
|
* DSU Cluster Configuration registers definitions
|
|
********************************************************************/
|
|
#define CLUSTERCFR_EL1 S3_0_C15_C3_0
|
|
|
|
#define CLUSTERCFR_ACP_SHIFT U(11)
|
|
|
|
/********************************************************************
|
|
* DSU Cluster Main Revision ID registers definitions
|
|
********************************************************************/
|
|
#define CLUSTERIDR_EL1 S3_0_C15_C3_1
|
|
|
|
#define CLUSTERIDR_REV_SHIFT U(0)
|
|
#define CLUSTERIDR_REV_BITS U(4)
|
|
#define CLUSTERIDR_VAR_SHIFT U(4)
|
|
#define CLUSTERIDR_VAR_BITS U(4)
|
|
|
|
/********************************************************************
|
|
* DSU Cluster Auxiliary Control registers definitions
|
|
********************************************************************/
|
|
#define CLUSTERACTLR_EL1 S3_0_C15_C3_3
|
|
#define CLUSTERPWRCTLR_EL1 S3_0_C15_C3_5
|
|
|
|
#define CLUSTERACTLR_EL1_DISABLE_CLOCK_GATING (ULL(1) << 15)
|
|
#define CLUSTERACTLR_EL1_DISABLE_SCLK_GATING (ULL(3) << 15)
|
|
|
|
/********************************************************************
|
|
* Masks applied for DSU errata workarounds
|
|
********************************************************************/
|
|
#define DSU_ERRATA_936184_MASK (U(0x3) << 15)
|
|
|
|
#define CPUCFR_EL1 S3_0_C15_C0_0
|
|
/* SCU bit of CPU Configuration Register, EL1 */
|
|
#define SCU_SHIFT U(2)
|
|
|
|
#ifndef __ASSEMBLER__
|
|
DEFINE_RENAME_SYSREG_RW_FUNCS(clusterpwrctlr_el1, CLUSTERPWRCTLR_EL1);
|
|
|
|
/* ---------------------------------------------
|
|
* controls power features of the cluster
|
|
* 1. Cache portion power not request
|
|
* 2. Disable the retention circuit
|
|
* ---------------------------------------------
|
|
*/
|
|
static inline void dsu_pwr_dwn(void)
|
|
{
|
|
write_clusterpwrctlr_el1(0);
|
|
isb();
|
|
}
|
|
#endif
|
|
#endif /* DSU_DEF_H */
|