summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/display/intel_sprite.c
diff options
context:
space:
mode:
authorManasi Navare <manasi.d.navare@intel.com>2021-01-22 15:26:40 -0800
committerManasi Navare <manasi.d.navare@intel.com>2021-01-25 15:23:17 -0800
commit13c6d51f530dcea38ae71d54e29b3507615e8b4b (patch)
treed27385d5ec36420dca5a648b39b4bfb9840132b9 /drivers/gpu/drm/i915/display/intel_sprite.c
parentaa52b39dc554de07ef7a9eb5c80b487ebbde7e7c (diff)
downloadlinux-stable-13c6d51f530dcea38ae71d54e29b3507615e8b4b.tar.gz
linux-stable-13c6d51f530dcea38ae71d54e29b3507615e8b4b.tar.bz2
linux-stable-13c6d51f530dcea38ae71d54e29b3507615e8b4b.zip
drm/i915/display/vrr: Send VRR push to flip the frame
VRR achieves vblank stretching using the HW PUSH functionality. So once the VRR is enabled during modeset then for each flip request from userspace, in the atomic tail pipe_update_end() we need to set the VRR push bit in HW for it to terminate the vblank at configured flipline or anytime after flipline or latest at the Vmax. The HW clears the PUSH bit after the double buffer updates are completed. v2: * Move send push to after irq en (Manasi) * Call send push unconditionally (Jani N) v3: * Stall w.r.t Vrr vmax (Manasi, Gary Smith) v4: * Remove the rmw (Ville) Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Gary Smith <gary.k.smith@intel.com> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210122232647.22688-11-manasi.d.navare@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_sprite.c')
-rw-r--r--drivers/gpu/drm/i915/display/intel_sprite.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c
index ae8124fdf7de..7b7b57622b45 100644
--- a/drivers/gpu/drm/i915/display/intel_sprite.c
+++ b/drivers/gpu/drm/i915/display/intel_sprite.c
@@ -50,6 +50,7 @@
#include "intel_dsi.h"
#include "intel_sprite.h"
#include "i9xx_plane.h"
+#include "intel_vrr.h"
int intel_usecs_to_scanlines(const struct drm_display_mode *adjusted_mode,
int usecs)
@@ -266,6 +267,9 @@ void intel_pipe_update_end(struct intel_crtc_state *new_crtc_state)
local_irq_enable();
+ /* Send VRR Push to terminate Vblank */
+ intel_vrr_send_push(new_crtc_state);
+
if (intel_vgpu_active(dev_priv))
return;