disp: msm: add support for display clients to register for fence error
Add framework for display submodules like PP, DSI, DP to register for fence error and call the client callback funtion when fence error occurs. Change-Id: I70cc6b01907177e6c4238c4398fe2c085a000322 Signed-off-by: GG Hou <quic_renjhou@quicinc.com>
这个提交包含在:

提交者
Gerrit - the friendly Code Review server

父节点
54209fb4d0
当前提交
d2812ee4e7
@@ -2181,6 +2181,8 @@ int sde_encoder_hw_fence_error_handle(struct drm_encoder *drm_enc)
|
||||
{
|
||||
struct sde_encoder_virt *sde_enc;
|
||||
struct sde_encoder_phys *phys_enc;
|
||||
struct msm_drm_private *priv;
|
||||
struct msm_fence_error_client_entry *entry;
|
||||
int rc = 0;
|
||||
|
||||
sde_enc = to_sde_encoder_virt(drm_enc);
|
||||
@@ -2204,6 +2206,25 @@ int sde_encoder_hw_fence_error_handle(struct drm_encoder *drm_enc)
|
||||
SDE_EVT32(DRMID(phys_enc->parent), rc, SDE_EVTLOG_ERROR);
|
||||
}
|
||||
|
||||
if (!phys_enc->sde_kms && !phys_enc->sde_kms->dev && !phys_enc->sde_kms->dev->dev_private) {
|
||||
SDE_EVT32(DRMID(drm_enc), SDE_EVTLOG_ERROR);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
priv = phys_enc->sde_kms->dev->dev_private;
|
||||
list_for_each_entry(entry, &priv->fence_error_client_list, list) {
|
||||
if (!entry->ops.fence_error_handle_submodule)
|
||||
continue;
|
||||
|
||||
SDE_EVT32(DRMID(drm_enc), SDE_EVTLOG_FUNC_CASE1);
|
||||
rc = entry->ops.fence_error_handle_submodule(phys_enc->hw_ctl, entry->data);
|
||||
if (rc) {
|
||||
SDE_ERROR("fence_error_handle_submodule failed for device: %d\n",
|
||||
entry->dev->id);
|
||||
SDE_EVT32(DRMID(drm_enc), rc, SDE_EVTLOG_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
phys_enc->sde_hw_fence_error_status = false;
|
||||
SDE_EVT32(DRMID(drm_enc), SDE_EVTLOG_FUNC_EXIT);
|
||||
return rc;
|
||||
|
在新工单中引用
屏蔽一个用户