Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1483253

[PATCH 6/8] drm/rockchip: Do not enable vblank without event

From Tomasz Figa <tfiga@chromium.org>
Newsgroups linux.kernel
Subject [PATCH 6/8] drm/rockchip: Do not enable vblank without event
Date 2016-09-14 15:00 +0200
Message-ID <shhXc-ZP-23@gated-at.bofh.it> (permalink)
References <shhXb-ZP-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Originally we needed to enable vblank for any atomic commit to kick the
PSR machine, but that was changed and we no longer need to do so from
a vblank interrupt. Let's return to original behavior of enabling
vblank only if it is really necessary.

This essentially reverts commit 5b6804034ae9 ("drm/rockchip: Enable
vblank without event").

Signed-off-by: Tomasz Figa <tfiga@chromium.org>
---
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index af9ddbe..bb7a865 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -116,7 +116,6 @@ struct vop {
 	struct device *dev;
 	struct drm_device *drm_dev;
 	bool is_enabled;
-	bool vblank_active;
 
 	/* mutex vsync_ work */
 	struct mutex vsync_mutex;
@@ -1135,11 +1134,10 @@ static void vop_crtc_atomic_begin(struct drm_crtc *crtc,
 	rockchip_drm_psr_flush(crtc);
 
 	spin_lock_irq(&crtc->dev->event_lock);
-	vop->vblank_active = true;
-	WARN_ON(drm_crtc_vblank_get(crtc) != 0);
-	WARN_ON(vop->event);
-
 	if (crtc->state->event) {
+		WARN_ON(drm_crtc_vblank_get(crtc) != 0);
+		WARN_ON(vop->event);
+
 		vop->event = crtc->state->event;
 		crtc->state->event = NULL;
 	}
@@ -1236,12 +1234,8 @@ static void vop_handle_vblank(struct vop *vop)
 	spin_lock_irqsave(&drm->event_lock, flags);
 	if (vop->event) {
 		drm_crtc_send_vblank_event(crtc, vop->event);
-		vop->event = NULL;
-
-	}
-	if (vop->vblank_active) {
-		vop->vblank_active = false;
 		drm_crtc_vblank_put(crtc);
+		vop->event = NULL;
 	}
 	spin_unlock_irqrestore(&drm->event_lock, flags);
 
@@ -1518,7 +1512,6 @@ static int vop_initial(struct vop *vop)
 	clk_disable(vop->aclk);
 
 	vop->is_enabled = false;
-	vop->vblank_active = false;
 
 	return 0;
 
-- 
2.8.0.rc3.226.g39d4020

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 0/8] drm/rockchip: Flip wait clean-up Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  [PATCH 8/8] drm/rockchip: Kill vop_plane_state Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  [PATCH 3/8] drm/rockchip: Avoid race with vblank count increment Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  [PATCH 2/8] drm/rockchip: Get rid of some unnecessary code Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
    Re: [PATCH 2/8] drm/rockchip: Get rid of some unnecessary code Mark yao <mark.yao@rock-chips.com> - 2016-09-18 04:00 +0200
      Re: [PATCH 2/8] drm/rockchip: Get rid of some unnecessary code Tomasz Figa <tfiga@chromium.org> - 2016-09-18 06:10 +0200
        Re: [PATCH 2/8] drm/rockchip: Get rid of some unnecessary code Mark yao <mark.yao@rock-chips.com> - 2016-09-20 03:40 +0200
  [PATCH 6/8] drm/rockchip: Do not enable vblank without event Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  [PATCH 5/8] drm/rockchip: Replace custom wait_for_vblanks with helper Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  [PATCH 7/8] drm/rockchip: Always signal event in next vblank after cfg_done Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  [PATCH 1/8] drm/rockchip: Clear interrupt status bits before enabling Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  [PATCH 4/8] drm/rockchip: Unreference framebuffers from flip work Tomasz Figa <tfiga@chromium.org> - 2016-09-14 15:00 +0200
  Re: [PATCH 0/8] drm/rockchip: Flip wait clean-up Sean Paul <seanpaul@chromium.org> - 2016-09-15 16:10 +0200

csiph-web