summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlan Kwong <akwong@codeaurora.org>2016-10-04 09:19:17 -0400
committerGerrit - the friendly Code Review server <code-review@localhost>2016-10-14 10:47:53 -0700
commitc2c5e190b655f650ad909b7fe6fdd37673269b7a (patch)
tree5a0dd6ad4523e5b3cba19bd52bd4b324b6555a04 /drivers/gpu
parent1fb23d7ae1eb4e6a40acf13fa8b713ff95a77e36 (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.c40
-rw-r--r--drivers/gpu/drm/msm/sde/sde_crtc.h2
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];