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