disp: msm: sde: increase display kickoff timeout for hw-fences

Starting with HW-Fencing, the frames hw kickoff
can take longer to trigger, given that HW will wait for the
input fences signal. Therefore, this change increments
the time-outs to wait up to ~10 secs, which corresponds
to the current input dma-fences timeout. This ~10secs
wait is given in intervals, where the dma-fence is also
checked, so in case that the client producer of the fence
signals the dma-fence, but misses the hw-fence signaling,
Display driver can handle this case and do a sw-override
to start the fetching of the incoming frame without waiting
for the input hw-fence ipc signal.

Change-Id: I6fcacbbaa79ca9847da616bd52efdda4bb8fccae
Signed-off-by: Christina Oliveira <quic_coliveir@quicinc.com>
This commit is contained in:
Christina Oliveira
2023-01-24 14:52:23 -08:00
父節點 6ecd45a1dc
當前提交 bb846fab11
共有 9 個文件被更改,包括 177 次插入5 次删除

查看文件

@@ -1725,6 +1725,15 @@ static int _sde_encoder_phys_cmd_wait_for_wr_ptr(
ret = sde_encoder_helper_wait_for_irq(phys_enc, INTR_IDX_WRPTR,
&wait_info);
/*
* if hwfencing enabled, try again to wait for up to the extended timeout time in
* increments as long as fence has not been signaled.
*/
if (ret == -ETIMEDOUT && phys_enc->sde_kms->catalog->hw_fence_rev)
ret = sde_encoder_helper_hw_fence_extended_wait(phys_enc, ctl, &wait_info,
INTR_IDX_WRPTR);
if (ret == -ETIMEDOUT) {
struct sde_hw_ctl *ctl = phys_enc->hw_ctl;
@@ -1754,6 +1763,10 @@ static int _sde_encoder_phys_cmd_wait_for_wr_ptr(
lock_flags);
}
}
/* if we timeout after the extended wait, reset mixers and do sw override */
if (ret && phys_enc->sde_kms->catalog->hw_fence_rev)
sde_encoder_helper_hw_fence_sw_override(phys_enc, ctl);
}
cmd_enc->wr_ptr_wait_success = (ret == 0) ? true : false;