diff --git a/drivers/media/platform/msm/vidc/msm_vidc_common.c b/drivers/media/platform/msm/vidc/msm_vidc_common.c index 4de9be4f44e5..ae0e3918cdf2 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_common.c +++ b/drivers/media/platform/msm/vidc/msm_vidc_common.c @@ -1174,6 +1174,8 @@ static void handle_event_change(enum hal_command_response cmd, void *data) inst->prop.width[OUTPUT_PORT] = event_notify->width; } + inst->seqchanged_count++; + if (inst->session_type == MSM_VIDC_DECODER) msm_dcvs_init_load(inst); diff --git a/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c b/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c index 5e29fb94894e..fd93f7831777 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c +++ b/drivers/media/platform/msm/vidc/msm_vidc_dcvs.c @@ -619,7 +619,8 @@ static bool msm_dcvs_check_supported(struct msm_vidc_inst *inst) if (!is_codec_supported || !IS_VALID_DCVS_SESSION(num_mbs_per_frame, res->dcvs_limit[inst->session_type].min_mbpf) || - !IS_VALID_DCVS_SESSION(instance_load, dcvs_limit)) + !IS_VALID_DCVS_SESSION(instance_load, dcvs_limit) || + inst->seqchanged_count > 1) return false; if (!output_buf_req) { diff --git a/drivers/media/platform/msm/vidc/msm_vidc_internal.h b/drivers/media/platform/msm/vidc/msm_vidc_internal.h index 97d5abf17922..cf51ebc6f978 100644 --- a/drivers/media/platform/msm/vidc/msm_vidc_internal.h +++ b/drivers/media/platform/msm/vidc/msm_vidc_internal.h @@ -274,6 +274,7 @@ struct msm_vidc_inst { bool in_reconfig; u32 reconfig_width; u32 reconfig_height; + u32 seqchanged_count; struct dentry *debugfs_root; void *priv; struct msm_vidc_debug debug;