2 * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
3 * Copyright (C) 2017 Linaro Ltd.
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 and
7 * only version 2 as published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
15 #include <linux/errno.h>
16 #include <linux/hash.h>
20 static enum hfi_version hfi_ver
;
22 void pkt_sys_init(struct hfi_sys_init_pkt
*pkt
, u32 arch_type
)
24 pkt
->hdr
.size
= sizeof(*pkt
);
25 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_INIT
;
26 pkt
->arch_type
= arch_type
;
29 void pkt_sys_pc_prep(struct hfi_sys_pc_prep_pkt
*pkt
)
31 pkt
->hdr
.size
= sizeof(*pkt
);
32 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_PC_PREP
;
35 void pkt_sys_idle_indicator(struct hfi_sys_set_property_pkt
*pkt
, u32 enable
)
37 struct hfi_enable
*hfi
= (struct hfi_enable
*)&pkt
->data
[1];
39 pkt
->hdr
.size
= sizeof(*pkt
) + sizeof(*hfi
) + sizeof(u32
);
40 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_SET_PROPERTY
;
41 pkt
->num_properties
= 1;
42 pkt
->data
[0] = HFI_PROPERTY_SYS_IDLE_INDICATOR
;
46 void pkt_sys_debug_config(struct hfi_sys_set_property_pkt
*pkt
, u32 mode
,
49 struct hfi_debug_config
*hfi
;
51 pkt
->hdr
.size
= sizeof(*pkt
) + sizeof(*hfi
) + sizeof(u32
);
52 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_SET_PROPERTY
;
53 pkt
->num_properties
= 1;
54 pkt
->data
[0] = HFI_PROPERTY_SYS_DEBUG_CONFIG
;
55 hfi
= (struct hfi_debug_config
*)&pkt
->data
[1];
60 void pkt_sys_coverage_config(struct hfi_sys_set_property_pkt
*pkt
, u32 mode
)
62 pkt
->hdr
.size
= sizeof(*pkt
) + sizeof(u32
);
63 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_SET_PROPERTY
;
64 pkt
->num_properties
= 1;
65 pkt
->data
[0] = HFI_PROPERTY_SYS_CONFIG_COVERAGE
;
69 int pkt_sys_set_resource(struct hfi_sys_set_resource_pkt
*pkt
, u32 id
, u32 size
,
70 u32 addr
, void *cookie
)
72 pkt
->hdr
.size
= sizeof(*pkt
);
73 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_SET_RESOURCE
;
74 pkt
->resource_handle
= hash32_ptr(cookie
);
77 case VIDC_RESOURCE_OCMEM
:
78 case VIDC_RESOURCE_VMEM
: {
79 struct hfi_resource_ocmem
*res
=
80 (struct hfi_resource_ocmem
*)&pkt
->resource_data
[0];
84 pkt
->resource_type
= HFI_RESOURCE_OCMEM
;
85 pkt
->hdr
.size
+= sizeof(*res
) - sizeof(u32
);
88 case VIDC_RESOURCE_NONE
:
96 int pkt_sys_unset_resource(struct hfi_sys_release_resource_pkt
*pkt
, u32 id
,
97 u32 size
, void *cookie
)
99 pkt
->hdr
.size
= sizeof(*pkt
);
100 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_RELEASE_RESOURCE
;
101 pkt
->resource_handle
= hash32_ptr(cookie
);
104 case VIDC_RESOURCE_OCMEM
:
105 case VIDC_RESOURCE_VMEM
:
106 pkt
->resource_type
= HFI_RESOURCE_OCMEM
;
108 case VIDC_RESOURCE_NONE
:
117 void pkt_sys_ping(struct hfi_sys_ping_pkt
*pkt
, u32 cookie
)
119 pkt
->hdr
.size
= sizeof(*pkt
);
120 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_PING
;
121 pkt
->client_data
= cookie
;
124 void pkt_sys_power_control(struct hfi_sys_set_property_pkt
*pkt
, u32 enable
)
126 struct hfi_enable
*hfi
= (struct hfi_enable
*)&pkt
->data
[1];
128 pkt
->hdr
.size
= sizeof(*pkt
) + sizeof(*hfi
) + sizeof(u32
);
129 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_SET_PROPERTY
;
130 pkt
->num_properties
= 1;
131 pkt
->data
[0] = HFI_PROPERTY_SYS_CODEC_POWER_PLANE_CTRL
;
132 hfi
->enable
= enable
;
135 int pkt_sys_ssr_cmd(struct hfi_sys_test_ssr_pkt
*pkt
, u32 trigger_type
)
137 switch (trigger_type
) {
138 case HFI_TEST_SSR_SW_ERR_FATAL
:
139 case HFI_TEST_SSR_SW_DIV_BY_ZERO
:
140 case HFI_TEST_SSR_HW_WDOG_IRQ
:
146 pkt
->hdr
.size
= sizeof(*pkt
);
147 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_TEST_SSR
;
148 pkt
->trigger_type
= trigger_type
;
153 void pkt_sys_image_version(struct hfi_sys_get_property_pkt
*pkt
)
155 pkt
->hdr
.size
= sizeof(*pkt
);
156 pkt
->hdr
.pkt_type
= HFI_CMD_SYS_GET_PROPERTY
;
157 pkt
->num_properties
= 1;
158 pkt
->data
[0] = HFI_PROPERTY_SYS_IMAGE_VERSION
;
161 int pkt_session_init(struct hfi_session_init_pkt
*pkt
, void *cookie
,
162 u32 session_type
, u32 codec
)
164 if (!pkt
|| !cookie
|| !codec
)
167 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
168 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SYS_SESSION_INIT
;
169 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
170 pkt
->session_domain
= session_type
;
171 pkt
->session_codec
= codec
;
176 void pkt_session_cmd(struct hfi_session_pkt
*pkt
, u32 pkt_type
, void *cookie
)
178 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
179 pkt
->shdr
.hdr
.pkt_type
= pkt_type
;
180 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
183 int pkt_session_set_buffers(struct hfi_session_set_buffers_pkt
*pkt
,
184 void *cookie
, struct hfi_buffer_desc
*bd
)
188 if (!cookie
|| !pkt
|| !bd
)
191 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_SET_BUFFERS
;
192 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
193 pkt
->buffer_size
= bd
->buffer_size
;
194 pkt
->min_buffer_size
= bd
->buffer_size
;
195 pkt
->num_buffers
= bd
->num_buffers
;
197 if (bd
->buffer_type
== HFI_BUFFER_OUTPUT
||
198 bd
->buffer_type
== HFI_BUFFER_OUTPUT2
) {
199 struct hfi_buffer_info
*bi
;
201 pkt
->extradata_size
= bd
->extradata_size
;
202 pkt
->shdr
.hdr
.size
= sizeof(*pkt
) - sizeof(u32
) +
203 (bd
->num_buffers
* sizeof(*bi
));
204 bi
= (struct hfi_buffer_info
*)pkt
->buffer_info
;
205 for (i
= 0; i
< pkt
->num_buffers
; i
++) {
206 bi
->buffer_addr
= bd
->device_addr
;
207 bi
->extradata_addr
= bd
->extradata_addr
;
210 pkt
->extradata_size
= 0;
211 pkt
->shdr
.hdr
.size
= sizeof(*pkt
) +
212 ((bd
->num_buffers
- 1) * sizeof(u32
));
213 for (i
= 0; i
< pkt
->num_buffers
; i
++)
214 pkt
->buffer_info
[i
] = bd
->device_addr
;
217 pkt
->buffer_type
= bd
->buffer_type
;
222 int pkt_session_unset_buffers(struct hfi_session_release_buffer_pkt
*pkt
,
223 void *cookie
, struct hfi_buffer_desc
*bd
)
227 if (!cookie
|| !pkt
|| !bd
)
230 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_RELEASE_BUFFERS
;
231 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
232 pkt
->buffer_size
= bd
->buffer_size
;
233 pkt
->num_buffers
= bd
->num_buffers
;
235 if (bd
->buffer_type
== HFI_BUFFER_OUTPUT
||
236 bd
->buffer_type
== HFI_BUFFER_OUTPUT2
) {
237 struct hfi_buffer_info
*bi
;
239 bi
= (struct hfi_buffer_info
*)pkt
->buffer_info
;
240 for (i
= 0; i
< pkt
->num_buffers
; i
++) {
241 bi
->buffer_addr
= bd
->device_addr
;
242 bi
->extradata_addr
= bd
->extradata_addr
;
245 sizeof(struct hfi_session_set_buffers_pkt
) -
246 sizeof(u32
) + (bd
->num_buffers
* sizeof(*bi
));
248 for (i
= 0; i
< pkt
->num_buffers
; i
++)
249 pkt
->buffer_info
[i
] = bd
->device_addr
;
251 pkt
->extradata_size
= 0;
253 sizeof(struct hfi_session_set_buffers_pkt
) +
254 ((bd
->num_buffers
- 1) * sizeof(u32
));
257 pkt
->response_req
= bd
->response_required
;
258 pkt
->buffer_type
= bd
->buffer_type
;
263 int pkt_session_etb_decoder(struct hfi_session_empty_buffer_compressed_pkt
*pkt
,
264 void *cookie
, struct hfi_frame_data
*in_frame
)
266 if (!cookie
|| !in_frame
->device_addr
)
269 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
270 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_EMPTY_BUFFER
;
271 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
272 pkt
->time_stamp_hi
= upper_32_bits(in_frame
->timestamp
);
273 pkt
->time_stamp_lo
= lower_32_bits(in_frame
->timestamp
);
274 pkt
->flags
= in_frame
->flags
;
275 pkt
->mark_target
= in_frame
->mark_target
;
276 pkt
->mark_data
= in_frame
->mark_data
;
277 pkt
->offset
= in_frame
->offset
;
278 pkt
->alloc_len
= in_frame
->alloc_len
;
279 pkt
->filled_len
= in_frame
->filled_len
;
280 pkt
->input_tag
= in_frame
->clnt_data
;
281 pkt
->packet_buffer
= in_frame
->device_addr
;
286 int pkt_session_etb_encoder(
287 struct hfi_session_empty_buffer_uncompressed_plane0_pkt
*pkt
,
288 void *cookie
, struct hfi_frame_data
*in_frame
)
290 if (!cookie
|| !in_frame
->device_addr
)
293 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
294 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_EMPTY_BUFFER
;
295 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
297 pkt
->time_stamp_hi
= upper_32_bits(in_frame
->timestamp
);
298 pkt
->time_stamp_lo
= lower_32_bits(in_frame
->timestamp
);
299 pkt
->flags
= in_frame
->flags
;
300 pkt
->mark_target
= in_frame
->mark_target
;
301 pkt
->mark_data
= in_frame
->mark_data
;
302 pkt
->offset
= in_frame
->offset
;
303 pkt
->alloc_len
= in_frame
->alloc_len
;
304 pkt
->filled_len
= in_frame
->filled_len
;
305 pkt
->input_tag
= in_frame
->clnt_data
;
306 pkt
->packet_buffer
= in_frame
->device_addr
;
307 pkt
->extradata_buffer
= in_frame
->extradata_addr
;
312 int pkt_session_ftb(struct hfi_session_fill_buffer_pkt
*pkt
, void *cookie
,
313 struct hfi_frame_data
*out_frame
)
315 if (!cookie
|| !out_frame
|| !out_frame
->device_addr
)
318 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
319 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_FILL_BUFFER
;
320 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
322 if (out_frame
->buffer_type
== HFI_BUFFER_OUTPUT
)
324 else if (out_frame
->buffer_type
== HFI_BUFFER_OUTPUT2
)
327 pkt
->output_tag
= out_frame
->clnt_data
;
328 pkt
->packet_buffer
= out_frame
->device_addr
;
329 pkt
->extradata_buffer
= out_frame
->extradata_addr
;
330 pkt
->alloc_len
= out_frame
->alloc_len
;
331 pkt
->filled_len
= out_frame
->filled_len
;
332 pkt
->offset
= out_frame
->offset
;
333 pkt
->data
[0] = out_frame
->extradata_size
;
338 int pkt_session_parse_seq_header(
339 struct hfi_session_parse_sequence_header_pkt
*pkt
,
340 void *cookie
, u32 seq_hdr
, u32 seq_hdr_len
)
342 if (!cookie
|| !seq_hdr
|| !seq_hdr_len
)
345 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
346 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER
;
347 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
348 pkt
->header_len
= seq_hdr_len
;
349 pkt
->packet_buffer
= seq_hdr
;
354 int pkt_session_get_seq_hdr(struct hfi_session_get_sequence_header_pkt
*pkt
,
355 void *cookie
, u32 seq_hdr
, u32 seq_hdr_len
)
357 if (!cookie
|| !seq_hdr
|| !seq_hdr_len
)
360 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
361 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_GET_SEQUENCE_HEADER
;
362 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
363 pkt
->buffer_len
= seq_hdr_len
;
364 pkt
->packet_buffer
= seq_hdr
;
369 int pkt_session_flush(struct hfi_session_flush_pkt
*pkt
, void *cookie
, u32 type
)
372 case HFI_FLUSH_INPUT
:
373 case HFI_FLUSH_OUTPUT
:
374 case HFI_FLUSH_OUTPUT2
:
381 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
382 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_FLUSH
;
383 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
384 pkt
->flush_type
= type
;
389 static int pkt_session_get_property_1x(struct hfi_session_get_property_pkt
*pkt
,
390 void *cookie
, u32 ptype
)
393 case HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT
:
394 case HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS
:
400 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
401 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_GET_PROPERTY
;
402 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
403 pkt
->num_properties
= 1;
404 pkt
->data
[0] = ptype
;
409 static int pkt_session_set_property_1x(struct hfi_session_set_property_pkt
*pkt
,
410 void *cookie
, u32 ptype
, void *pdata
)
415 if (!pkt
|| !cookie
|| !pdata
)
418 prop_data
= &pkt
->data
[1];
420 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
421 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_SET_PROPERTY
;
422 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
423 pkt
->num_properties
= 1;
424 pkt
->data
[0] = ptype
;
427 case HFI_PROPERTY_CONFIG_FRAME_RATE
: {
428 struct hfi_framerate
*in
= pdata
, *frate
= prop_data
;
430 frate
->buffer_type
= in
->buffer_type
;
431 frate
->framerate
= in
->framerate
;
432 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*frate
);
435 case HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT
: {
436 struct hfi_uncompressed_format_select
*in
= pdata
;
437 struct hfi_uncompressed_format_select
*hfi
= prop_data
;
439 hfi
->buffer_type
= in
->buffer_type
;
440 hfi
->format
= in
->format
;
441 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*hfi
);
444 case HFI_PROPERTY_PARAM_FRAME_SIZE
: {
445 struct hfi_framesize
*in
= pdata
, *fsize
= prop_data
;
447 fsize
->buffer_type
= in
->buffer_type
;
448 fsize
->height
= in
->height
;
449 fsize
->width
= in
->width
;
450 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*fsize
);
453 case HFI_PROPERTY_CONFIG_REALTIME
: {
454 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
456 en
->enable
= in
->enable
;
457 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
460 case HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL
: {
461 struct hfi_buffer_count_actual
*in
= pdata
, *count
= prop_data
;
463 count
->count_actual
= in
->count_actual
;
464 count
->type
= in
->type
;
465 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*count
);
468 case HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL
: {
469 struct hfi_buffer_size_actual
*in
= pdata
, *sz
= prop_data
;
473 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*sz
);
476 case HFI_PROPERTY_PARAM_BUFFER_DISPLAY_HOLD_COUNT_ACTUAL
: {
477 struct hfi_buffer_display_hold_count_actual
*in
= pdata
;
478 struct hfi_buffer_display_hold_count_actual
*count
= prop_data
;
480 count
->hold_count
= in
->hold_count
;
481 count
->type
= in
->type
;
482 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*count
);
485 case HFI_PROPERTY_PARAM_NAL_STREAM_FORMAT_SELECT
: {
486 struct hfi_nal_stream_format_select
*in
= pdata
;
487 struct hfi_nal_stream_format_select
*fmt
= prop_data
;
489 fmt
->format
= in
->format
;
490 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*fmt
);
493 case HFI_PROPERTY_PARAM_VDEC_OUTPUT_ORDER
: {
497 case HFI_OUTPUT_ORDER_DECODE
:
498 case HFI_OUTPUT_ORDER_DISPLAY
:
506 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
509 case HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE
: {
510 struct hfi_enable_picture
*in
= pdata
, *en
= prop_data
;
512 en
->picture_type
= in
->picture_type
;
513 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
516 case HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO
: {
517 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
519 en
->enable
= in
->enable
;
520 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
523 case HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER
: {
524 struct hfi_enable
*in
= pdata
;
525 struct hfi_enable
*en
= prop_data
;
527 en
->enable
= in
->enable
;
528 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
531 case HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM
: {
532 struct hfi_multi_stream
*in
= pdata
, *multi
= prop_data
;
534 multi
->buffer_type
= in
->buffer_type
;
535 multi
->enable
= in
->enable
;
536 multi
->width
= in
->width
;
537 multi
->height
= in
->height
;
538 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*multi
);
541 case HFI_PROPERTY_PARAM_VDEC_DISPLAY_PICTURE_BUFFER_COUNT
: {
542 struct hfi_display_picture_buffer_count
*in
= pdata
;
543 struct hfi_display_picture_buffer_count
*count
= prop_data
;
545 count
->count
= in
->count
;
546 count
->enable
= in
->enable
;
547 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*count
);
550 case HFI_PROPERTY_PARAM_DIVX_FORMAT
: {
554 case HFI_DIVX_FORMAT_4
:
555 case HFI_DIVX_FORMAT_5
:
556 case HFI_DIVX_FORMAT_6
:
564 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
567 case HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING
: {
568 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
570 en
->enable
= in
->enable
;
571 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
574 case HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER
: {
575 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
577 en
->enable
= in
->enable
;
578 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
581 case HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE
: {
582 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
584 en
->enable
= in
->enable
;
585 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
588 case HFI_PROPERTY_CONFIG_VENC_SYNC_FRAME_SEQUENCE_HEADER
: {
589 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
591 en
->enable
= in
->enable
;
592 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
595 case HFI_PROPERTY_CONFIG_VENC_REQUEST_SYNC_FRAME
:
596 pkt
->shdr
.hdr
.size
+= sizeof(u32
);
598 case HFI_PROPERTY_PARAM_VENC_MPEG4_SHORT_HEADER
:
600 case HFI_PROPERTY_PARAM_VENC_MPEG4_AC_PREDICTION
:
602 case HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE
: {
603 struct hfi_bitrate
*in
= pdata
, *brate
= prop_data
;
605 brate
->bitrate
= in
->bitrate
;
606 brate
->layer_id
= in
->layer_id
;
607 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*brate
);
610 case HFI_PROPERTY_CONFIG_VENC_MAX_BITRATE
: {
611 struct hfi_bitrate
*in
= pdata
, *hfi
= prop_data
;
613 hfi
->bitrate
= in
->bitrate
;
614 hfi
->layer_id
= in
->layer_id
;
615 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*hfi
);
618 case HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT
: {
619 struct hfi_profile_level
*in
= pdata
, *pl
= prop_data
;
621 pl
->level
= in
->level
;
622 pl
->profile
= in
->profile
;
623 if (pl
->profile
<= 0)
624 /* Profile not supported, falling back to high */
625 pl
->profile
= HFI_H264_PROFILE_HIGH
;
628 /* Level not supported, falling back to 1 */
631 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*pl
);
634 case HFI_PROPERTY_PARAM_VENC_H264_ENTROPY_CONTROL
: {
635 struct hfi_h264_entropy_control
*in
= pdata
, *hfi
= prop_data
;
637 hfi
->entropy_mode
= in
->entropy_mode
;
638 if (hfi
->entropy_mode
== HFI_H264_ENTROPY_CABAC
)
639 hfi
->cabac_model
= in
->cabac_model
;
640 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*hfi
);
643 case HFI_PROPERTY_PARAM_VENC_RATE_CONTROL
: {
647 case HFI_RATE_CONTROL_OFF
:
648 case HFI_RATE_CONTROL_CBR_CFR
:
649 case HFI_RATE_CONTROL_CBR_VFR
:
650 case HFI_RATE_CONTROL_VBR_CFR
:
651 case HFI_RATE_CONTROL_VBR_VFR
:
659 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
662 case HFI_PROPERTY_PARAM_VENC_MPEG4_TIME_RESOLUTION
: {
663 struct hfi_mpeg4_time_resolution
*in
= pdata
, *res
= prop_data
;
665 res
->time_increment_resolution
= in
->time_increment_resolution
;
666 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*res
);
669 case HFI_PROPERTY_PARAM_VENC_MPEG4_HEADER_EXTENSION
: {
670 struct hfi_mpeg4_header_extension
*in
= pdata
, *ext
= prop_data
;
672 ext
->header_extension
= in
->header_extension
;
673 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*ext
);
676 case HFI_PROPERTY_PARAM_VENC_H264_DEBLOCK_CONTROL
: {
677 struct hfi_h264_db_control
*in
= pdata
, *db
= prop_data
;
680 case HFI_H264_DB_MODE_DISABLE
:
681 case HFI_H264_DB_MODE_SKIP_SLICE_BOUNDARY
:
682 case HFI_H264_DB_MODE_ALL_BOUNDARY
:
690 db
->slice_alpha_offset
= in
->slice_alpha_offset
;
691 db
->slice_beta_offset
= in
->slice_beta_offset
;
692 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*db
);
695 case HFI_PROPERTY_PARAM_VENC_SESSION_QP
: {
696 struct hfi_quantization
*in
= pdata
, *quant
= prop_data
;
698 quant
->qp_i
= in
->qp_i
;
699 quant
->qp_p
= in
->qp_p
;
700 quant
->qp_b
= in
->qp_b
;
701 quant
->layer_id
= in
->layer_id
;
702 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*quant
);
705 case HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE
: {
706 struct hfi_quantization_range
*in
= pdata
, *range
= prop_data
;
712 /* We'll be packing in the qp, so make sure we
713 * won't be losing data when masking
715 if (min_qp
> 0xff || max_qp
> 0xff) {
720 /* When creating the packet, pack the qp value as
721 * 0xiippbb, where ii = qp range for I-frames,
722 * pp = qp range for P-frames, etc.
724 range
->min_qp
= min_qp
| min_qp
<< 8 | min_qp
<< 16;
725 range
->max_qp
= max_qp
| max_qp
<< 8 | max_qp
<< 16;
726 range
->layer_id
= in
->layer_id
;
728 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*range
);
731 case HFI_PROPERTY_PARAM_VENC_VC1_PERF_CFG
: {
732 struct hfi_vc1e_perf_cfg_type
*in
= pdata
, *perf
= prop_data
;
734 memcpy(perf
->search_range_x_subsampled
,
735 in
->search_range_x_subsampled
,
736 sizeof(perf
->search_range_x_subsampled
));
737 memcpy(perf
->search_range_y_subsampled
,
738 in
->search_range_y_subsampled
,
739 sizeof(perf
->search_range_y_subsampled
));
741 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*perf
);
744 case HFI_PROPERTY_PARAM_VENC_MAX_NUM_B_FRAMES
: {
745 struct hfi_max_num_b_frames
*bframes
= prop_data
;
748 bframes
->max_num_b_frames
= *in
;
749 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*bframes
);
752 case HFI_PROPERTY_CONFIG_VENC_INTRA_PERIOD
: {
753 struct hfi_intra_period
*in
= pdata
, *intra
= prop_data
;
755 intra
->pframes
= in
->pframes
;
756 intra
->bframes
= in
->bframes
;
757 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*intra
);
760 case HFI_PROPERTY_CONFIG_VENC_IDR_PERIOD
: {
761 struct hfi_idr_period
*in
= pdata
, *idr
= prop_data
;
763 idr
->idr_period
= in
->idr_period
;
764 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*idr
);
767 case HFI_PROPERTY_PARAM_VDEC_CONCEAL_COLOR
: {
768 struct hfi_conceal_color
*color
= prop_data
;
771 color
->conceal_color
= *in
;
772 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*color
);
775 case HFI_PROPERTY_CONFIG_VPE_OPERATIONS
: {
776 struct hfi_operations_type
*in
= pdata
, *ops
= prop_data
;
778 switch (in
->rotation
) {
779 case HFI_ROTATE_NONE
:
791 case HFI_FLIP_HORIZONTAL
:
792 case HFI_FLIP_VERTICAL
:
799 ops
->rotation
= in
->rotation
;
800 ops
->flip
= in
->flip
;
801 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*ops
);
804 case HFI_PROPERTY_PARAM_VENC_INTRA_REFRESH
: {
805 struct hfi_intra_refresh
*in
= pdata
, *intra
= prop_data
;
808 case HFI_INTRA_REFRESH_NONE
:
809 case HFI_INTRA_REFRESH_ADAPTIVE
:
810 case HFI_INTRA_REFRESH_CYCLIC
:
811 case HFI_INTRA_REFRESH_CYCLIC_ADAPTIVE
:
812 case HFI_INTRA_REFRESH_RANDOM
:
819 intra
->mode
= in
->mode
;
820 intra
->air_mbs
= in
->air_mbs
;
821 intra
->air_ref
= in
->air_ref
;
822 intra
->cir_mbs
= in
->cir_mbs
;
823 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*intra
);
826 case HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_CONTROL
: {
827 struct hfi_multi_slice_control
*in
= pdata
, *multi
= prop_data
;
829 switch (in
->multi_slice
) {
830 case HFI_MULTI_SLICE_OFF
:
831 case HFI_MULTI_SLICE_GOB
:
832 case HFI_MULTI_SLICE_BY_MB_COUNT
:
833 case HFI_MULTI_SLICE_BY_BYTE_COUNT
:
840 multi
->multi_slice
= in
->multi_slice
;
841 multi
->slice_size
= in
->slice_size
;
842 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*multi
);
845 case HFI_PROPERTY_PARAM_VENC_SLICE_DELIVERY_MODE
: {
846 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
848 en
->enable
= in
->enable
;
849 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
852 case HFI_PROPERTY_PARAM_VENC_H264_VUI_TIMING_INFO
: {
853 struct hfi_h264_vui_timing_info
*in
= pdata
, *vui
= prop_data
;
855 vui
->enable
= in
->enable
;
856 vui
->fixed_framerate
= in
->fixed_framerate
;
857 vui
->time_scale
= in
->time_scale
;
858 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*vui
);
861 case HFI_PROPERTY_CONFIG_VPE_DEINTERLACE
: {
862 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
864 en
->enable
= in
->enable
;
865 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
868 case HFI_PROPERTY_PARAM_VENC_H264_GENERATE_AUDNAL
: {
869 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
871 en
->enable
= in
->enable
;
872 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
875 case HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE
: {
876 struct hfi_buffer_alloc_mode
*in
= pdata
, *mode
= prop_data
;
878 mode
->type
= in
->type
;
879 mode
->mode
= in
->mode
;
880 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*mode
);
883 case HFI_PROPERTY_PARAM_VDEC_FRAME_ASSEMBLY
: {
884 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
886 en
->enable
= in
->enable
;
887 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
890 case HFI_PROPERTY_PARAM_VENC_H264_VUI_BITSTREAM_RESTRC
: {
891 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
893 en
->enable
= in
->enable
;
894 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
897 case HFI_PROPERTY_PARAM_VENC_PRESERVE_TEXT_QUALITY
: {
898 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
900 en
->enable
= in
->enable
;
901 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
904 case HFI_PROPERTY_PARAM_VDEC_SCS_THRESHOLD
: {
905 struct hfi_scs_threshold
*thres
= prop_data
;
908 thres
->threshold_value
= *in
;
909 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*thres
);
912 case HFI_PROPERTY_PARAM_MVC_BUFFER_LAYOUT
: {
913 struct hfi_mvc_buffer_layout_descp_type
*in
= pdata
;
914 struct hfi_mvc_buffer_layout_descp_type
*mvc
= prop_data
;
916 switch (in
->layout_type
) {
917 case HFI_MVC_BUFFER_LAYOUT_TOP_BOTTOM
:
918 case HFI_MVC_BUFFER_LAYOUT_SEQ
:
925 mvc
->layout_type
= in
->layout_type
;
926 mvc
->bright_view_first
= in
->bright_view_first
;
927 mvc
->ngap
= in
->ngap
;
928 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*mvc
);
931 case HFI_PROPERTY_PARAM_VENC_LTRMODE
: {
932 struct hfi_ltr_mode
*in
= pdata
, *ltr
= prop_data
;
934 switch (in
->ltr_mode
) {
935 case HFI_LTR_MODE_DISABLE
:
936 case HFI_LTR_MODE_MANUAL
:
937 case HFI_LTR_MODE_PERIODIC
:
944 ltr
->ltr_mode
= in
->ltr_mode
;
945 ltr
->ltr_count
= in
->ltr_count
;
946 ltr
->trust_mode
= in
->trust_mode
;
947 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*ltr
);
950 case HFI_PROPERTY_CONFIG_VENC_USELTRFRAME
: {
951 struct hfi_ltr_use
*in
= pdata
, *ltr_use
= prop_data
;
953 ltr_use
->frames
= in
->frames
;
954 ltr_use
->ref_ltr
= in
->ref_ltr
;
955 ltr_use
->use_constrnt
= in
->use_constrnt
;
956 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*ltr_use
);
959 case HFI_PROPERTY_CONFIG_VENC_MARKLTRFRAME
: {
960 struct hfi_ltr_mark
*in
= pdata
, *ltr_mark
= prop_data
;
962 ltr_mark
->mark_frame
= in
->mark_frame
;
963 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*ltr_mark
);
966 case HFI_PROPERTY_PARAM_VENC_HIER_P_MAX_NUM_ENH_LAYER
: {
970 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
973 case HFI_PROPERTY_CONFIG_VENC_HIER_P_ENH_LAYER
: {
977 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
980 case HFI_PROPERTY_PARAM_VENC_DISABLE_RC_TIMESTAMP
: {
981 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
983 en
->enable
= in
->enable
;
984 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
987 case HFI_PROPERTY_PARAM_VENC_INITIAL_QP
: {
988 struct hfi_initial_quantization
*in
= pdata
, *quant
= prop_data
;
990 quant
->init_qp_enable
= in
->init_qp_enable
;
991 quant
->qp_i
= in
->qp_i
;
992 quant
->qp_p
= in
->qp_p
;
993 quant
->qp_b
= in
->qp_b
;
994 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*quant
);
997 case HFI_PROPERTY_PARAM_VPE_COLOR_SPACE_CONVERSION
: {
998 struct hfi_vpe_color_space_conversion
*in
= pdata
;
999 struct hfi_vpe_color_space_conversion
*csc
= prop_data
;
1001 memcpy(csc
->csc_matrix
, in
->csc_matrix
,
1002 sizeof(csc
->csc_matrix
));
1003 memcpy(csc
->csc_bias
, in
->csc_bias
, sizeof(csc
->csc_bias
));
1004 memcpy(csc
->csc_limit
, in
->csc_limit
, sizeof(csc
->csc_limit
));
1005 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*csc
);
1008 case HFI_PROPERTY_PARAM_VENC_VPX_ERROR_RESILIENCE_MODE
: {
1009 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
1011 en
->enable
= in
->enable
;
1012 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
1015 case HFI_PROPERTY_PARAM_VENC_H264_NAL_SVC_EXT
: {
1016 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
1018 en
->enable
= in
->enable
;
1019 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
1022 case HFI_PROPERTY_CONFIG_VENC_PERF_MODE
: {
1026 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
1029 case HFI_PROPERTY_PARAM_VENC_HIER_B_MAX_NUM_ENH_LAYER
: {
1033 pkt
->shdr
.hdr
.size
+= sizeof(u32
) * 2;
1036 case HFI_PROPERTY_PARAM_VDEC_NONCP_OUTPUT2
: {
1037 struct hfi_enable
*in
= pdata
, *en
= prop_data
;
1039 en
->enable
= in
->enable
;
1040 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*en
);
1043 case HFI_PROPERTY_PARAM_VENC_HIER_P_HYBRID_MODE
: {
1044 struct hfi_hybrid_hierp
*in
= pdata
, *hierp
= prop_data
;
1046 hierp
->layers
= in
->layers
;
1047 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*hierp
);
1051 /* FOLLOWING PROPERTIES ARE NOT IMPLEMENTED IN CORE YET */
1052 case HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS
:
1053 case HFI_PROPERTY_CONFIG_PRIORITY
:
1054 case HFI_PROPERTY_CONFIG_BATCH_INFO
:
1055 case HFI_PROPERTY_SYS_IDLE_INDICATOR
:
1056 case HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SUPPORTED
:
1057 case HFI_PROPERTY_PARAM_INTERLACE_FORMAT_SUPPORTED
:
1058 case HFI_PROPERTY_PARAM_CHROMA_SITE
:
1059 case HFI_PROPERTY_PARAM_PROPERTIES_SUPPORTED
:
1060 case HFI_PROPERTY_PARAM_PROFILE_LEVEL_SUPPORTED
:
1061 case HFI_PROPERTY_PARAM_CAPABILITY_SUPPORTED
:
1062 case HFI_PROPERTY_PARAM_NAL_STREAM_FORMAT_SUPPORTED
:
1063 case HFI_PROPERTY_PARAM_MULTI_VIEW_FORMAT
:
1064 case HFI_PROPERTY_PARAM_MAX_SEQUENCE_HEADER_SIZE
:
1065 case HFI_PROPERTY_PARAM_CODEC_SUPPORTED
:
1066 case HFI_PROPERTY_PARAM_VDEC_MULTI_VIEW_SELECT
:
1067 case HFI_PROPERTY_PARAM_VDEC_MB_QUANTIZATION
:
1068 case HFI_PROPERTY_PARAM_VDEC_NUM_CONCEALED_MB
:
1069 case HFI_PROPERTY_PARAM_VDEC_H264_ENTROPY_SWITCHING
:
1070 case HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO
:
1079 pkt_session_get_property_3xx(struct hfi_session_get_property_pkt
*pkt
,
1080 void *cookie
, u32 ptype
)
1084 if (!pkt
|| !cookie
)
1087 pkt
->shdr
.hdr
.size
= sizeof(struct hfi_session_get_property_pkt
);
1088 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_GET_PROPERTY
;
1089 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
1090 pkt
->num_properties
= 1;
1093 case HFI_PROPERTY_CONFIG_VDEC_ENTROPY
:
1094 pkt
->data
[0] = HFI_PROPERTY_CONFIG_VDEC_ENTROPY
;
1097 ret
= pkt_session_get_property_1x(pkt
, cookie
, ptype
);
1105 pkt_session_set_property_3xx(struct hfi_session_set_property_pkt
*pkt
,
1106 void *cookie
, u32 ptype
, void *pdata
)
1111 if (!pkt
|| !cookie
|| !pdata
)
1114 prop_data
= &pkt
->data
[1];
1116 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
1117 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_SET_PROPERTY
;
1118 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
1119 pkt
->num_properties
= 1;
1120 pkt
->data
[0] = ptype
;
1123 * Any session set property which is different in 3XX packetization
1124 * should be added as a new case below. All unchanged session set
1125 * properties will be handled in the default case.
1128 case HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM
: {
1129 struct hfi_multi_stream
*in
= pdata
;
1130 struct hfi_multi_stream_3x
*multi
= prop_data
;
1132 multi
->buffer_type
= in
->buffer_type
;
1133 multi
->enable
= in
->enable
;
1134 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*multi
);
1137 case HFI_PROPERTY_PARAM_VENC_INTRA_REFRESH
: {
1138 struct hfi_intra_refresh
*in
= pdata
;
1139 struct hfi_intra_refresh_3x
*intra
= prop_data
;
1142 case HFI_INTRA_REFRESH_NONE
:
1143 case HFI_INTRA_REFRESH_ADAPTIVE
:
1144 case HFI_INTRA_REFRESH_CYCLIC
:
1145 case HFI_INTRA_REFRESH_CYCLIC_ADAPTIVE
:
1146 case HFI_INTRA_REFRESH_RANDOM
:
1153 intra
->mode
= in
->mode
;
1154 intra
->mbs
= in
->cir_mbs
;
1155 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*intra
);
1158 case HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER
:
1159 /* for 3xx fw version session_continue is used */
1162 ret
= pkt_session_set_property_1x(pkt
, cookie
, ptype
, pdata
);
1170 pkt_session_set_property_4xx(struct hfi_session_set_property_pkt
*pkt
,
1171 void *cookie
, u32 ptype
, void *pdata
)
1175 if (!pkt
|| !cookie
|| !pdata
)
1178 prop_data
= &pkt
->data
[1];
1180 pkt
->shdr
.hdr
.size
= sizeof(*pkt
);
1181 pkt
->shdr
.hdr
.pkt_type
= HFI_CMD_SESSION_SET_PROPERTY
;
1182 pkt
->shdr
.session_id
= hash32_ptr(cookie
);
1183 pkt
->num_properties
= 1;
1184 pkt
->data
[0] = ptype
;
1187 * Any session set property which is different in 3XX packetization
1188 * should be added as a new case below. All unchanged session set
1189 * properties will be handled in the default case.
1192 case HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL
: {
1193 struct hfi_buffer_count_actual
*in
= pdata
;
1194 struct hfi_buffer_count_actual_4xx
*count
= prop_data
;
1196 count
->count_actual
= in
->count_actual
;
1197 count
->type
= in
->type
;
1198 count
->count_min_host
= in
->count_actual
;
1199 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*count
);
1202 case HFI_PROPERTY_PARAM_WORK_MODE
: {
1203 struct hfi_video_work_mode
*in
= pdata
, *wm
= prop_data
;
1205 wm
->video_work_mode
= in
->video_work_mode
;
1206 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*wm
);
1209 case HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE
: {
1210 struct hfi_videocores_usage_type
*in
= pdata
, *cu
= prop_data
;
1212 cu
->video_core_enable_mask
= in
->video_core_enable_mask
;
1213 pkt
->shdr
.hdr
.size
+= sizeof(u32
) + sizeof(*cu
);
1216 case HFI_PROPERTY_CONFIG_VENC_MAX_BITRATE
:
1217 /* not implemented on Venus 4xx */
1220 return pkt_session_set_property_3xx(pkt
, cookie
, ptype
, pdata
);
1226 int pkt_session_get_property(struct hfi_session_get_property_pkt
*pkt
,
1227 void *cookie
, u32 ptype
)
1229 if (hfi_ver
== HFI_VERSION_1XX
)
1230 return pkt_session_get_property_1x(pkt
, cookie
, ptype
);
1232 return pkt_session_get_property_3xx(pkt
, cookie
, ptype
);
1235 int pkt_session_set_property(struct hfi_session_set_property_pkt
*pkt
,
1236 void *cookie
, u32 ptype
, void *pdata
)
1238 if (hfi_ver
== HFI_VERSION_1XX
)
1239 return pkt_session_set_property_1x(pkt
, cookie
, ptype
, pdata
);
1241 if (hfi_ver
== HFI_VERSION_3XX
)
1242 return pkt_session_set_property_3xx(pkt
, cookie
, ptype
, pdata
);
1244 return pkt_session_set_property_4xx(pkt
, cookie
, ptype
, pdata
);
1247 void pkt_set_version(enum hfi_version version
)