diff options
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 2de362be885a..6d22128d97b1 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -6613,6 +6613,10 @@ i9xx_get_initial_plane_config(struct intel_crtc *crtc, | |||
6613 | struct drm_framebuffer *fb; | 6613 | struct drm_framebuffer *fb; |
6614 | struct intel_framebuffer *intel_fb; | 6614 | struct intel_framebuffer *intel_fb; |
6615 | 6615 | ||
6616 | val = I915_READ(DSPCNTR(plane)); | ||
6617 | if (!(val & DISPLAY_PLANE_ENABLE)) | ||
6618 | return; | ||
6619 | |||
6616 | intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); | 6620 | intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); |
6617 | if (!intel_fb) { | 6621 | if (!intel_fb) { |
6618 | DRM_DEBUG_KMS("failed to alloc fb\n"); | 6622 | DRM_DEBUG_KMS("failed to alloc fb\n"); |
@@ -6621,8 +6625,6 @@ i9xx_get_initial_plane_config(struct intel_crtc *crtc, | |||
6621 | 6625 | ||
6622 | fb = &intel_fb->base; | 6626 | fb = &intel_fb->base; |
6623 | 6627 | ||
6624 | val = I915_READ(DSPCNTR(plane)); | ||
6625 | |||
6626 | if (INTEL_INFO(dev)->gen >= 4) | 6628 | if (INTEL_INFO(dev)->gen >= 4) |
6627 | if (val & DISPPLANE_TILED) | 6629 | if (val & DISPPLANE_TILED) |
6628 | plane_config->tiling = I915_TILING_X; | 6630 | plane_config->tiling = I915_TILING_X; |
@@ -7655,6 +7657,9 @@ skylake_get_initial_plane_config(struct intel_crtc *crtc, | |||
7655 | fb = &intel_fb->base; | 7657 | fb = &intel_fb->base; |
7656 | 7658 | ||
7657 | val = I915_READ(PLANE_CTL(pipe, 0)); | 7659 | val = I915_READ(PLANE_CTL(pipe, 0)); |
7660 | if (!(val & PLANE_CTL_ENABLE)) | ||
7661 | goto error; | ||
7662 | |||
7658 | if (val & PLANE_CTL_TILED_MASK) | 7663 | if (val & PLANE_CTL_TILED_MASK) |
7659 | plane_config->tiling = I915_TILING_X; | 7664 | plane_config->tiling = I915_TILING_X; |
7660 | 7665 | ||
@@ -7743,6 +7748,10 @@ ironlake_get_initial_plane_config(struct intel_crtc *crtc, | |||
7743 | struct drm_framebuffer *fb; | 7748 | struct drm_framebuffer *fb; |
7744 | struct intel_framebuffer *intel_fb; | 7749 | struct intel_framebuffer *intel_fb; |
7745 | 7750 | ||
7751 | val = I915_READ(DSPCNTR(pipe)); | ||
7752 | if (!(val & DISPLAY_PLANE_ENABLE)) | ||
7753 | return; | ||
7754 | |||
7746 | intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); | 7755 | intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); |
7747 | if (!intel_fb) { | 7756 | if (!intel_fb) { |
7748 | DRM_DEBUG_KMS("failed to alloc fb\n"); | 7757 | DRM_DEBUG_KMS("failed to alloc fb\n"); |
@@ -7751,8 +7760,6 @@ ironlake_get_initial_plane_config(struct intel_crtc *crtc, | |||
7751 | 7760 | ||
7752 | fb = &intel_fb->base; | 7761 | fb = &intel_fb->base; |
7753 | 7762 | ||
7754 | val = I915_READ(DSPCNTR(pipe)); | ||
7755 | |||
7756 | if (INTEL_INFO(dev)->gen >= 4) | 7763 | if (INTEL_INFO(dev)->gen >= 4) |
7757 | if (val & DISPPLANE_TILED) | 7764 | if (val & DISPPLANE_TILED) |
7758 | plane_config->tiling = I915_TILING_X; | 7765 | plane_config->tiling = I915_TILING_X; |