aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/intel_display.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index d01a800f8a36..91631bf354e6 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4143,6 +4143,7 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
4143 struct drm_device *dev = crtc->base.dev; 4143 struct drm_device *dev = crtc->base.dev;
4144 struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode; 4144 struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode;
4145 4145
4146 /* FIXME should check pixel clock limits on all platforms */
4146 if (INTEL_INFO(dev)->gen < 4) { 4147 if (INTEL_INFO(dev)->gen < 4) {
4147 struct drm_i915_private *dev_priv = dev->dev_private; 4148 struct drm_i915_private *dev_priv = dev->dev_private;
4148 int clock_limit = 4149 int clock_limit =
@@ -4156,8 +4157,13 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
4156 * the only reason for the pipe == PIPE_A check? 4157 * the only reason for the pipe == PIPE_A check?
4157 */ 4158 */
4158 if (crtc->pipe == PIPE_A && 4159 if (crtc->pipe == PIPE_A &&
4159 adjusted_mode->clock > clock_limit * 9 / 10) 4160 adjusted_mode->clock > clock_limit * 9 / 10) {
4161 clock_limit *= 2;
4160 pipe_config->double_wide = true; 4162 pipe_config->double_wide = true;
4163 }
4164
4165 if (adjusted_mode->clock > clock_limit * 9 / 10)
4166 return -EINVAL;
4161 } 4167 }
4162 4168
4163 /* Cantiga+ cannot handle modes with a hsync front porch of 0. 4169 /* Cantiga+ cannot handle modes with a hsync front porch of 0.