1 /*
2  * Copyright 2018 The Hafnium Authors.
3  *
4  * Use of this source code is governed by a BSD-style
5  * license that can be found in the LICENSE file or at
6  * https://opensource.org/licenses/BSD-3-Clause.
7  */
8 
9 #pragma once
10 
11 #include "smc.h"
12 
13 /* clang-format off */
14 
15 /* The following are PSCI version codes. */
16 #define PSCI_VERSION_0_2 0x00000002
17 #define PSCI_VERSION_1_0 0x00010000
18 #define PSCI_VERSION_1_1 0x00010001
19 
20 /* The following are function identifiers for PSCI. */
21 #define PSCI_VERSION                 0x84000000
22 #define PSCI_CPU_SUSPEND             0x84000001
23 #define PSCI_CPU_OFF                 0x84000002
24 #define PSCI_CPU_ON                  0x84000003
25 #define PSCI_AFFINITY_INFO           0x84000004
26 #define PSCI_MIGRATE                 0x84000005
27 #define PSCI_MIGRATE_INFO_TYPE       0x84000006
28 #define PSCI_MIGRATE_INFO_UP_CPU     0x84000007
29 #define PSCI_SYSTEM_OFF              0x84000008
30 #define PSCI_SYSTEM_RESET            0x84000009
31 #define PSCI_FEATURES                0x8400000a
32 #define PSCI_CPU_FREEZE              0x8400000b
33 #define PSCI_CPU_DEFAULT_SUSPEND     0x8400000c
34 #define PSCI_NODE_HW_STATE           0x8400000d
35 #define PSCI_SYSTEM_SUSPEND          0x8400000e
36 #define PSCI_SET_SYSPEND_MODE        0x8400000f
37 #define PSCI_STAT_RESIDENCY          0x84000010
38 #define PSCI_STAT_COUNT              0x84000011
39 #define PSCI_SYSTEM_RESET2           0x84000012
40 #define PSCI_MEM_PROTECT             0x84000013
41 #define PSCI_MEM_PROTECT_CHECK_RANGE 0x84000014
42 
43 /* The following are return codes for PSCI. */
44 #define PSCI_RETURN_ON_PENDING         2
45 #define PSCI_RETURN_OFF                1
46 #define PSCI_RETURN_ON                 0
47 #define PSCI_RETURN_SUCCESS            0
48 #define PSCI_ERROR_NOT_SUPPORTED       SMCCC_ERROR_UNKNOWN
49 #define PSCI_ERROR_INVALID_PARAMETERS  (-2)
50 #define PSCI_ERROR_DENIED              (-3)
51 #define PSCI_ERROR_ALREADY_ON          (-4)
52 #define PSCI_ERROR_ON_PENDING          (-5)
53 #define PSCI_ERROR_INTERNAL_FAILURE    (-6)
54 #define PSCI_ERROR_NOT_PRESENT         (-7)
55 #define PSCI_ERROR_DISABLE             (-8)
56 #define PSCI_ERROR_INVALID_ADDRESS     (-9)
57 
58 /* clang-format on */
59