drm/i915: Generalize the async flip capability check
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 11 Jan 2021 16:37:04 +0000 (18:37 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 19 Jan 2021 17:13:59 +0000 (19:13 +0200)
Only assign the plane->async_flip() vfunc when the plane supports
async flips. For now we keep this artificially limited to the primary
plane since thats the only thing the legacy page flip uapi can target
and there is no async flip support in the atomic uapi yet.

Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Vandita Kulkarni <vandita.kulkarni@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210111163711.12913-5-ville.syrjala@linux.intel.com
Reviewed-by: Karthik B S <karthik.b.s@intel.com>
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_sprite.c

index b614987..942335b 100644 (file)
@@ -12254,7 +12254,7 @@ static int intel_atomic_check_async(struct intel_atomic_state *state)
                 * this(vlv/chv and icl+) should be added when async flip is
                 * enabled in the atomic IOCTL path.
                 */
-               if (plane->id != PLANE_PRIMARY)
+               if (!plane->async_flip)
                        return -EINVAL;
 
                /*
index cf3589f..e839a77 100644 (file)
@@ -3290,7 +3290,9 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
        plane->get_hw_state = skl_plane_get_hw_state;
        plane->check_plane = skl_plane_check;
        plane->min_cdclk = skl_plane_min_cdclk;
-       plane->async_flip = skl_plane_async_flip;
+
+       if (plane_id == PLANE_PRIMARY)
+               plane->async_flip = skl_plane_async_flip;
 
        if (INTEL_GEN(dev_priv) >= 11)
                formats = icl_get_plane_formats(dev_priv, pipe,