Loading msm/sde/sde_crtc.c +11 −42 Original line number Original line Diff line number Diff line Loading @@ -3620,7 +3620,6 @@ void sde_crtc_commit_kickoff(struct drm_crtc *crtc, static int _sde_crtc_vblank_enable_no_lock( static int _sde_crtc_vblank_enable_no_lock( struct sde_crtc *sde_crtc, bool enable) struct sde_crtc *sde_crtc, bool enable) { { struct drm_device *dev; struct drm_crtc *crtc; struct drm_crtc *crtc; struct drm_encoder *enc; struct drm_encoder *enc; Loading @@ -3630,7 +3629,6 @@ static int _sde_crtc_vblank_enable_no_lock( } } crtc = &sde_crtc->base; crtc = &sde_crtc->base; dev = crtc->dev; if (enable) { if (enable) { int ret; int ret; Loading @@ -3642,27 +3640,27 @@ static int _sde_crtc_vblank_enable_no_lock( if (ret < 0) if (ret < 0) return ret; return ret; list_for_each_entry(enc, &dev->mode_config.encoder_list, head) { drm_for_each_encoder_mask(enc, crtc->dev, crtc->state->encoder_mask) { if (enc->crtc != crtc) if (enc->crtc != crtc) continue; continue; SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, sde_crtc->enabled, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->suspend); sde_crtc->vblank_requested); sde_encoder_register_vblank_callback(enc, sde_encoder_register_vblank_callback(enc, sde_crtc_vblank_cb, (void *)crtc); sde_crtc_vblank_cb, (void *)crtc); } } } else { } else { list_for_each_entry(enc, &dev->mode_config.encoder_list, head) { drm_for_each_encoder_mask(enc, crtc->dev, crtc->state->encoder_mask) { if (enc->crtc != crtc) if (enc->crtc != crtc) continue; continue; SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, sde_crtc->enabled, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->suspend); sde_crtc->vblank_requested); sde_encoder_register_vblank_callback(enc, NULL, NULL); sde_encoder_register_vblank_callback(enc, NULL, NULL); } } Loading @@ -3686,7 +3684,6 @@ static void _sde_crtc_set_suspend(struct drm_crtc *crtc, bool enable) struct sde_crtc *sde_crtc; struct sde_crtc *sde_crtc; struct msm_drm_private *priv; struct msm_drm_private *priv; struct sde_kms *sde_kms; struct sde_kms *sde_kms; int ret = 0; if (!crtc || !crtc->dev || !crtc->dev->dev_private) { if (!crtc || !crtc->dev || !crtc->dev->dev_private) { SDE_ERROR("invalid crtc\n"); SDE_ERROR("invalid crtc\n"); Loading @@ -3711,16 +3708,10 @@ static void _sde_crtc_set_suspend(struct drm_crtc *crtc, bool enable) * and take it back during resume (if it is still enabled). * and take it back during resume (if it is still enabled). */ */ SDE_EVT32(DRMID(&sde_crtc->base), enable, sde_crtc->enabled, SDE_EVT32(DRMID(&sde_crtc->base), enable, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->vblank_requested); sde_crtc->suspend); if (sde_crtc->suspend == enable) if (sde_crtc->suspend == enable) SDE_DEBUG("crtc%d suspend already set to %d, ignoring update\n", SDE_DEBUG("crtc%d suspend already set to %d, ignoring update\n", crtc->base.id, enable); crtc->base.id, enable); else if (sde_crtc->enabled && sde_crtc->vblank_requested) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, !enable); if (ret) SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); } sde_crtc->suspend = enable; sde_crtc->suspend = enable; mutex_unlock(&sde_crtc->crtc_lock); mutex_unlock(&sde_crtc->crtc_lock); Loading Loading @@ -3780,15 +3771,12 @@ static void sde_crtc_reset(struct drm_crtc *crtc) } } /* revert suspend actions, if necessary */ /* revert suspend actions, if necessary */ if (sde_kms_is_suspend_state(crtc->dev)) { if (sde_kms_is_suspend_state(crtc->dev) && _sde_crtc_set_suspend(crtc, false); !sde_crtc_is_reset_required(crtc)) { if (!sde_crtc_is_reset_required(crtc)) { SDE_DEBUG("avoiding reset for crtc:%d\n", SDE_DEBUG("avoiding reset for crtc:%d\n", crtc->base.id); crtc->base.id); return; return; } } } /* remove previous state, if present */ /* remove previous state, if present */ if (crtc->state) { if (crtc->state) { Loading Loading @@ -3996,15 +3984,7 @@ static void sde_crtc_disable(struct drm_crtc *crtc) _sde_crtc_flush_event_thread(crtc); _sde_crtc_flush_event_thread(crtc); SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend, SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend, sde_crtc->vblank_requested, crtc->state->active, crtc->state->enable); crtc->state->active, crtc->state->enable); if (sde_crtc->enabled && !sde_crtc->suspend && sde_crtc->vblank_requested) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, false); if (ret) SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); } sde_crtc->enabled = false; sde_crtc->enabled = false; /* Try to disable uidle */ /* Try to disable uidle */ Loading Loading @@ -4116,8 +4096,7 @@ static void sde_crtc_enable(struct drm_crtc *crtc, drm_crtc_vblank_on(crtc); drm_crtc_vblank_on(crtc); mutex_lock(&sde_crtc->crtc_lock); mutex_lock(&sde_crtc->crtc_lock); SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend, SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend); sde_crtc->vblank_requested); /* /* * Try to enable uidle (if possible), we do this before the call * Try to enable uidle (if possible), we do this before the call Loading @@ -4144,13 +4123,6 @@ static void sde_crtc_enable(struct drm_crtc *crtc, sde_crtc_frame_event_cb, crtc); sde_crtc_frame_event_cb, crtc); } } if (!sde_crtc->enabled && !sde_crtc->suspend && sde_crtc->vblank_requested) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, true); if (ret) SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); } sde_crtc->enabled = true; sde_crtc->enabled = true; /* update color processing on resume */ /* update color processing on resume */ Loading Loading @@ -4743,14 +4715,13 @@ int sde_crtc_vblank(struct drm_crtc *crtc, bool en) mutex_lock(&sde_crtc->crtc_lock); mutex_lock(&sde_crtc->crtc_lock); SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled, SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->vblank_requested); sde_crtc->suspend); if (sde_crtc->enabled && !sde_crtc->suspend) { if (sde_crtc->enabled && !sde_crtc->suspend) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en); ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en); if (ret) if (ret) SDE_ERROR("%s vblank enable failed: %d\n", SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); sde_crtc->name, ret); } } sde_crtc->vblank_requested = en; mutex_unlock(&sde_crtc->crtc_lock); mutex_unlock(&sde_crtc->crtc_lock); return 0; return 0; Loading Loading @@ -5463,8 +5434,6 @@ static int _sde_debugfs_status_show(struct seq_file *s, void *data) sde_crtc->vblank_cb_time = ktime_set(0, 0); sde_crtc->vblank_cb_time = ktime_set(0, 0); } } seq_printf(s, "vblank_enable:%d\n", sde_crtc->vblank_requested); mutex_unlock(&sde_crtc->crtc_lock); mutex_unlock(&sde_crtc->crtc_lock); return 0; return 0; Loading msm/sde/sde_crtc.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -224,7 +224,6 @@ struct sde_crtc_misr_info { * @vblank_last_cb_time : ktime at last vblank notification * @vblank_last_cb_time : ktime at last vblank notification * @sysfs_dev : sysfs device node for crtc * @sysfs_dev : sysfs device node for crtc * @vsync_event_sf : vsync event notifier sysfs device * @vsync_event_sf : vsync event notifier sysfs device * @vblank_requested : whether the user has requested vblank events * @suspend : whether or not a suspend operation is in progress * @suspend : whether or not a suspend operation is in progress * @enabled : whether the SDE CRTC is currently enabled. updated in the * @enabled : whether the SDE CRTC is currently enabled. updated in the * commit-thread, not state-swap time which is earlier, so * commit-thread, not state-swap time which is earlier, so Loading Loading @@ -294,7 +293,6 @@ struct sde_crtc { struct sde_crtc_fps_info fps_info; struct sde_crtc_fps_info fps_info; struct device *sysfs_dev; struct device *sysfs_dev; struct kernfs_node *vsync_event_sf; struct kernfs_node *vsync_event_sf; bool vblank_requested; bool suspend; bool suspend; bool enabled; bool enabled; Loading Loading
msm/sde/sde_crtc.c +11 −42 Original line number Original line Diff line number Diff line Loading @@ -3620,7 +3620,6 @@ void sde_crtc_commit_kickoff(struct drm_crtc *crtc, static int _sde_crtc_vblank_enable_no_lock( static int _sde_crtc_vblank_enable_no_lock( struct sde_crtc *sde_crtc, bool enable) struct sde_crtc *sde_crtc, bool enable) { { struct drm_device *dev; struct drm_crtc *crtc; struct drm_crtc *crtc; struct drm_encoder *enc; struct drm_encoder *enc; Loading @@ -3630,7 +3629,6 @@ static int _sde_crtc_vblank_enable_no_lock( } } crtc = &sde_crtc->base; crtc = &sde_crtc->base; dev = crtc->dev; if (enable) { if (enable) { int ret; int ret; Loading @@ -3642,27 +3640,27 @@ static int _sde_crtc_vblank_enable_no_lock( if (ret < 0) if (ret < 0) return ret; return ret; list_for_each_entry(enc, &dev->mode_config.encoder_list, head) { drm_for_each_encoder_mask(enc, crtc->dev, crtc->state->encoder_mask) { if (enc->crtc != crtc) if (enc->crtc != crtc) continue; continue; SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, sde_crtc->enabled, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->suspend); sde_crtc->vblank_requested); sde_encoder_register_vblank_callback(enc, sde_encoder_register_vblank_callback(enc, sde_crtc_vblank_cb, (void *)crtc); sde_crtc_vblank_cb, (void *)crtc); } } } else { } else { list_for_each_entry(enc, &dev->mode_config.encoder_list, head) { drm_for_each_encoder_mask(enc, crtc->dev, crtc->state->encoder_mask) { if (enc->crtc != crtc) if (enc->crtc != crtc) continue; continue; SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, sde_crtc->enabled, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->suspend); sde_crtc->vblank_requested); sde_encoder_register_vblank_callback(enc, NULL, NULL); sde_encoder_register_vblank_callback(enc, NULL, NULL); } } Loading @@ -3686,7 +3684,6 @@ static void _sde_crtc_set_suspend(struct drm_crtc *crtc, bool enable) struct sde_crtc *sde_crtc; struct sde_crtc *sde_crtc; struct msm_drm_private *priv; struct msm_drm_private *priv; struct sde_kms *sde_kms; struct sde_kms *sde_kms; int ret = 0; if (!crtc || !crtc->dev || !crtc->dev->dev_private) { if (!crtc || !crtc->dev || !crtc->dev->dev_private) { SDE_ERROR("invalid crtc\n"); SDE_ERROR("invalid crtc\n"); Loading @@ -3711,16 +3708,10 @@ static void _sde_crtc_set_suspend(struct drm_crtc *crtc, bool enable) * and take it back during resume (if it is still enabled). * and take it back during resume (if it is still enabled). */ */ SDE_EVT32(DRMID(&sde_crtc->base), enable, sde_crtc->enabled, SDE_EVT32(DRMID(&sde_crtc->base), enable, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->vblank_requested); sde_crtc->suspend); if (sde_crtc->suspend == enable) if (sde_crtc->suspend == enable) SDE_DEBUG("crtc%d suspend already set to %d, ignoring update\n", SDE_DEBUG("crtc%d suspend already set to %d, ignoring update\n", crtc->base.id, enable); crtc->base.id, enable); else if (sde_crtc->enabled && sde_crtc->vblank_requested) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, !enable); if (ret) SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); } sde_crtc->suspend = enable; sde_crtc->suspend = enable; mutex_unlock(&sde_crtc->crtc_lock); mutex_unlock(&sde_crtc->crtc_lock); Loading Loading @@ -3780,15 +3771,12 @@ static void sde_crtc_reset(struct drm_crtc *crtc) } } /* revert suspend actions, if necessary */ /* revert suspend actions, if necessary */ if (sde_kms_is_suspend_state(crtc->dev)) { if (sde_kms_is_suspend_state(crtc->dev) && _sde_crtc_set_suspend(crtc, false); !sde_crtc_is_reset_required(crtc)) { if (!sde_crtc_is_reset_required(crtc)) { SDE_DEBUG("avoiding reset for crtc:%d\n", SDE_DEBUG("avoiding reset for crtc:%d\n", crtc->base.id); crtc->base.id); return; return; } } } /* remove previous state, if present */ /* remove previous state, if present */ if (crtc->state) { if (crtc->state) { Loading Loading @@ -3996,15 +3984,7 @@ static void sde_crtc_disable(struct drm_crtc *crtc) _sde_crtc_flush_event_thread(crtc); _sde_crtc_flush_event_thread(crtc); SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend, SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend, sde_crtc->vblank_requested, crtc->state->active, crtc->state->enable); crtc->state->active, crtc->state->enable); if (sde_crtc->enabled && !sde_crtc->suspend && sde_crtc->vblank_requested) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, false); if (ret) SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); } sde_crtc->enabled = false; sde_crtc->enabled = false; /* Try to disable uidle */ /* Try to disable uidle */ Loading Loading @@ -4116,8 +4096,7 @@ static void sde_crtc_enable(struct drm_crtc *crtc, drm_crtc_vblank_on(crtc); drm_crtc_vblank_on(crtc); mutex_lock(&sde_crtc->crtc_lock); mutex_lock(&sde_crtc->crtc_lock); SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend, SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend); sde_crtc->vblank_requested); /* /* * Try to enable uidle (if possible), we do this before the call * Try to enable uidle (if possible), we do this before the call Loading @@ -4144,13 +4123,6 @@ static void sde_crtc_enable(struct drm_crtc *crtc, sde_crtc_frame_event_cb, crtc); sde_crtc_frame_event_cb, crtc); } } if (!sde_crtc->enabled && !sde_crtc->suspend && sde_crtc->vblank_requested) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, true); if (ret) SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); } sde_crtc->enabled = true; sde_crtc->enabled = true; /* update color processing on resume */ /* update color processing on resume */ Loading Loading @@ -4743,14 +4715,13 @@ int sde_crtc_vblank(struct drm_crtc *crtc, bool en) mutex_lock(&sde_crtc->crtc_lock); mutex_lock(&sde_crtc->crtc_lock); SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled, SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled, sde_crtc->suspend, sde_crtc->vblank_requested); sde_crtc->suspend); if (sde_crtc->enabled && !sde_crtc->suspend) { if (sde_crtc->enabled && !sde_crtc->suspend) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en); ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en); if (ret) if (ret) SDE_ERROR("%s vblank enable failed: %d\n", SDE_ERROR("%s vblank enable failed: %d\n", sde_crtc->name, ret); sde_crtc->name, ret); } } sde_crtc->vblank_requested = en; mutex_unlock(&sde_crtc->crtc_lock); mutex_unlock(&sde_crtc->crtc_lock); return 0; return 0; Loading Loading @@ -5463,8 +5434,6 @@ static int _sde_debugfs_status_show(struct seq_file *s, void *data) sde_crtc->vblank_cb_time = ktime_set(0, 0); sde_crtc->vblank_cb_time = ktime_set(0, 0); } } seq_printf(s, "vblank_enable:%d\n", sde_crtc->vblank_requested); mutex_unlock(&sde_crtc->crtc_lock); mutex_unlock(&sde_crtc->crtc_lock); return 0; return 0; Loading
msm/sde/sde_crtc.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -224,7 +224,6 @@ struct sde_crtc_misr_info { * @vblank_last_cb_time : ktime at last vblank notification * @vblank_last_cb_time : ktime at last vblank notification * @sysfs_dev : sysfs device node for crtc * @sysfs_dev : sysfs device node for crtc * @vsync_event_sf : vsync event notifier sysfs device * @vsync_event_sf : vsync event notifier sysfs device * @vblank_requested : whether the user has requested vblank events * @suspend : whether or not a suspend operation is in progress * @suspend : whether or not a suspend operation is in progress * @enabled : whether the SDE CRTC is currently enabled. updated in the * @enabled : whether the SDE CRTC is currently enabled. updated in the * commit-thread, not state-swap time which is earlier, so * commit-thread, not state-swap time which is earlier, so Loading Loading @@ -294,7 +293,6 @@ struct sde_crtc { struct sde_crtc_fps_info fps_info; struct sde_crtc_fps_info fps_info; struct device *sysfs_dev; struct device *sysfs_dev; struct kernfs_node *vsync_event_sf; struct kernfs_node *vsync_event_sf; bool vblank_requested; bool suspend; bool suspend; bool enabled; bool enabled; Loading