blob: b665bc799b40deb7a0b3d985afc0e950c7550825 [file] [log] [blame]
Varun Wadekar3a8c55f2015-07-14 17:11:20 +05301/*
Varun Wadekarcf3ed0d2018-06-25 11:36:47 -07002 * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
Varun Wadekar3a8c55f2015-07-14 17:11:20 +05303 *
dp-arm82cb2c12017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Varun Wadekar3a8c55f2015-07-14 17:11:20 +05305 */
6
Antonio Nino Diazc3cf06f2018-11-08 10:20:19 +00007#ifndef DENVER_H
8#define DENVER_H
Varun Wadekar3a8c55f2015-07-14 17:11:20 +05309
Varun Wadekare956e222015-09-03 17:15:06 +053010/* MIDR values for Denver */
Varun Wadekar030567e2017-05-25 18:04:48 -070011#define DENVER_MIDR_PN0 U(0x4E0F0000)
12#define DENVER_MIDR_PN1 U(0x4E0F0010)
13#define DENVER_MIDR_PN2 U(0x4E0F0020)
14#define DENVER_MIDR_PN3 U(0x4E0F0030)
15#define DENVER_MIDR_PN4 U(0x4E0F0040)
Alex Van Brunta4a95472019-07-23 10:00:42 -070016#define DENVER_MIDR_PN5 U(0x4E0F0050)
17#define DENVER_MIDR_PN6 U(0x4E0F0060)
18#define DENVER_MIDR_PN7 U(0x4E0F0070)
19#define DENVER_MIDR_PN8 U(0x4E0F0080)
Varun Wadekare956e222015-09-03 17:15:06 +053020
21/* Implementer code in the MIDR register */
Varun Wadekar030567e2017-05-25 18:04:48 -070022#define DENVER_IMPL U(0x4E)
Varun Wadekar3a8c55f2015-07-14 17:11:20 +053023
24/* CPU state ids - implementation defined */
Varun Wadekar030567e2017-05-25 18:04:48 -070025#define DENVER_CPU_STATE_POWER_DOWN U(0x3)
Varun Wadekar3a8c55f2015-07-14 17:11:20 +053026
Varun Wadekar6cf8d652018-08-28 09:11:30 -070027/* Speculative store buffering */
28#define DENVER_CPU_DIS_SSB_EL3 (U(1) << 11)
29#define DENVER_PN4_CPU_DIS_SSB_EL3 (U(1) << 18)
30
31/* Speculative memory disambiguation */
32#define DENVER_CPU_DIS_MD_EL3 (U(1) << 9)
33#define DENVER_PN4_CPU_DIS_MD_EL3 (U(1) << 17)
34
Varun Wadekarcf3ed0d2018-06-25 11:36:47 -070035/* Core power management states */
36#define DENVER_CPU_PMSTATE_C1 U(0x1)
37#define DENVER_CPU_PMSTATE_C6 U(0x6)
38#define DENVER_CPU_PMSTATE_C7 U(0x7)
39#define DENVER_CPU_PMSTATE_MASK U(0xF)
40
Kalyani Chidambaramd55b8f62018-09-12 14:59:08 -070041/* ACTRL_ELx bits to enable dual execution*/
42#define DENVER_CPU_ENABLE_DUAL_EXEC_EL2 (ULL(1) << 9)
43#define DENVER_CPU_ENABLE_DUAL_EXEC_EL3 (ULL(1) << 9)
44#define DENVER_CPU_ENABLE_DUAL_EXEC_EL1 (U(1) << 4)
45
Julius Wernerd5dfdeb2019-07-09 13:49:11 -070046#ifndef __ASSEMBLER__
Varun Wadekar9f1c5dd2016-02-22 11:09:41 -080047
48/* Disable Dynamic Code Optimisation */
49void denver_disable_dco(void);
50
Julius Wernerd5dfdeb2019-07-09 13:49:11 -070051#endif /* __ASSEMBLER__ */
Varun Wadekar9f1c5dd2016-02-22 11:09:41 -080052
Antonio Nino Diazc3cf06f2018-11-08 10:20:19 +000053#endif /* DENVER_H */