diff --git a/msm/msm_drv.h b/msm/msm_drv.h index 635a45bc9d..4edb800819 100644 --- a/msm/msm_drv.h +++ b/msm/msm_drv.h @@ -174,7 +174,6 @@ enum msm_mdp_crtc_property { CRTC_PROP_ROT_CLK, CRTC_PROP_ROI_V1, CRTC_PROP_SECURITY_LEVEL, - CRTC_PROP_IDLE_TIMEOUT, CRTC_PROP_DEST_SCALER, CRTC_PROP_CAPTURE_OUTPUT, diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index 5e024cb106..cc9fb9d4e9 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -3675,7 +3675,7 @@ static void sde_crtc_atomic_flush(struct drm_crtc *crtc, dev = crtc->dev; priv = dev->dev_private; - if ((sde_crtc->cache_state == CACHE_STATE_PRE_CACHE) && + if ((sde_crtc->cache_state == CACHE_STATE_NORMAL) && sde_crtc_get_property(cstate, CRTC_PROP_CACHE_STATE)) sde_crtc_static_img_control(crtc, CACHE_STATE_FRAME_WRITE, false); @@ -3844,37 +3844,6 @@ static void _sde_crtc_remove_pipe_flush(struct drm_crtc *crtc) } } -static void _sde_crtc_schedule_idle_notify(struct drm_crtc *crtc) -{ - struct sde_crtc *sde_crtc = to_sde_crtc(crtc); - struct sde_crtc_state *cstate = to_sde_crtc_state(crtc->state); - struct sde_kms *sde_kms = _sde_crtc_get_kms(crtc); - struct msm_drm_private *priv; - struct msm_drm_thread *event_thread; - int idle_time = 0; - - if (!sde_kms || !sde_kms->dev || !sde_kms->dev->dev_private) - return; - - priv = sde_kms->dev->dev_private; - - idle_time = sde_crtc_get_property(cstate, CRTC_PROP_IDLE_TIMEOUT); - - if (!idle_time || - !sde_encoder_check_curr_mode(sde_crtc->mixers[0].encoder, - MSM_DISPLAY_VIDEO_MODE) || - (crtc->index >= ARRAY_SIZE(priv->event_thread)) || - (sde_crtc->cache_state > CACHE_STATE_NORMAL)) - return; - - /* schedule the idle notify delayed work */ - event_thread = &priv->event_thread[crtc->index]; - - kthread_mod_delayed_work(&event_thread->worker, - &sde_crtc->idle_notify_work, msecs_to_jiffies(idle_time)); - SDE_DEBUG("schedule idle notify work in %dms\n", idle_time); -} - /** * sde_crtc_reset_hw - attempt hardware reset on errors * @crtc: Pointer to DRM crtc instance @@ -4099,8 +4068,6 @@ void sde_crtc_commit_kickoff(struct drm_crtc *crtc, spin_unlock_irqrestore(&dev->event_lock, flags); } - _sde_crtc_schedule_idle_notify(crtc); - SDE_ATRACE_END("crtc_commit"); } @@ -4516,7 +4483,6 @@ static void sde_crtc_disable(struct drm_crtc *crtc) mutex_lock(&sde_crtc->crtc_lock); kthread_cancel_delayed_work_sync(&sde_crtc->static_cache_read_work); - kthread_cancel_delayed_work_sync(&sde_crtc->idle_notify_work); SDE_EVT32(DRMID(crtc), sde_crtc->enabled, crtc->state->active, crtc->state->enable, sde_crtc->cached_encoder_mask); @@ -5842,10 +5808,6 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc, sde_crtc_install_perf_properties(sde_crtc, sde_kms, catalog, info); - msm_property_install_range(&sde_crtc->property_info, - "idle_time", 0, 0, U64_MAX, 0, - CRTC_PROP_IDLE_TIMEOUT); - if (catalog->has_trusted_vm_support) { int init_idx = sde_in_trusted_vm(sde_kms) ? 1 : 0; @@ -7038,12 +7000,8 @@ void sde_crtc_static_img_control(struct drm_crtc *crtc, kthread_cancel_delayed_work_sync( &sde_crtc->static_cache_read_work); break; - case CACHE_STATE_PRE_CACHE: - if (sde_crtc->cache_state != CACHE_STATE_NORMAL) - return; - break; case CACHE_STATE_FRAME_WRITE: - if (sde_crtc->cache_state != CACHE_STATE_PRE_CACHE) + if (sde_crtc->cache_state != CACHE_STATE_NORMAL) return; break; case CACHE_STATE_FRAME_READ: @@ -7139,33 +7097,10 @@ void sde_crtc_static_cache_read_kickoff(struct drm_crtc *crtc) msecs_to_jiffies(msecs_fps)); } -/* - * __sde_crtc_idle_notify_work - signal idle timeout to user space - */ -static void __sde_crtc_idle_notify_work(struct kthread_work *work) -{ - struct sde_crtc *sde_crtc = container_of(work, struct sde_crtc, - idle_notify_work.work); - struct drm_crtc *crtc; - int ret = 0; - - if (!sde_crtc) { - SDE_ERROR("invalid sde crtc\n"); - } else { - crtc = &sde_crtc->base; - sde_crtc_event_notify(crtc, DRM_EVENT_IDLE_NOTIFY, sizeof(u32), ret); - - SDE_DEBUG("crtc[%d]: idle timeout notified\n", crtc->base.id); - - sde_crtc_static_img_control(crtc, CACHE_STATE_PRE_CACHE, false); - } -} - void sde_crtc_cancel_delayed_work(struct drm_crtc *crtc) { struct sde_crtc *sde_crtc; struct sde_crtc_state *cstate; - bool idle_status; bool cache_status; if (!crtc || !crtc->state) @@ -7174,9 +7109,8 @@ void sde_crtc_cancel_delayed_work(struct drm_crtc *crtc) sde_crtc = to_sde_crtc(crtc); cstate = to_sde_crtc_state(crtc->state); - idle_status = kthread_cancel_delayed_work_sync(&sde_crtc->idle_notify_work); cache_status = kthread_cancel_delayed_work_sync(&sde_crtc->static_cache_read_work); - SDE_EVT32(DRMID(crtc), idle_status, cache_status); + SDE_EVT32(DRMID(crtc), cache_status); } /* initialize crtc */ @@ -7271,8 +7205,6 @@ struct drm_crtc *sde_crtc_init(struct drm_device *dev, struct drm_plane *plane) sde_crtc->new_perf.llcc_active[i] = false; } - kthread_init_delayed_work(&sde_crtc->idle_notify_work, - __sde_crtc_idle_notify_work); kthread_init_delayed_work(&sde_crtc->static_cache_read_work, __sde_crtc_static_cache_read_work); diff --git a/msm/sde/sde_crtc.h b/msm/sde/sde_crtc.h index 44d94ce990..757ebc0361 100644 --- a/msm/sde/sde_crtc.h +++ b/msm/sde/sde_crtc.h @@ -80,7 +80,6 @@ enum sde_crtc_idle_pc_state { * CACHE_STATE_DISABLED: sys cache has been disabled * CACHE_STATE_ENABLED: sys cache has been enabled * CACHE_STATE_NORMAL: sys cache is normal state - * CACHE_STATE_PRE_CACHE: frame cache is being prepared * CACHE_STATE_FRAME_WRITE: sys cache is being written to * CACHE_STATE_FRAME_READ: sys cache is being read */ @@ -88,7 +87,6 @@ enum sde_crtc_cache_state { CACHE_STATE_DISABLED, CACHE_STATE_ENABLED, CACHE_STATE_NORMAL, - CACHE_STATE_PRE_CACHE, CACHE_STATE_FRAME_WRITE, CACHE_STATE_FRAME_READ }; @@ -304,7 +302,6 @@ struct sde_frame_data { * @misr_reconfigure : boolean entry indicates misr reconfigure status * @misr_frame_count : misr frame count provided by client * @misr_data : store misr data before turning off the clocks. - * @idle_notify_work: delayed worker to notify idle timeout to user space * @power_event : registered power event handle * @cur_perf : current performance committed to clock/bandwidth driver * @plane_mask_old: keeps track of the planes used in the previous commit @@ -394,7 +391,6 @@ struct sde_crtc { bool misr_enable_debugfs; bool misr_reconfigure; u32 misr_frame_count; - struct kthread_delayed_work idle_notify_work; struct sde_power_event *power_event;