xref: /aosp_15_r20/external/arm-trusted-firmware/drivers/scmi-msg/power_domain.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /* SPDX-License-Identifier: BSD-3-Clause */
2*54fd6939SJiyong Park /*
3*54fd6939SJiyong Park  * Copyright 2021 NXP
4*54fd6939SJiyong Park  */
5*54fd6939SJiyong Park 
6*54fd6939SJiyong Park #ifndef SCMI_MSG_PD_H
7*54fd6939SJiyong Park #define SCMI_MSG_PD_H
8*54fd6939SJiyong Park 
9*54fd6939SJiyong Park #include <stdint.h>
10*54fd6939SJiyong Park 
11*54fd6939SJiyong Park #include <lib/utils_def.h>
12*54fd6939SJiyong Park 
13*54fd6939SJiyong Park #define SCMI_PROTOCOL_VERSION_PD	0x21000U
14*54fd6939SJiyong Park 
15*54fd6939SJiyong Park /*
16*54fd6939SJiyong Park  * Identifiers of the SCMI POWER DOMAIN Protocol commands
17*54fd6939SJiyong Park  */
18*54fd6939SJiyong Park enum scmi_pd_command_id {
19*54fd6939SJiyong Park 	SCMI_PD_ATTRIBUTES = 0x003,
20*54fd6939SJiyong Park 	SCMI_PD_STATE_SET = 0x004,
21*54fd6939SJiyong Park 	SCMI_PD_STATE_GET = 0x005,
22*54fd6939SJiyong Park };
23*54fd6939SJiyong Park 
24*54fd6939SJiyong Park /* Protocol attributes */
25*54fd6939SJiyong Park struct scmi_pd_attributes_a2p {
26*54fd6939SJiyong Park 	uint32_t pd_id;
27*54fd6939SJiyong Park };
28*54fd6939SJiyong Park 
29*54fd6939SJiyong Park struct scmi_protocol_attributes_p2a_pd {
30*54fd6939SJiyong Park 	int32_t status;
31*54fd6939SJiyong Park 	uint32_t attributes;
32*54fd6939SJiyong Park 	uint32_t statistics_addr_low;
33*54fd6939SJiyong Park 	uint32_t statistics_addr_high;
34*54fd6939SJiyong Park 	uint32_t statistics_len;
35*54fd6939SJiyong Park };
36*54fd6939SJiyong Park 
37*54fd6939SJiyong Park #define SCMI_PD_NAME_LENGTH_MAX	16U
38*54fd6939SJiyong Park 
39*54fd6939SJiyong Park struct scmi_pd_attributes_p2a {
40*54fd6939SJiyong Park 	int32_t status;
41*54fd6939SJiyong Park 	uint32_t attributes;
42*54fd6939SJiyong Park 	char pd_name[SCMI_PD_NAME_LENGTH_MAX];
43*54fd6939SJiyong Park };
44*54fd6939SJiyong Park 
45*54fd6939SJiyong Park /*
46*54fd6939SJiyong Park  * Power Domain State Get
47*54fd6939SJiyong Park  */
48*54fd6939SJiyong Park 
49*54fd6939SJiyong Park struct scmi_pd_state_get_a2p {
50*54fd6939SJiyong Park 	uint32_t pd_id;
51*54fd6939SJiyong Park };
52*54fd6939SJiyong Park 
53*54fd6939SJiyong Park struct scmi_pd_state_get_p2a {
54*54fd6939SJiyong Park 	int32_t status;
55*54fd6939SJiyong Park 	uint32_t power_state;
56*54fd6939SJiyong Park };
57*54fd6939SJiyong Park 
58*54fd6939SJiyong Park /*
59*54fd6939SJiyong Park  * Power domain State Set
60*54fd6939SJiyong Park  */
61*54fd6939SJiyong Park 
62*54fd6939SJiyong Park struct scmi_pd_state_set_a2p {
63*54fd6939SJiyong Park 	uint32_t flags;
64*54fd6939SJiyong Park 	uint32_t pd_id;
65*54fd6939SJiyong Park 	uint32_t power_state;
66*54fd6939SJiyong Park };
67*54fd6939SJiyong Park 
68*54fd6939SJiyong Park struct scmi_pd_state_set_p2a {
69*54fd6939SJiyong Park 	int32_t status;
70*54fd6939SJiyong Park };
71*54fd6939SJiyong Park 
72*54fd6939SJiyong Park #endif /* SCMI_MSG_PD_H */
73