driver: video: Reset sequence change request property only during psc handling

Sequence change property would configure firmware to generate psc at every
key frame. This property is configured based on low latency settings from
the client.
For cases, when client sets low latency from 1 to 0, the hardware would
continue to run in direct mode (low latency mode). Since the sequence
change property gets disabled, there would not be psc from firmware to
change the mode to 2 stage. Hence the sequence change property to be reset
only during psc handling.

Change-Id: Ie8e17e44c921f036763f6f390397d4d812120e23
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
This commit is contained in:
Vikash Garodia
2021-07-01 14:48:53 +05:30
parent c80c5b8bbb
commit 3b67d6b2f9
4 changed files with 17 additions and 9 deletions

View File

@@ -808,6 +808,14 @@ int msm_v4l2_op_s_ctrl(struct v4l2_ctrl *ctrl)
goto exit;
}
if (ctrl->id == V4L2_CID_MPEG_VIDC_LOWLATENCY_REQUEST) {
if (ctrl->val == V4L2_MPEG_MSM_VIDC_ENABLE) {
rc = msm_vidc_set_seq_change_at_sync_frame(inst);
if (rc)
return rc;
}
}
exit:
if (rc)
msm_vidc_free_capabililty_list(inst, CHILD_LIST | FW_LIST);
@@ -3619,8 +3627,7 @@ int msm_vidc_set_pipe(void *instance,
return rc;
}
int msm_vidc_set_seq_change_at_sync_frame(void* instance,
enum msm_vidc_inst_capability_type cap_id)
int msm_vidc_set_seq_change_at_sync_frame(void *instance)
{
int rc = 0;
u32 payload;
@@ -3632,7 +3639,7 @@ int msm_vidc_set_seq_change_at_sync_frame(void* instance,
}
payload = inst->capabilities->cap[LOWLATENCY_MODE].value;
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
rc = msm_vidc_packetize_control(inst, LOWLATENCY_MODE, HFI_PAYLOAD_U32,
&payload, sizeof(u32), __func__);
if (rc)
return rc;