Lines Matching +full:src +full:-

1 // SPDX-License-Identifier: GPL-2.0
15 #include "allegro-mail.h"
47 enum mcu_msg_version version = msg->header.version; in allegro_enc_init()
49 dst[i++] = msg->reserved0; in allegro_enc_init()
50 dst[i++] = msg->suballoc_dma; in allegro_enc_init()
51 dst[i++] = msg->suballoc_size; in allegro_enc_init()
52 dst[i++] = msg->encoder_buffer_size; in allegro_enc_init()
53 dst[i++] = msg->encoder_buffer_color_depth; in allegro_enc_init()
54 dst[i++] = msg->num_cores; in allegro_enc_init()
56 dst[i++] = msg->clk_rate; in allegro_enc_init()
65 enum mcu_msg_version version = param->version; in settings_get_mcu_codec()
66 u32 pixelformat = param->codec; in settings_get_mcu_codec()
90 enum mcu_msg_version version = param->version; in allegro_encode_config_blob()
97 dst[i++] = param->layer_id; in allegro_encode_config_blob()
98 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->height) | in allegro_encode_config_blob()
99 FIELD_PREP(GENMASK(15, 0), param->width); in allegro_encode_config_blob()
101 dst[i++] = param->videomode; in allegro_encode_config_blob()
102 dst[i++] = param->format; in allegro_encode_config_blob()
104 dst[i++] = param->colorspace; in allegro_encode_config_blob()
105 dst[i++] = param->src_mode; in allegro_encode_config_blob()
107 dst[i++] = param->src_bit_depth; in allegro_encode_config_blob()
109 FIELD_PREP(GENMASK(23, 8), param->constraint_set_flags) | in allegro_encode_config_blob()
110 FIELD_PREP(GENMASK(7, 0), param->profile); in allegro_encode_config_blob()
111 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->tier) | in allegro_encode_config_blob()
112 FIELD_PREP(GENMASK(15, 0), param->level); in allegro_encode_config_blob()
115 val |= param->temporal_mvp_enable ? BIT(20) : 0; in allegro_encode_config_blob()
116 val |= FIELD_PREP(GENMASK(7, 4), param->log2_max_frame_num); in allegro_encode_config_blob()
118 val |= FIELD_PREP(GENMASK(3, 0), param->log2_max_poc - 1); in allegro_encode_config_blob()
120 val |= FIELD_PREP(GENMASK(3, 0), param->log2_max_poc); in allegro_encode_config_blob()
124 val |= param->enable_reordering ? BIT(0) : 0; in allegro_encode_config_blob()
125 val |= param->dbf_ovr_en ? BIT(2) : 0; in allegro_encode_config_blob()
126 val |= param->override_lf ? BIT(12) : 0; in allegro_encode_config_blob()
131 val |= param->custom_lda ? BIT(2) : 0; in allegro_encode_config_blob()
132 val |= param->rdo_cost_mode ? BIT(20) : 0; in allegro_encode_config_blob()
136 val |= param->lf ? BIT(2) : 0; in allegro_encode_config_blob()
137 val |= param->lf_x_tile ? BIT(3) : 0; in allegro_encode_config_blob()
138 val |= param->lf_x_slice ? BIT(4) : 0; in allegro_encode_config_blob()
145 dst[i++] = FIELD_PREP(GENMASK(15, 8), param->beta_offset) | in allegro_encode_config_blob()
146 FIELD_PREP(GENMASK(7, 0), param->tc_offset); in allegro_encode_config_blob()
147 dst[i++] = param->unknown11; in allegro_encode_config_blob()
148 dst[i++] = param->unknown12; in allegro_encode_config_blob()
149 dst[i++] = param->num_slices; in allegro_encode_config_blob()
150 dst[i++] = param->encoder_buffer_offset; in allegro_encode_config_blob()
151 dst[i++] = param->encoder_buffer_enabled; in allegro_encode_config_blob()
153 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->clip_vrt_range) | in allegro_encode_config_blob()
154 FIELD_PREP(GENMASK(15, 0), param->clip_hrz_range); in allegro_encode_config_blob()
155 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->me_range[1]) | in allegro_encode_config_blob()
156 FIELD_PREP(GENMASK(15, 0), param->me_range[0]); in allegro_encode_config_blob()
157 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->me_range[3]) | in allegro_encode_config_blob()
158 FIELD_PREP(GENMASK(15, 0), param->me_range[2]); in allegro_encode_config_blob()
159 dst[i++] = FIELD_PREP(GENMASK(31, 24), param->min_tu_size) | in allegro_encode_config_blob()
160 FIELD_PREP(GENMASK(23, 16), param->max_tu_size) | in allegro_encode_config_blob()
161 FIELD_PREP(GENMASK(15, 8), param->min_cu_size) | in allegro_encode_config_blob()
162 FIELD_PREP(GENMASK(8, 0), param->max_cu_size); in allegro_encode_config_blob()
163 dst[i++] = FIELD_PREP(GENMASK(15, 8), param->max_transfo_depth_intra) | in allegro_encode_config_blob()
164 FIELD_PREP(GENMASK(7, 0), param->max_transfo_depth_inter); in allegro_encode_config_blob()
165 dst[i++] = param->entropy_mode; in allegro_encode_config_blob()
166 dst[i++] = param->wp_mode; in allegro_encode_config_blob()
168 dst[i++] = param->rate_control_mode; in allegro_encode_config_blob()
169 dst[i++] = param->initial_rem_delay; in allegro_encode_config_blob()
170 dst[i++] = param->cpb_size; in allegro_encode_config_blob()
171 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->clk_ratio) | in allegro_encode_config_blob()
172 FIELD_PREP(GENMASK(15, 0), param->framerate); in allegro_encode_config_blob()
173 dst[i++] = param->target_bitrate; in allegro_encode_config_blob()
174 dst[i++] = param->max_bitrate; in allegro_encode_config_blob()
175 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->min_qp) | in allegro_encode_config_blob()
176 FIELD_PREP(GENMASK(15, 0), param->initial_qp); in allegro_encode_config_blob()
177 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->ip_delta) | in allegro_encode_config_blob()
178 FIELD_PREP(GENMASK(15, 0), param->max_qp); in allegro_encode_config_blob()
179 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->golden_ref) | in allegro_encode_config_blob()
180 FIELD_PREP(GENMASK(15, 0), param->pb_delta); in allegro_encode_config_blob()
181 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->golden_ref_frequency) | in allegro_encode_config_blob()
182 FIELD_PREP(GENMASK(15, 0), param->golden_delta); in allegro_encode_config_blob()
184 dst[i++] = param->rate_control_option; in allegro_encode_config_blob()
189 dst[i++] = param->num_pixel; in allegro_encode_config_blob()
190 dst[i++] = FIELD_PREP(GENMASK(31, 16), param->max_pixel_value) | in allegro_encode_config_blob()
191 FIELD_PREP(GENMASK(15, 0), param->max_psnr); in allegro_encode_config_blob()
193 dst[i++] = param->maxpicturesize[j]; in allegro_encode_config_blob()
197 dst[i++] = param->gop_ctrl_mode; in allegro_encode_config_blob()
202 dst[i++] = FIELD_PREP(GENMASK(31, 24), param->freq_golden_ref) | in allegro_encode_config_blob()
203 FIELD_PREP(GENMASK(23, 16), param->num_b) | in allegro_encode_config_blob()
204 FIELD_PREP(GENMASK(15, 0), param->gop_length); in allegro_encode_config_blob()
205 dst[i++] = param->freq_idr; in allegro_encode_config_blob()
207 dst[i++] = param->enable_lt; in allegro_encode_config_blob()
208 dst[i++] = param->freq_lt; in allegro_encode_config_blob()
209 dst[i++] = param->gdr_mode; in allegro_encode_config_blob()
211 dst[i++] = FIELD_PREP(GENMASK(31, 24), param->freq_golden_ref) | in allegro_encode_config_blob()
212 FIELD_PREP(GENMASK(23, 16), param->num_b) | in allegro_encode_config_blob()
213 FIELD_PREP(GENMASK(15, 0), param->gop_length); in allegro_encode_config_blob()
216 dst[i++] = param->tmpdqp; in allegro_encode_config_blob()
218 dst[i++] = param->subframe_latency; in allegro_encode_config_blob()
219 dst[i++] = param->lda_control_mode; in allegro_encode_config_blob()
221 dst[i++] = param->unknown41; in allegro_encode_config_blob()
225 dst[i++] = param->lda_factors[j]; in allegro_encode_config_blob()
226 dst[i++] = param->max_num_merge_cand; in allegro_encode_config_blob()
235 enum mcu_msg_version version = msg->header.version; in allegro_enc_create_channel()
238 dst[i++] = msg->user_id; in allegro_enc_create_channel()
241 dst[i++] = msg->blob_mcu_addr; in allegro_enc_create_channel()
243 memcpy(&dst[i], msg->blob, msg->blob_size); in allegro_enc_create_channel()
244 i += msg->blob_size / sizeof(*dst); in allegro_enc_create_channel()
248 dst[i++] = msg->ep1_addr; in allegro_enc_create_channel()
255 u32 *src) in allegro_decode_config_blob() argument
257 enum mcu_msg_version version = msg->header.version; in allegro_decode_config_blob()
260 param->num_ref_idx_l0 = FIELD_GET(GENMASK(7, 4), src[9]); in allegro_decode_config_blob()
261 param->num_ref_idx_l1 = FIELD_GET(GENMASK(11, 8), src[9]); in allegro_decode_config_blob()
263 param->num_ref_idx_l0 = msg->num_ref_idx_l0; in allegro_decode_config_blob()
264 param->num_ref_idx_l1 = msg->num_ref_idx_l1; in allegro_decode_config_blob()
275 dst[i++] = msg->channel_id; in allegro_enc_destroy_channel()
285 unsigned int num_buffers = msg->num_buffers; in allegro_enc_push_buffers()
288 dst[i++] = msg->channel_id; in allegro_enc_push_buffers()
291 buffer = &msg->buffer[j]; in allegro_enc_push_buffers()
292 dst[i++] = buffer->dma_addr; in allegro_enc_push_buffers()
293 dst[i++] = buffer->mcu_addr; in allegro_enc_push_buffers()
294 dst[i++] = buffer->size; in allegro_enc_push_buffers()
306 dst[i++] = msg->channel_id; in allegro_enc_put_stream_buffer()
307 dst[i++] = msg->dma_addr; in allegro_enc_put_stream_buffer()
308 dst[i++] = msg->mcu_addr; in allegro_enc_put_stream_buffer()
309 dst[i++] = msg->size; in allegro_enc_put_stream_buffer()
310 dst[i++] = msg->offset; in allegro_enc_put_stream_buffer()
311 dst[i++] = lower_32_bits(msg->dst_handle); in allegro_enc_put_stream_buffer()
312 dst[i++] = upper_32_bits(msg->dst_handle); in allegro_enc_put_stream_buffer()
320 enum mcu_msg_version version = msg->header.version; in allegro_enc_encode_frame()
323 dst[i++] = msg->channel_id; in allegro_enc_encode_frame()
325 dst[i++] = msg->reserved; in allegro_enc_encode_frame()
326 dst[i++] = msg->encoding_options; in allegro_enc_encode_frame()
327 dst[i++] = FIELD_PREP(GENMASK(31, 16), msg->padding) | in allegro_enc_encode_frame()
328 FIELD_PREP(GENMASK(15, 0), msg->pps_qp); in allegro_enc_encode_frame()
337 dst[i++] = lower_32_bits(msg->user_param); in allegro_enc_encode_frame()
338 dst[i++] = upper_32_bits(msg->user_param); in allegro_enc_encode_frame()
339 dst[i++] = lower_32_bits(msg->src_handle); in allegro_enc_encode_frame()
340 dst[i++] = upper_32_bits(msg->src_handle); in allegro_enc_encode_frame()
341 dst[i++] = msg->request_options; in allegro_enc_encode_frame()
342 dst[i++] = msg->src_y; in allegro_enc_encode_frame()
343 dst[i++] = msg->src_uv; in allegro_enc_encode_frame()
345 dst[i++] = msg->is_10_bit; in allegro_enc_encode_frame()
346 dst[i++] = msg->stride; in allegro_enc_encode_frame()
348 dst[i++] = msg->format; in allegro_enc_encode_frame()
349 dst[i++] = msg->ep2; in allegro_enc_encode_frame()
350 dst[i++] = lower_32_bits(msg->ep2_v); in allegro_enc_encode_frame()
351 dst[i++] = upper_32_bits(msg->ep2_v); in allegro_enc_encode_frame()
357 allegro_dec_init(struct mcu_msg_init_response *msg, u32 *src) in allegro_dec_init() argument
361 msg->reserved0 = src[i++]; in allegro_dec_init()
363 return i * sizeof(*src); in allegro_dec_init()
368 u32 *src) in allegro_dec_create_channel() argument
370 enum mcu_msg_version version = msg->header.version; in allegro_dec_create_channel()
373 msg->channel_id = src[i++]; in allegro_dec_create_channel()
374 msg->user_id = src[i++]; in allegro_dec_create_channel()
380 msg->options = src[i++]; in allegro_dec_create_channel()
381 msg->num_core = src[i++]; in allegro_dec_create_channel()
382 msg->num_ref_idx_l0 = FIELD_GET(GENMASK(7, 4), src[i]); in allegro_dec_create_channel()
383 msg->num_ref_idx_l1 = FIELD_GET(GENMASK(11, 8), src[i++]); in allegro_dec_create_channel()
385 msg->int_buffers_count = src[i++]; in allegro_dec_create_channel()
386 msg->int_buffers_size = src[i++]; in allegro_dec_create_channel()
387 msg->rec_buffers_count = src[i++]; in allegro_dec_create_channel()
388 msg->rec_buffers_size = src[i++]; in allegro_dec_create_channel()
389 msg->reserved = src[i++]; in allegro_dec_create_channel()
390 msg->error_code = src[i++]; in allegro_dec_create_channel()
392 return i * sizeof(*src); in allegro_dec_create_channel()
397 u32 *src) in allegro_dec_destroy_channel() argument
401 msg->channel_id = src[i++]; in allegro_dec_destroy_channel()
403 return i * sizeof(*src); in allegro_dec_destroy_channel()
407 allegro_dec_encode_frame(struct mcu_msg_encode_frame_response *msg, u32 *src) in allegro_dec_encode_frame() argument
409 enum mcu_msg_version version = msg->header.version; in allegro_dec_encode_frame()
413 msg->channel_id = src[i++]; in allegro_dec_encode_frame()
415 msg->dst_handle = src[i++]; in allegro_dec_encode_frame()
416 msg->dst_handle |= (((u64)src[i++]) << 32); in allegro_dec_encode_frame()
417 msg->user_param = src[i++]; in allegro_dec_encode_frame()
418 msg->user_param |= (((u64)src[i++]) << 32); in allegro_dec_encode_frame()
419 msg->src_handle = src[i++]; in allegro_dec_encode_frame()
420 msg->src_handle |= (((u64)src[i++]) << 32); in allegro_dec_encode_frame()
421 msg->skip = FIELD_GET(GENMASK(31, 16), src[i]); in allegro_dec_encode_frame()
422 msg->is_ref = FIELD_GET(GENMASK(15, 0), src[i++]); in allegro_dec_encode_frame()
423 msg->initial_removal_delay = src[i++]; in allegro_dec_encode_frame()
424 msg->dpb_output_delay = src[i++]; in allegro_dec_encode_frame()
425 msg->size = src[i++]; in allegro_dec_encode_frame()
426 msg->frame_tag_size = src[i++]; in allegro_dec_encode_frame()
427 msg->stuffing = src[i++]; in allegro_dec_encode_frame()
428 msg->filler = src[i++]; in allegro_dec_encode_frame()
429 msg->num_row = FIELD_GET(GENMASK(31, 16), src[i]); in allegro_dec_encode_frame()
430 msg->num_column = FIELD_GET(GENMASK(15, 0), src[i++]); in allegro_dec_encode_frame()
431 msg->num_ref_idx_l1 = FIELD_GET(GENMASK(31, 24), src[i]); in allegro_dec_encode_frame()
432 msg->num_ref_idx_l0 = FIELD_GET(GENMASK(23, 16), src[i]); in allegro_dec_encode_frame()
433 msg->qp = FIELD_GET(GENMASK(15, 0), src[i++]); in allegro_dec_encode_frame()
434 msg->partition_table_offset = src[i++]; in allegro_dec_encode_frame()
435 msg->partition_table_size = src[i++]; in allegro_dec_encode_frame()
436 msg->sum_complex = src[i++]; in allegro_dec_encode_frame()
438 msg->tile_width[j] = src[i++]; in allegro_dec_encode_frame()
440 msg->tile_height[j] = src[i++]; in allegro_dec_encode_frame()
441 msg->error_code = src[i++]; in allegro_dec_encode_frame()
442 msg->slice_type = src[i++]; in allegro_dec_encode_frame()
443 msg->pic_struct = src[i++]; in allegro_dec_encode_frame()
444 msg->reserved = FIELD_GET(GENMASK(31, 24), src[i]); in allegro_dec_encode_frame()
445 msg->is_last_slice = FIELD_GET(GENMASK(23, 16), src[i]); in allegro_dec_encode_frame()
446 msg->is_first_slice = FIELD_GET(GENMASK(15, 8), src[i]); in allegro_dec_encode_frame()
447 msg->is_idr = FIELD_GET(GENMASK(7, 0), src[i++]); in allegro_dec_encode_frame()
449 msg->reserved1 = FIELD_GET(GENMASK(31, 16), src[i]); in allegro_dec_encode_frame()
450 msg->pps_qp = FIELD_GET(GENMASK(15, 0), src[i++]); in allegro_dec_encode_frame()
452 msg->reserved2 = src[i++]; in allegro_dec_encode_frame()
454 msg->reserved3 = src[i++]; in allegro_dec_encode_frame()
455 msg->reserved4 = src[i++]; in allegro_dec_encode_frame()
456 msg->reserved5 = src[i++]; in allegro_dec_encode_frame()
457 msg->reserved6 = src[i++]; in allegro_dec_encode_frame()
460 return i * sizeof(*src); in allegro_dec_encode_frame()
464 * allegro_encode_mail() - Encode allegro messages to firmware format
474 return -EINVAL; in allegro_encode_mail()
476 switch (header->type) { in allegro_encode_mail()
497 return -EINVAL; in allegro_encode_mail()
505 dst[0] = FIELD_PREP(GENMASK(31, 16), header->type) | in allegro_encode_mail()
512 * allegro_decode_mail() - Parse allegro messages from the firmware.
514 * @src: Pointer to the memory that will be parsed
520 int allegro_decode_mail(void *msg, u32 *src) in allegro_decode_mail() argument
524 if (!src || !msg) in allegro_decode_mail()
525 return -EINVAL; in allegro_decode_mail()
528 header->type = FIELD_GET(GENMASK(31, 16), src[0]); in allegro_decode_mail()
530 src++; in allegro_decode_mail()
531 switch (header->type) { in allegro_decode_mail()
533 allegro_dec_init(msg, src); in allegro_decode_mail()
536 allegro_dec_create_channel(msg, src); in allegro_decode_mail()
539 allegro_dec_destroy_channel(msg, src); in allegro_decode_mail()
542 allegro_dec_encode_frame(msg, src); in allegro_decode_mail()
545 return -EINVAL; in allegro_decode_mail()