Lines Matching refs:msg
93 static void protocol_version(struct scmi_msg *msg) in protocol_version() argument
102 if (msg->in_size) { in protocol_version()
103 scmi_status_response(msg, SCMI_PROTOCOL_ERROR); in protocol_version()
107 scmi_write_response(msg, &return_values, sizeof(return_values)); in protocol_version()
110 static void protocol_attributes(struct scmi_msg *msg) in protocol_attributes() argument
112 unsigned int channel_id = msg->channel_id; in protocol_attributes()
124 if (msg->in_size) { in protocol_attributes()
125 scmi_status_response(msg, SCMI_PROTOCOL_ERROR); in protocol_attributes()
145 scmi_write_response(msg, &return_values, sizeof(return_values)); in protocol_attributes()
148 static void protocol_message_attributes(struct scmi_msg *msg) in protocol_message_attributes() argument
150 struct scmi_protocol_message_attributes_a2p *in_args = (void *)msg->in; in protocol_message_attributes()
157 if (msg->in_size != sizeof(*in_args)) { in protocol_message_attributes()
158 scmi_status_response(msg, SCMI_PROTOCOL_ERROR); in protocol_message_attributes()
163 scmi_status_response(msg, SCMI_NOT_FOUND); in protocol_message_attributes()
167 scmi_write_response(msg, &return_values, sizeof(return_values)); in protocol_message_attributes()
170 static int32_t sanitize_message(struct scmi_msg *msg, unsigned int *domain_id, in sanitize_message() argument
173 size_t domain_count = plat_scmi_perf_count(msg->channel_id); in sanitize_message()
177 if (msg->in_size != exp_in_size) in sanitize_message()
186 static void scmi_perf_domain_attributes(struct scmi_msg *msg) in scmi_perf_domain_attributes() argument
188 const struct scmi_perf_attributes_a2p *in_args = (void *)msg->in; in scmi_perf_domain_attributes()
198 FMSG("channel %u: domain %u", msg->channel_id, domain_id); in scmi_perf_domain_attributes()
200 res = sanitize_message(msg, &domain_id, sizeof(*in_args)); in scmi_perf_domain_attributes()
202 scmi_status_response(msg, res); in scmi_perf_domain_attributes()
206 name = plat_scmi_perf_domain_name(msg->channel_id, domain_id); in scmi_perf_domain_attributes()
208 scmi_status_response(msg, SCMI_NOT_FOUND); in scmi_perf_domain_attributes()
212 res = plat_scmi_perf_sustained_freq(msg->channel_id, domain_id, in scmi_perf_domain_attributes()
215 scmi_status_response(msg, res); in scmi_perf_domain_attributes()
226 VERBOSE_MSG("channel %u: domain %u: name \"%s\"", msg->channel_id, in scmi_perf_domain_attributes()
229 scmi_write_response(msg, &return_values, sizeof(return_values)); in scmi_perf_domain_attributes()
232 static void scmi_perf_level_get(struct scmi_msg *msg) in scmi_perf_level_get() argument
234 const struct scmi_perf_level_get_a2p *in_args = (void *)msg->in; in scmi_perf_level_get()
243 VERBOSE_MSG("channel %u, domain %u", msg->channel_id, domain_id); in scmi_perf_level_get()
245 res = sanitize_message(msg, &domain_id, sizeof(*in_args)); in scmi_perf_level_get()
247 scmi_status_response(msg, res); in scmi_perf_level_get()
251 res = plat_scmi_perf_level_get(msg->channel_id, domain_id, &level); in scmi_perf_level_get()
253 scmi_status_response(msg, res); in scmi_perf_level_get()
260 VERBOSE_MSG("channel %u, domain %u: level %u", msg->channel_id, in scmi_perf_level_get()
263 scmi_write_response(msg, &return_values, sizeof(return_values)); in scmi_perf_level_get()
266 static void scmi_perf_level_set(struct scmi_msg *msg) in scmi_perf_level_set() argument
268 const struct scmi_perf_level_set_a2p *in_args = (void *)msg->in; in scmi_perf_level_set()
269 unsigned int channel_id = msg->channel_id; in scmi_perf_level_set()
278 res = sanitize_message(msg, &domain_id, sizeof(*in_args)); in scmi_perf_level_set()
282 scmi_status_response(msg, res); in scmi_perf_level_set()
291 static void scmi_perf_describe_levels(struct scmi_msg *msg) in scmi_perf_describe_levels() argument
293 const struct scmi_perf_describe_levels_a2p *in_args = (void *)msg->in; in scmi_perf_describe_levels()
303 VERBOSE_MSG("channel %u, domain %u", msg->channel_id, domain_id); in scmi_perf_describe_levels()
305 res = sanitize_message(msg, &domain_id, sizeof(*in_args)); in scmi_perf_describe_levels()
309 res = plat_scmi_perf_levels_array(msg->channel_id, domain_id, 0, in scmi_perf_describe_levels()
322 res = plat_scmi_perf_levels_array(msg->channel_id, domain_id, in scmi_perf_describe_levels()
334 memcpy(msg->out, &p2a, sizeof(p2a)); in scmi_perf_describe_levels()
337 levels = (void *)(uintptr_t)(msg->out + sizeof(p2a)); in scmi_perf_describe_levels()
343 res = plat_scmi_perf_level_latency(msg->channel_id, in scmi_perf_describe_levels()
353 res = plat_scmi_perf_level_power_cost(msg->channel_id, in scmi_perf_describe_levels()
367 msg->out_size_out = in scmi_perf_describe_levels()
375 scmi_status_response(msg, res); in scmi_perf_describe_levels()
394 scmi_msg_handler_t scmi_msg_get_perf_handler(struct scmi_msg *msg) in scmi_msg_get_perf_handler() argument
399 if (msg->message_id >= array_size) { in scmi_msg_get_perf_handler()
400 DMSG("handle not found %u", msg->message_id); in scmi_msg_get_perf_handler()
404 message_id = confine_array_index(msg->message_id, array_size); in scmi_msg_get_perf_handler()