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