Lines Matching defs:msg
9 #include <drivers/scmi-msg.h>
79 static void report_version(struct scmi_msg *msg)
86 if (msg->in_size != 0) {
87 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
91 scmi_write_response(msg, &return_values, sizeof(return_values));
94 static void report_attributes(struct scmi_msg *msg)
96 size_t agent_count = plat_scmi_clock_count(msg->agent_id);
102 if (msg->in_size != 0) {
103 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
107 scmi_write_response(msg, &return_values, sizeof(return_values));
110 static void report_message_attributes(struct scmi_msg *msg)
112 struct scmi_protocol_message_attributes_a2p *in_args = (void *)msg->in;
119 if (msg->in_size != sizeof(*in_args)) {
120 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
125 scmi_status_response(msg, SCMI_NOT_FOUND);
129 scmi_write_response(msg, &return_values, sizeof(return_values));
132 static void scmi_clock_attributes(struct scmi_msg *msg)
134 const struct scmi_clock_attributes_a2p *in_args = (void *)msg->in;
141 if (msg->in_size != sizeof(*in_args)) {
142 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
148 if (clock_id >= plat_scmi_clock_count(msg->agent_id)) {
149 scmi_status_response(msg, SCMI_INVALID_PARAMETERS);
154 name = plat_scmi_clock_get_name(msg->agent_id, clock_id);
156 scmi_status_response(msg, SCMI_NOT_FOUND);
162 return_values.attributes = plat_scmi_clock_get_state(msg->agent_id,
165 scmi_write_response(msg, &return_values, sizeof(return_values));
168 static void scmi_clock_rate_get(struct scmi_msg *msg)
170 const struct scmi_clock_rate_get_a2p *in_args = (void *)msg->in;
177 if (msg->in_size != sizeof(*in_args)) {
178 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
184 if (clock_id >= plat_scmi_clock_count(msg->agent_id)) {
185 scmi_status_response(msg, SCMI_INVALID_PARAMETERS);
189 rate = plat_scmi_clock_get_rate(msg->agent_id, clock_id);
194 scmi_write_response(msg, &return_values, sizeof(return_values));
197 static void scmi_clock_rate_set(struct scmi_msg *msg)
199 const struct scmi_clock_rate_set_a2p *in_args = (void *)msg->in;
204 if (msg->in_size != sizeof(*in_args)) {
205 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
211 if (clock_id >= plat_scmi_clock_count(msg->agent_id)) {
212 scmi_status_response(msg, SCMI_INVALID_PARAMETERS);
219 status = plat_scmi_clock_set_rate(msg->agent_id, clock_id, rate);
221 scmi_status_response(msg, status);
224 static void scmi_clock_config_set(struct scmi_msg *msg)
226 const struct scmi_clock_config_set_a2p *in_args = (void *)msg->in;
231 if (msg->in_size != sizeof(*in_args)) {
232 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
238 if (clock_id >= plat_scmi_clock_count(msg->agent_id)) {
239 scmi_status_response(msg, SCMI_INVALID_PARAMETERS);
245 status = plat_scmi_clock_set_state(msg->agent_id, clock_id, enable);
247 scmi_status_response(msg, status);
278 static void scmi_clock_describe_rates(struct scmi_msg *msg)
280 const struct scmi_clock_describe_rates_a2p *in_args = (void *)msg->in;
288 if (msg->in_size != sizeof(*in_args)) {
289 scmi_status_response(msg, SCMI_PROTOCOL_ERROR);
295 if (clock_id >= plat_scmi_clock_count(msg->agent_id)) {
296 scmi_status_response(msg, SCMI_INVALID_PARAMETERS);
301 status = plat_scmi_clock_rates_array(msg->agent_id, clock_id, NULL,
310 status = plat_scmi_clock_rates_array(msg->agent_id, clock_id,
314 write_rate_desc_array_in_buffer(msg->out + sizeof(p2a),
321 memcpy(msg->out, &p2a, sizeof(p2a));
322 msg->out_size_out = sizeof(p2a) +
329 status = plat_scmi_clock_rates_by_step(msg->agent_id, clock_id,
332 write_rate_desc_array_in_buffer(msg->out + sizeof(p2a),
338 memcpy(msg->out, &p2a, sizeof(p2a));
339 msg->out_size_out = sizeof(p2a) + (3U * RATE_DESC_SIZE);
346 scmi_status_response(msg, status);
349 * Message payload is already written to msg->out, and
350 * msg->out_size_out updated.
372 scmi_msg_handler_t scmi_msg_get_clock_handler(struct scmi_msg *msg)
375 unsigned int message_id = SPECULATION_SAFE_VALUE(msg->message_id);
378 VERBOSE("Clock handle not found %u", msg->message_id);