summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/arm/malidp_drv.h
diff options
context:
space:
mode:
authorLiviu Dudau <Liviu.Dudau@arm.com>2018-03-01 16:38:02 +0000
committerLiviu Dudau <Liviu.Dudau@arm.com>2018-03-14 11:38:02 +0000
commitd862b2d622530d14072f3ae417a0525fb7361410 (patch)
tree6ce41110c918b40d2cfab3ee41310c126d14f6ad /drivers/gpu/drm/arm/malidp_drv.h
parentf0437819ad82088d4a07732222912345b5b98767 (diff)
downloadlinux-stable-d862b2d622530d14072f3ae417a0525fb7361410.tar.gz
linux-stable-d862b2d622530d14072f3ae417a0525fb7361410.tar.bz2
linux-stable-d862b2d622530d14072f3ae417a0525fb7361410.zip
drm/mali-dp: Fix malidp_atomic_commit_hw_done() for event sending.
Mali DP hardware has a 'go' bit (config_valid) for making the new scene parameters active at the next page flip. The problem with the current code is that the driver first sets this bit and then proceeds to wait for confirmation from the hardware that the configuration has been updated before arming the vblank event. As config_valid is actually asserted by the hardware after the vblank event, during the prefetch phase, when we get to arming the vblank event we are going to send it at the next vblank, in effect halving the vblank rate from the userspace perspective. Fix it by sending the userspace event from the IRQ handler, when we handle the config_valid interrupt, which syncs with the time when the hardware is active with the new parameters. Reported-by: Alexandru-Cosmin Gheorghe <alexandru-cosmin.gheorghe@arm.com> Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Diffstat (limited to 'drivers/gpu/drm/arm/malidp_drv.h')
-rw-r--r--drivers/gpu/drm/arm/malidp_drv.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/arm/malidp_drv.h b/drivers/gpu/drm/arm/malidp_drv.h
index e0d12c9fc6b8..c2375bb49619 100644
--- a/drivers/gpu/drm/arm/malidp_drv.h
+++ b/drivers/gpu/drm/arm/malidp_drv.h
@@ -22,6 +22,7 @@ struct malidp_drm {
struct malidp_hw_device *dev;
struct drm_crtc crtc;
wait_queue_head_t wq;
+ struct drm_pending_vblank_event *event;
atomic_t config_valid;
u32 core_id;
};