From 1edb76c5f5a79cb9f2c90edd4a4af709c284dd4c Mon Sep 17 00:00:00 2001 From: Zhao Yakui Date: Mon, 19 Jul 2010 09:43:14 +0100 Subject: [PATCH] --- yaml --- r: 205165 b: refs/heads/master c: 7de56f43e06ec6e17f548dfb359d395adbfbb87d h: refs/heads/master i: 205163: aacabab47bd11ef264a194f7e7c3b15692638f2d v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/intel_dp.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index cc38e59ff8c7..a4e4dc0453a2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0d3a1beecfa54b938edf3ed046902f072e1e180a +refs/heads/master: 7de56f43e06ec6e17f548dfb359d395adbfbb87d diff --git a/trunk/drivers/gpu/drm/i915/intel_dp.c b/trunk/drivers/gpu/drm/i915/intel_dp.c index 233e6fd89328..40be1fa65be1 100644 --- a/trunk/drivers/gpu/drm/i915/intel_dp.c +++ b/trunk/drivers/gpu/drm/i915/intel_dp.c @@ -150,9 +150,21 @@ intel_dp_mode_valid(struct drm_connector *connector, { struct drm_encoder *encoder = intel_attached_encoder(connector); struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); + struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_encoder)); int max_lanes = intel_dp_max_lane_count(intel_encoder); + if ((IS_eDP(intel_encoder) || IS_PCH_eDP(dp_priv)) && + dev_priv->panel_fixed_mode) { + if (mode->hdisplay > dev_priv->panel_fixed_mode->hdisplay) + return MODE_PANEL; + + if (mode->vdisplay > dev_priv->panel_fixed_mode->vdisplay) + return MODE_PANEL; + } + /* only refuse the mode on non eDP since we have seen some wierd eDP panels which are outside spec tolerances but somehow work by magic */ if (!IS_eDP(intel_encoder) &&