diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 233e6fd89328..40be1fa65be1 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
| @@ -150,9 +150,21 @@ intel_dp_mode_valid(struct drm_connector *connector, | |||
| 150 | { | 150 | { |
| 151 | struct drm_encoder *encoder = intel_attached_encoder(connector); | 151 | struct drm_encoder *encoder = intel_attached_encoder(connector); |
| 152 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); | 152 | struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder); |
| 153 | struct intel_dp_priv *dp_priv = intel_encoder->dev_priv; | ||
| 154 | struct drm_device *dev = connector->dev; | ||
| 155 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
| 153 | int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_encoder)); | 156 | int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_encoder)); |
| 154 | int max_lanes = intel_dp_max_lane_count(intel_encoder); | 157 | int max_lanes = intel_dp_max_lane_count(intel_encoder); |
| 155 | 158 | ||
| 159 | if ((IS_eDP(intel_encoder) || IS_PCH_eDP(dp_priv)) && | ||
| 160 | dev_priv->panel_fixed_mode) { | ||
| 161 | if (mode->hdisplay > dev_priv->panel_fixed_mode->hdisplay) | ||
| 162 | return MODE_PANEL; | ||
| 163 | |||
| 164 | if (mode->vdisplay > dev_priv->panel_fixed_mode->vdisplay) | ||
| 165 | return MODE_PANEL; | ||
| 166 | } | ||
| 167 | |||
| 156 | /* only refuse the mode on non eDP since we have seen some wierd eDP panels | 168 | /* only refuse the mode on non eDP since we have seen some wierd eDP panels |
| 157 | which are outside spec tolerances but somehow work by magic */ | 169 | which are outside spec tolerances but somehow work by magic */ |
| 158 | if (!IS_eDP(intel_encoder) && | 170 | if (!IS_eDP(intel_encoder) && |
