Loading drivers/gpu/drm/msm/sde/sde_crtc.c +20 −19 Original line number Diff line number Diff line Loading @@ -2210,6 +2210,8 @@ static void sde_crtc_frame_event_cb(void *data, u32 event) struct msm_drm_private *priv; struct sde_crtc_frame_event *fevent; struct sde_crtc_frame_event_cb_data *cb_data; struct drm_plane *plane; u32 ubwc_error; unsigned long flags; u32 crtc_id; Loading Loading @@ -2245,6 +2247,24 @@ static void sde_crtc_frame_event_cb(void *data, u32 event) return; } /* log and clear plane ubwc errors if any */ if (event & (SDE_ENCODER_FRAME_EVENT_ERROR | SDE_ENCODER_FRAME_EVENT_PANEL_DEAD | SDE_ENCODER_FRAME_EVENT_DONE)) { drm_for_each_plane_mask(plane, crtc->dev, sde_crtc->plane_mask_old) { ubwc_error = sde_plane_get_ubwc_error(plane); if (ubwc_error) { SDE_EVT32(DRMID(crtc), DRMID(plane), ubwc_error, SDE_EVTLOG_ERROR); SDE_DEBUG("crtc%d plane %d ubwc_error %d\n", DRMID(crtc), DRMID(plane), ubwc_error); sde_plane_clear_ubwc_error(plane); } } } fevent->event = event; fevent->crtc = crtc; fevent->connector = cb_data->connector; Loading Loading @@ -2398,9 +2418,6 @@ static void sde_crtc_frame_event_work(struct kthread_work *work) struct drm_crtc *crtc; struct sde_crtc *sde_crtc; struct sde_kms *sde_kms; struct drm_plane *plane; u32 ubwc_error; bool frame_done_event = false; unsigned long flags; bool in_clone_mode = false; Loading Loading @@ -2456,7 +2473,6 @@ static void sde_crtc_frame_event_work(struct kthread_work *work) SDE_EVT32_VERBOSE(DRMID(crtc), fevent->event, SDE_EVTLOG_FUNC_CASE3); } frame_done_event = true; } if (fevent->event & SDE_ENCODER_FRAME_EVENT_SIGNAL_RELEASE_FENCE) { Loading @@ -2477,21 +2493,6 @@ static void sde_crtc_frame_event_work(struct kthread_work *work) SDE_ERROR("crtc%d ts:%lld received panel dead event\n", crtc->base.id, ktime_to_ns(fevent->ts)); if (frame_done_event) { drm_for_each_plane_mask(plane, crtc->dev, sde_crtc->plane_mask_old) { ubwc_error = sde_plane_get_ubwc_error(plane); if (ubwc_error) { SDE_EVT32(DRMID(crtc), DRMID(plane), ubwc_error, SDE_EVTLOG_ERROR); SDE_DEBUG("crtc%d plane %d ubwc_error %d\n", DRMID(crtc), DRMID(plane), ubwc_error); sde_plane_clear_ubwc_error(plane); } } } spin_lock_irqsave(&sde_crtc->spin_lock, flags); list_add_tail(&fevent->list, &sde_crtc->frame_event_list); spin_unlock_irqrestore(&sde_crtc->spin_lock, flags); Loading Loading
drivers/gpu/drm/msm/sde/sde_crtc.c +20 −19 Original line number Diff line number Diff line Loading @@ -2210,6 +2210,8 @@ static void sde_crtc_frame_event_cb(void *data, u32 event) struct msm_drm_private *priv; struct sde_crtc_frame_event *fevent; struct sde_crtc_frame_event_cb_data *cb_data; struct drm_plane *plane; u32 ubwc_error; unsigned long flags; u32 crtc_id; Loading Loading @@ -2245,6 +2247,24 @@ static void sde_crtc_frame_event_cb(void *data, u32 event) return; } /* log and clear plane ubwc errors if any */ if (event & (SDE_ENCODER_FRAME_EVENT_ERROR | SDE_ENCODER_FRAME_EVENT_PANEL_DEAD | SDE_ENCODER_FRAME_EVENT_DONE)) { drm_for_each_plane_mask(plane, crtc->dev, sde_crtc->plane_mask_old) { ubwc_error = sde_plane_get_ubwc_error(plane); if (ubwc_error) { SDE_EVT32(DRMID(crtc), DRMID(plane), ubwc_error, SDE_EVTLOG_ERROR); SDE_DEBUG("crtc%d plane %d ubwc_error %d\n", DRMID(crtc), DRMID(plane), ubwc_error); sde_plane_clear_ubwc_error(plane); } } } fevent->event = event; fevent->crtc = crtc; fevent->connector = cb_data->connector; Loading Loading @@ -2398,9 +2418,6 @@ static void sde_crtc_frame_event_work(struct kthread_work *work) struct drm_crtc *crtc; struct sde_crtc *sde_crtc; struct sde_kms *sde_kms; struct drm_plane *plane; u32 ubwc_error; bool frame_done_event = false; unsigned long flags; bool in_clone_mode = false; Loading Loading @@ -2456,7 +2473,6 @@ static void sde_crtc_frame_event_work(struct kthread_work *work) SDE_EVT32_VERBOSE(DRMID(crtc), fevent->event, SDE_EVTLOG_FUNC_CASE3); } frame_done_event = true; } if (fevent->event & SDE_ENCODER_FRAME_EVENT_SIGNAL_RELEASE_FENCE) { Loading @@ -2477,21 +2493,6 @@ static void sde_crtc_frame_event_work(struct kthread_work *work) SDE_ERROR("crtc%d ts:%lld received panel dead event\n", crtc->base.id, ktime_to_ns(fevent->ts)); if (frame_done_event) { drm_for_each_plane_mask(plane, crtc->dev, sde_crtc->plane_mask_old) { ubwc_error = sde_plane_get_ubwc_error(plane); if (ubwc_error) { SDE_EVT32(DRMID(crtc), DRMID(plane), ubwc_error, SDE_EVTLOG_ERROR); SDE_DEBUG("crtc%d plane %d ubwc_error %d\n", DRMID(crtc), DRMID(plane), ubwc_error); sde_plane_clear_ubwc_error(plane); } } } spin_lock_irqsave(&sde_crtc->spin_lock, flags); list_add_tail(&fevent->list, &sde_crtc->frame_event_list); spin_unlock_irqrestore(&sde_crtc->spin_lock, flags); Loading