summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorTvrtko Ursulin2015-02-27 12:15:24 +0100
committerDaniel Vetter2015-02-27 18:10:56 +0100
commit9a8f0a1290993c86c4e35756a2624bfe461f9036 (patch)
tree18fd7331f559a604dd0eff614a7268c9c0cea8c3 /drivers/gpu/drm/i915/intel_display.c
parentdrm/i915/skl: Update watermarks for Y tiling (diff)
downloadkernel-qcow2-linux-9a8f0a1290993c86c4e35756a2624bfe461f9036.tar.gz
kernel-qcow2-linux-9a8f0a1290993c86c4e35756a2624bfe461f9036.tar.xz
kernel-qcow2-linux-9a8f0a1290993c86c4e35756a2624bfe461f9036.zip
drm/i915/skl: Allow Y (and Yf) frame buffer creation
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>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index a9e15cfe9857..7298796847f6 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -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;
}