diff options
| author | Alan Kwong <akwong@codeaurora.org> | 2016-10-04 09:19:17 -0400 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-10-14 10:47:53 -0700 |
| commit | c2c5e190b655f650ad909b7fe6fdd37673269b7a (patch) | |
| tree | 5a0dd6ad4523e5b3cba19bd52bd4b324b6555a04 /drivers/gpu | |
| parent | 1fb23d7ae1eb4e6a40acf13fa8b713ff95a77e36 (diff) | |
drm/msm/sde: remove redundant vblank request and notification
Vblank is requested twice in sde, once in sde_wait_for_commit_done
and another one in request_pending for each commit cycle. Only one
is required; hence, remove request_pending and associated logics.
Change-Id: I1ca69921abd5f7ab74b8f8900aee52e22efbe350
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_crtc.c | 40 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_crtc.h | 2 |
2 files changed, 4 insertions, 38 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.c b/drivers/gpu/drm/msm/sde/sde_crtc.c index a8ed1daa3706..193ff77f94e4 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.c +++ b/drivers/gpu/drm/msm/sde/sde_crtc.c @@ -351,21 +351,10 @@ static void sde_crtc_vblank_cb(void *data) struct sde_crtc *sde_crtc = to_sde_crtc(crtc); struct sde_kms *sde_kms = get_kms(crtc); struct drm_device *dev = sde_kms->dev; - unsigned pending; - pending = atomic_xchg(&sde_crtc->pending, 0); - - if (pending & PENDING_FLIP) { - complete_flip(crtc, NULL); - /* free ref count paired with the atomic_flush */ - drm_crtc_vblank_put(crtc); - } - - if (atomic_read(&sde_crtc->drm_requested_vblank)) { - drm_handle_vblank(dev, sde_crtc->drm_crtc_id); - DBG_IRQ(""); - MSM_EVT(crtc->dev, crtc->base.id, 0); - } + drm_handle_vblank(dev, sde_crtc->drm_crtc_id); + DBG_IRQ(""); + MSM_EVT(crtc->dev, crtc->base.id, 0); } void sde_crtc_complete_commit(struct drm_crtc *crtc) @@ -566,17 +555,6 @@ static void sde_crtc_atomic_begin(struct drm_crtc *crtc, */ } -static void request_pending(struct drm_crtc *crtc, u32 pending) -{ - struct sde_crtc *sde_crtc = to_sde_crtc(crtc); - - atomic_or(pending, &sde_crtc->pending); - - /* ref count the vblank event and interrupts over the atomic commit */ - if (drm_crtc_vblank_get(crtc)) - return; -} - static void sde_crtc_atomic_flush(struct drm_crtc *crtc, struct drm_crtc_state *old_crtc_state) { @@ -623,8 +601,6 @@ static void sde_crtc_atomic_flush(struct drm_crtc *crtc, drm_atomic_crtc_for_each_plane(plane, crtc) sde_plane_flush(plane); - request_pending(crtc, PENDING_FLIP); - /* Kickoff will be scheduled by outer layer */ } @@ -899,7 +875,6 @@ end: int sde_crtc_vblank(struct drm_crtc *crtc, bool en) { - struct sde_crtc *sde_crtc = to_sde_crtc(crtc); struct drm_encoder *encoder; struct drm_device *dev = crtc->dev; @@ -908,13 +883,7 @@ int sde_crtc_vblank(struct drm_crtc *crtc, bool en) list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { if (encoder->crtc != crtc) continue; - /* - * Mark that framework requested vblank, - * as opposed to enabling vblank only for our internal purposes - * Currently this variable isn't required, but may be useful for - * future features - */ - atomic_set(&sde_crtc->drm_requested_vblank, en); + MSM_EVT(crtc->dev, crtc->base.id, en); if (en) @@ -1190,7 +1159,6 @@ struct drm_crtc *sde_crtc_init(struct drm_device *dev, crtc->dev = dev; sde_crtc->drm_crtc_id = drm_crtc_id; - atomic_set(&sde_crtc->drm_requested_vblank, 0); drm_crtc_init_with_planes(dev, crtc, plane, NULL, &sde_crtc_funcs); diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.h b/drivers/gpu/drm/msm/sde/sde_crtc.h index 4d26d3330c8e..a32800a31369 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.h +++ b/drivers/gpu/drm/msm/sde/sde_crtc.h @@ -77,9 +77,7 @@ struct sde_crtc { /*if there is a pending flip, these will be non-null */ struct drm_pending_vblank_event *event; - atomic_t pending; u32 vsync_count; - atomic_t drm_requested_vblank; struct msm_property_info property_info; struct msm_property_data property_data[CRTC_PROP_COUNT]; |
