disp: msm: sde: update flush mask in fence error case

Add a new clear_flush_mask ops in sde_hw_ctl_ops.
Flush mask update to cancel the fence error frame with
the new ops.

Change-Id: I8d03d8e83a05a652789fb38e885a3c8497e4d262
Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
这个提交包含在:
GG Hou
2023-04-12 19:57:59 +08:00
提交者 Gerrit - the friendly Code Review server
父节点 5f4735e2ce
当前提交 ee2ee3b129
修改 4 个文件,包含 31 行新增0 行删除

查看文件

@@ -2225,6 +2225,11 @@ int sde_encoder_hw_fence_error_handle(struct drm_encoder *drm_enc)
}
}
if (phys_enc->hw_ctl->ops.clear_flush_mask) {
phys_enc->hw_ctl->ops.clear_flush_mask(phys_enc->hw_ctl, true);
SDE_EVT32(DRMID(drm_enc), SDE_EVTLOG_FUNC_CASE2);
}
phys_enc->sde_hw_fence_error_status = false;
SDE_EVT32(DRMID(drm_enc), SDE_EVTLOG_FUNC_EXIT);
return rc;
@@ -4234,6 +4239,12 @@ static inline void _sde_encoder_trigger_flush(struct drm_encoder *drm_enc,
ctl->ops.update_bitmask(ctl, SDE_HW_FLUSH_PERIPH, phys->hw_intf->idx, 1);
}
/* update flush mask to ignore fence error frame commit */
if (ctl->ops.clear_flush_mask && phys->fence_error_handle_in_progress) {
ctl->ops.clear_flush_mask(ctl, false);
SDE_EVT32(DRMID(drm_enc), SDE_EVTLOG_FUNC_CASE1);
}
if ((extra_flush && extra_flush->pending_flush_mask)
&& ctl->ops.update_pending_flush)
ctl->ops.update_pending_flush(ctl, extra_flush);