xref: /rk3399_ARM-atf/include/lib/cpus/aarch64/dsu_def.h (revision b5d0740e14f428f2c5341d1222d0769bdde35ea3)
1 /*
2  * Copyright (c) 2018-2025, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef DSU_DEF_H
8 #define DSU_DEF_H
9 
10 #include <lib/utils_def.h>
11 
12 /********************************************************************
13  * DSU Cluster Configuration registers definitions
14  ********************************************************************/
15 #define CLUSTERCFR_EL1		S3_0_C15_C3_0
16 
17 #define CLUSTERCFR_ACP_SHIFT	U(11)
18 
19 /********************************************************************
20  * DSU Cluster Main Revision ID registers definitions
21  ********************************************************************/
22 #define CLUSTERIDR_EL1		S3_0_C15_C3_1
23 
24 #define CLUSTERIDR_REV_SHIFT	U(0)
25 #define CLUSTERIDR_REV_BITS	U(4)
26 #define CLUSTERIDR_VAR_SHIFT	U(4)
27 #define CLUSTERIDR_VAR_BITS	U(4)
28 
29 #define CLUSTERREVIDR_EL1	S3_0_C15_C3_2
30 
31 /********************************************************************
32  * DSU Cluster Auxiliary Control registers definitions
33  ********************************************************************/
34 #define CLUSTERACTLR_EL1	S3_0_C15_C3_3
35 #define CLUSTERPWRCTLR_EL1	S3_0_C15_C3_5
36 
37 #define CLUSTERACTLR_EL1_ASSERT_CBUSY			(ULL(1) << 8)
38 #define CLUSTERACTLR_EL1_DISABLE_CLOCK_GATING		(ULL(1) << 15)
39 #define CLUSTERACTLR_EL1_DISABLE_SCLK_GATING		(ULL(3) << 15)
40 #define CLUSTERACTLR_EL1_IGNORE_INTERCONNECT_CBUSY	(ULL(3) << 20)
41 
42 /********************************************************************
43  * Masks applied for DSU errata workarounds
44  ********************************************************************/
45 #define DSU_ERRATA_936184_MASK	(U(0x3) << 15)
46 
47 #define CPUCFR_EL1		S3_0_C15_C0_0
48 /* SCU bit of CPU Configuration Register, EL1 */
49 #define SCU_SHIFT		U(2)
50 
51 #ifndef __ASSEMBLER__
52 DEFINE_RENAME_SYSREG_RW_FUNCS(clusterpwrctlr_el1, CLUSTERPWRCTLR_EL1);
53 
54 /* ---------------------------------------------
55  * controls power features of the cluster
56  * 1. Cache portion power not request
57  * 2. Disable the retention circuit
58  * ---------------------------------------------
59  */
60 static inline void dsu_pwr_dwn(void)
61 {
62 	write_clusterpwrctlr_el1(0);
63 	isb();
64 }
65 #endif
66 #endif /* DSU_DEF_H */
67