@@ -391,11 +391,28 @@ static int iris_hfi_gen2_set_linear_stride_scanline(struct iris_inst *inst)
391391 sizeof (u64 ));
392392}
393393
394+ static int iris_hfi_gen2_set_tier (struct iris_inst * inst )
395+ {
396+ struct iris_inst_hfi_gen2 * inst_hfi_gen2 = to_iris_inst_hfi_gen2 (inst );
397+ u32 port = iris_hfi_gen2_get_port (V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE );
398+ u32 tier = inst -> fw_caps [TIER ].value ;
399+
400+ inst_hfi_gen2 -> src_subcr_params .tier = tier ;
401+
402+ return iris_hfi_gen2_session_set_property (inst ,
403+ HFI_PROP_TIER ,
404+ HFI_HOST_FLAGS_NONE ,
405+ port ,
406+ HFI_PAYLOAD_U32_ENUM ,
407+ & tier ,
408+ sizeof (u32 ));
409+ }
410+
394411static int iris_hfi_gen2_session_set_config_params (struct iris_inst * inst , u32 plane )
395412{
396413 struct iris_core * core = inst -> core ;
397- u32 config_params_size , i , j ;
398- const u32 * config_params ;
414+ u32 config_params_size = 0 , i , j ;
415+ const u32 * config_params = NULL ;
399416 int ret ;
400417
401418 static const struct iris_hfi_prop_type_handle prop_type_handle_arr [] = {
@@ -410,11 +427,27 @@ static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst, u32 p
410427 {HFI_PROP_LEVEL , iris_hfi_gen2_set_level },
411428 {HFI_PROP_COLOR_FORMAT , iris_hfi_gen2_set_colorformat },
412429 {HFI_PROP_LINEAR_STRIDE_SCANLINE , iris_hfi_gen2_set_linear_stride_scanline },
430+ {HFI_PROP_TIER , iris_hfi_gen2_set_tier },
413431 };
414432
415433 if (V4L2_TYPE_IS_OUTPUT (plane )) {
416- config_params = core -> iris_platform_data -> input_config_params ;
417- config_params_size = core -> iris_platform_data -> input_config_params_size ;
434+ switch (inst -> codec ) {
435+ case V4L2_PIX_FMT_H264 :
436+ config_params = core -> iris_platform_data -> input_config_params_default ;
437+ config_params_size =
438+ core -> iris_platform_data -> input_config_params_default_size ;
439+ break ;
440+ case V4L2_PIX_FMT_HEVC :
441+ config_params = core -> iris_platform_data -> input_config_params_hevc ;
442+ config_params_size =
443+ core -> iris_platform_data -> input_config_params_hevc_size ;
444+ break ;
445+ case V4L2_PIX_FMT_VP9 :
446+ config_params = core -> iris_platform_data -> input_config_params_vp9 ;
447+ config_params_size =
448+ core -> iris_platform_data -> input_config_params_vp9_size ;
449+ break ;
450+ }
418451 } else {
419452 config_params = core -> iris_platform_data -> output_config_params ;
420453 config_params_size = core -> iris_platform_data -> output_config_params_size ;
@@ -584,8 +617,8 @@ static int iris_hfi_gen2_subscribe_change_param(struct iris_inst *inst, u32 plan
584617 struct hfi_subscription_params subsc_params ;
585618 u32 prop_type , payload_size , payload_type ;
586619 struct iris_core * core = inst -> core ;
587- const u32 * change_param ;
588- u32 change_param_size ;
620+ const u32 * change_param = NULL ;
621+ u32 change_param_size = 0 ;
589622 u32 payload [32 ] = {0 };
590623 u32 hfi_port = 0 , i ;
591624 int ret ;
@@ -596,8 +629,23 @@ static int iris_hfi_gen2_subscribe_change_param(struct iris_inst *inst, u32 plan
596629 return 0 ;
597630 }
598631
599- change_param = core -> iris_platform_data -> input_config_params ;
600- change_param_size = core -> iris_platform_data -> input_config_params_size ;
632+ switch (inst -> codec ) {
633+ case V4L2_PIX_FMT_H264 :
634+ change_param = core -> iris_platform_data -> input_config_params_default ;
635+ change_param_size =
636+ core -> iris_platform_data -> input_config_params_default_size ;
637+ break ;
638+ case V4L2_PIX_FMT_HEVC :
639+ change_param = core -> iris_platform_data -> input_config_params_hevc ;
640+ change_param_size =
641+ core -> iris_platform_data -> input_config_params_hevc_size ;
642+ break ;
643+ case V4L2_PIX_FMT_VP9 :
644+ change_param = core -> iris_platform_data -> input_config_params_vp9 ;
645+ change_param_size =
646+ core -> iris_platform_data -> input_config_params_vp9_size ;
647+ break ;
648+ }
601649
602650 payload [0 ] = HFI_MODE_PORT_SETTINGS_CHANGE ;
603651
@@ -644,6 +692,11 @@ static int iris_hfi_gen2_subscribe_change_param(struct iris_inst *inst, u32 plan
644692 payload_size = sizeof (u32 );
645693 payload_type = HFI_PAYLOAD_U32 ;
646694 break ;
695+ case HFI_PROP_LUMA_CHROMA_BIT_DEPTH :
696+ payload [0 ] = subsc_params .bit_depth ;
697+ payload_size = sizeof (u32 );
698+ payload_type = HFI_PAYLOAD_U32 ;
699+ break ;
647700 case HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT :
648701 payload [0 ] = subsc_params .fw_min_count ;
649702 payload_size = sizeof (u32 );
@@ -669,6 +722,11 @@ static int iris_hfi_gen2_subscribe_change_param(struct iris_inst *inst, u32 plan
669722 payload_size = sizeof (u32 );
670723 payload_type = HFI_PAYLOAD_U32 ;
671724 break ;
725+ case HFI_PROP_TIER :
726+ payload [0 ] = subsc_params .tier ;
727+ payload_size = sizeof (u32 );
728+ payload_type = HFI_PAYLOAD_U32 ;
729+ break ;
672730 default :
673731 prop_type = 0 ;
674732 ret = - EINVAL ;
@@ -695,8 +753,8 @@ static int iris_hfi_gen2_subscribe_change_param(struct iris_inst *inst, u32 plan
695753static int iris_hfi_gen2_subscribe_property (struct iris_inst * inst , u32 plane )
696754{
697755 struct iris_core * core = inst -> core ;
698- u32 subscribe_prop_size , i ;
699- const u32 * subcribe_prop ;
756+ u32 subscribe_prop_size = 0 , i ;
757+ const u32 * subcribe_prop = NULL ;
700758 u32 payload [32 ] = {0 };
701759
702760 payload [0 ] = HFI_MODE_PROPERTY ;
@@ -705,8 +763,23 @@ static int iris_hfi_gen2_subscribe_property(struct iris_inst *inst, u32 plane)
705763 subscribe_prop_size = core -> iris_platform_data -> dec_input_prop_size ;
706764 subcribe_prop = core -> iris_platform_data -> dec_input_prop ;
707765 } else {
708- subscribe_prop_size = core -> iris_platform_data -> dec_output_prop_size ;
709- subcribe_prop = core -> iris_platform_data -> dec_output_prop ;
766+ switch (inst -> codec ) {
767+ case V4L2_PIX_FMT_H264 :
768+ subcribe_prop = core -> iris_platform_data -> dec_output_prop_avc ;
769+ subscribe_prop_size =
770+ core -> iris_platform_data -> dec_output_prop_avc_size ;
771+ break ;
772+ case V4L2_PIX_FMT_HEVC :
773+ subcribe_prop = core -> iris_platform_data -> dec_output_prop_hevc ;
774+ subscribe_prop_size =
775+ core -> iris_platform_data -> dec_output_prop_hevc_size ;
776+ break ;
777+ case V4L2_PIX_FMT_VP9 :
778+ subcribe_prop = core -> iris_platform_data -> dec_output_prop_vp9 ;
779+ subscribe_prop_size =
780+ core -> iris_platform_data -> dec_output_prop_vp9_size ;
781+ break ;
782+ }
710783 }
711784
712785 for (i = 0 ; i < subscribe_prop_size ; i ++ )
0 commit comments