1 /* 2 * Arm SCP/MCP Software 3 * Copyright (c) 2015-2021, Arm Limited and Contributors. All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #ifndef INTERNAL_SCMI_SYSTEM_POWER_H 9 #define INTERNAL_SCMI_SYSTEM_POWER_H 10 11 #include <stdint.h> 12 13 #define SCMI_PROTOCOL_VERSION_SYS_POWER UINT32_C(0x10000) 14 15 enum scmi_sys_power_notification_id { 16 SCMI_SYS_POWER_STATE_SET_NOTIFY = 0x000, 17 }; 18 19 /* 20 * PROTOCOL_MESSAGE_ATTRIBUTES 21 */ 22 #define SYS_POWER_STATE_SET_ATTRIBUTES_WARM_RESET UINT32_C(0x80000000) 23 #define SYS_POWER_STATE_SET_ATTRIBUTES_SUSPEND UINT32_C(0x40000000) 24 25 /* 26 * SYSTEM_POWER_STATE_SET 27 */ 28 29 #define STATE_SET_FLAGS_MASK 0x1U 30 #define STATE_SET_FLAGS_GRACEFUL_REQUEST 0x1U 31 32 enum scmi_system_state { 33 SCMI_SYSTEM_STATE_SHUTDOWN, 34 SCMI_SYSTEM_STATE_COLD_RESET, 35 SCMI_SYSTEM_STATE_WARM_RESET, 36 SCMI_SYSTEM_STATE_POWER_UP, 37 SCMI_SYSTEM_STATE_SUSPEND, 38 SCMI_SYSTEM_STATE_MAX 39 }; 40 41 struct scmi_sys_power_state_set_a2p { 42 uint32_t flags; 43 uint32_t system_state; 44 }; 45 46 struct scmi_sys_power_state_set_p2a { 47 int32_t status; 48 }; 49 50 /* 51 * SYSTEM_POWER_STATE_GET 52 */ 53 54 struct scmi_sys_power_state_get_p2a { 55 int32_t status; 56 uint32_t system_state; 57 }; 58 59 /* 60 * SYSTEM_POWER_STATE_NOTIFY 61 */ 62 63 #define STATE_NOTIFY_FLAGS_MASK 0x1U 64 65 struct scmi_sys_power_state_notify_a2p { 66 uint32_t flags; 67 }; 68 69 struct scmi_sys_power_state_notify_p2a { 70 int32_t status; 71 }; 72 73 /* 74 * SYSTEM_POWER_STATE_NOTIFIER 75 */ 76 77 struct scmi_sys_power_state_notifier { 78 uint32_t agent_id; 79 uint32_t flags; 80 uint32_t system_state; 81 }; 82 83 #endif /* INTERNAL_SCMI_SYSTEM_POWER_H */ 84