summaryrefslogtreecommitdiff
path: root/include/psci.h
diff options
context:
space:
mode:
authorAchin Gupta <achin.gupta@arm.com>2014-02-09 18:24:19 +0000
committerDan Handley <dan.handley@arm.com>2014-02-20 19:06:34 +0000
commit607084ee4c2a7c20832beb8cd1d5cebf02b2cb26 (patch)
treebd4a262134027060c027e81f7aaebf64965d370d /include/psci.h
parent375f538a797a89a5f49aab1be70e86df4511c05a (diff)
Add power management support in the SPD
This patch implements a set of handlers in the SPD which are called by the PSCI runtime service upon receiving a power management operation. These handlers in turn pass control to the Secure Payload image if required before returning control to PSCI. This ensures that the Secure Payload has complete visibility of all power transitions in the system and can prepare accordingly. Change-Id: I2d1dba5629b7cf2d53999d39fe807dfcf3f62fe2
Diffstat (limited to 'include/psci.h')
-rw-r--r--include/psci.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/include/psci.h b/include/psci.h
index e14c60b7..3a040f99 100644
--- a/include/psci.h
+++ b/include/psci.h
@@ -55,7 +55,7 @@
******************************************************************************/
#define PSCI_TOS_UP_MIG_CAP 0
#define PSCI_TOS_NOT_UP_MIG_CAP 1
-#define PSCI_TOS_NOT_PRESENT 2
+#define PSCI_TOS_NOT_PRESENT_MP 2
/*******************************************************************************
* PSCI CPU_SUSPEND 'power_state' parameter specific defines
@@ -140,6 +140,22 @@ typedef struct {
} plat_pm_ops;
/*******************************************************************************
+ * Optional structure populated by the Secure Payload Dispatcher to be given a
+ * chance to perform any bookkeeping before PSCI executes a power mgmt.
+ * operation. It also allows PSCI to determine certain properties of the SP e.g.
+ * migrate capability etc.
+ ******************************************************************************/
+typedef struct {
+ void (*svc_on)(uint64_t target_cpu);
+ int32_t (*svc_off)(uint64_t __unused);
+ void (*svc_suspend)(uint64_t power_state);
+ void (*svc_on_finish)(uint64_t __unused);
+ void (*svc_suspend_finish)(uint64_t suspend_level);
+ void (*svc_migrate)(uint64_t __unused1, uint64_t __unused2);
+ int32_t (*svc_migrate_info)(uint64_t *__unused);
+} spd_pm_ops;
+
+/*******************************************************************************
* Function & Data prototypes
******************************************************************************/
extern unsigned int psci_version(void);