disp: msm: sde: fix system cache feature enable
In current driver if client did not reset system cache crtc property, system cache write state is on forever and breaks the system cache feature. This change restricts entering into cache write state only if it's commit right after idle notify. This change also adds event logs to capture system cache feature state changes. Change-Id: Ie46fc9113f752ed8989dab99301690a13003b00b Signed-off-by: Prabhanjan Kandula <pkandula@codeaurora.org>
This commit is contained in:
@@ -3351,7 +3351,8 @@ static void sde_crtc_atomic_flush(struct drm_crtc *crtc,
|
||||
event_thread = &priv->event_thread[crtc->index];
|
||||
idle_time = sde_crtc_get_property(cstate, CRTC_PROP_IDLE_TIMEOUT);
|
||||
|
||||
if (sde_crtc_get_property(cstate, CRTC_PROP_CACHE_STATE))
|
||||
if ((sde_crtc->cache_state == CACHE_STATE_PRE_CACHE) &&
|
||||
sde_crtc_get_property(cstate, CRTC_PROP_CACHE_STATE))
|
||||
sde_crtc_static_img_control(crtc, CACHE_STATE_FRAME_WRITE,
|
||||
false);
|
||||
else
|
||||
@@ -6280,6 +6281,8 @@ void sde_crtc_static_img_control(struct drm_crtc *crtc,
|
||||
return;
|
||||
|
||||
sde_crtc = to_sde_crtc(crtc);
|
||||
if (sde_crtc->cache_state == state)
|
||||
return;
|
||||
|
||||
switch (state) {
|
||||
case CACHE_STATE_NORMAL:
|
||||
@@ -6395,6 +6398,7 @@ static void __sde_crtc_idle_notify_work(struct kthread_work *work)
|
||||
msm_mode_object_event_notify(&crtc->base, crtc->dev,
|
||||
&event, (u8 *)&ret);
|
||||
|
||||
SDE_EVT32(DRMID(crtc));
|
||||
SDE_DEBUG("crtc[%d]: idle timeout notified\n", crtc->base.id);
|
||||
|
||||
sde_crtc_static_img_control(crtc, CACHE_STATE_PRE_CACHE, false);
|
||||
|
Reference in New Issue
Block a user