drm/i915/skl: Allow Y (and Yf) frame buffer creation
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Fri, 27 Feb 2015 11:15:24 +0000 (11:15 +0000)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 27 Feb 2015 17:10:56 +0000 (18:10 +0100)
By this patch all underlying bits have been implemented and this
patch actually enables the feature.

v2: Validate passed in fb modifiers to reject garbage. (Daniel Vetter)
v3: Rearrange validation checks per code review comments. (Daniel Vetter)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> (v1)
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index a9e15cfe9857da1f513eb40bd26af75df63d4ad0..7298796847f60685d8c8a2b7f0c9f1dfcf88d1f9 100644 (file)
@@ -12808,8 +12808,21 @@ static int intel_framebuffer_init(struct drm_device *dev,
                }
        }
 
-       if (mode_cmd->modifier[0] == I915_FORMAT_MOD_Y_TILED) {
-               DRM_DEBUG("hardware does not support tiling Y\n");
+       /* Passed in modifier sanity checking. */
+       switch (mode_cmd->modifier[0]) {
+       case I915_FORMAT_MOD_Y_TILED:
+       case I915_FORMAT_MOD_Yf_TILED:
+               if (INTEL_INFO(dev)->gen < 9) {
+                       DRM_DEBUG("Unsupported tiling 0x%llx!\n",
+                                 mode_cmd->modifier[0]);
+                       return -EINVAL;
+               }
+       case DRM_FORMAT_MOD_NONE:
+       case I915_FORMAT_MOD_X_TILED:
+               break;
+       default:
+               DRM_ERROR("Unsupported fb modifier 0x%llx!\n",
+                               mode_cmd->modifier[0]);
                return -EINVAL;
        }