/* SPDX-License-Identifier: BSD-3-Clause */ /* * Copyright (c) 2015-2019, Arm Limited and Contributors. All rights reserved. * Copyright (c) 2019, Linaro Limited */ #ifndef SCMI_MSG_RESET_DOMAIN_H #define SCMI_MSG_RESET_DOMAIN_H #include #include #include #define SCMI_PROTOCOL_VERSION_RESET_DOMAIN 0x10000U #define SCMI_RESET_STATE_ARCH BIT(31) #define SCMI_RESET_STATE_IMPL 0U /* * Identifiers of the SCMI Reset Domain Management Protocol commands */ enum scmi_reset_domain_command_id { SCMI_RESET_DOMAIN_ATTRIBUTES = 0x03, SCMI_RESET_DOMAIN_REQUEST = 0x04, SCMI_RESET_DOMAIN_NOTIFY = 0x05, }; /* * Identifiers of the SCMI Reset Domain Management Protocol responses */ enum scmi_reset_domain_response_id { SCMI_RESET_ISSUED = 0x00, SCMI_RESET_COMPLETE = 0x04, }; /* * PROTOCOL_ATTRIBUTES */ #define SCMI_RESET_DOMAIN_COUNT_MASK GENMASK_32(15, 0) struct scmi_reset_domain_protocol_attributes_p2a { int32_t status; uint32_t attributes; }; /* Value for scmi_reset_domain_attributes_p2a:flags */ #define SCMI_RESET_DOMAIN_ATTR_ASYNC BIT(31) #define SCMI_RESET_DOMAIN_ATTR_NOTIF BIT(30) /* Value for scmi_reset_domain_attributes_p2a:latency */ #define SCMI_RESET_DOMAIN_ATTR_UNK_LAT 0x7fffffffU #define SCMI_RESET_DOMAIN_ATTR_MAX_LAT 0x7ffffffeU /* Macro for scmi_reset_domain_attributes_p2a:name */ #define SCMI_RESET_DOMAIN_ATTR_NAME_SZ 16U struct scmi_reset_domain_attributes_a2p { uint32_t domain_id; }; struct scmi_reset_domain_attributes_p2a { int32_t status; uint32_t flags; uint32_t latency; char name[SCMI_RESET_DOMAIN_ATTR_NAME_SZ]; }; /* * RESET */ /* Values for scmi_reset_domain_request_a2p:flags */ #define SCMI_RESET_DOMAIN_ASYNC BIT(2) #define SCMI_RESET_DOMAIN_EXPLICIT BIT(1) #define SCMI_RESET_DOMAIN_AUTO BIT(0) struct scmi_reset_domain_request_a2p { uint32_t domain_id; uint32_t flags; uint32_t reset_state; }; struct scmi_reset_domain_request_p2a { int32_t status; }; /* * RESET_NOTIFY */ /* Values for scmi_reset_notify_p2a:flags */ #define SCMI_RESET_DOMAIN_DO_NOTIFY BIT(0) struct scmi_reset_domain_notify_a2p { uint32_t domain_id; uint32_t notify_enable; }; struct scmi_reset_domain_notify_p2a { int32_t status; }; /* * RESET_COMPLETE */ struct scmi_reset_domain_complete_p2a { int32_t status; uint32_t domain_id; }; /* * RESET_ISSUED */ struct scmi_reset_domain_issued_p2a { uint32_t domain_id; uint32_t reset_state; }; #endif /* SCMI_MSG_RESET_DOMAIN_H */