diff options
author | Dave Airlie <airlied@redhat.com> | 2016-06-23 20:32:30 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-06-23 20:32:30 -0400 |
commit | c38e80169befdea4a9438cc6c513794d7c50e88f (patch) | |
tree | 9d5eb4fb27dec203c8dbdbc1347d27017cd9ba06 | |
parent | 718cc664792c4ce436f221fe0e0a26a605308d4b (diff) | |
parent | 1e3fa0acfec677e915d7de5ac6e1f18cfa4f805b (diff) |
Merge tag 'drm-intel-fixes-2016-06-22' of git://anongit.freedesktop.org/drm-intel into drm-fixes
Hi Dave, just a couple of display fixes, both stable stuff. Maybe we'll
be able to enable fbc by default one day.
* tag 'drm-intel-fixes-2016-06-22' of git://anongit.freedesktop.org/drm-intel:
drm/i915/fbc: Disable on HSW by default for now
drm/i915: Revert DisplayPort fast link training feature
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp_link_training.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_fbc.c | 3 |
4 files changed, 3 insertions, 31 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index ffe5f8430957..79cf2d5f5a20 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -4977,9 +4977,6 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) | |||
4977 | intel_display_power_get(dev_priv, power_domain); | 4977 | intel_display_power_get(dev_priv, power_domain); |
4978 | 4978 | ||
4979 | if (long_hpd) { | 4979 | if (long_hpd) { |
4980 | /* indicate that we need to restart link training */ | ||
4981 | intel_dp->train_set_valid = false; | ||
4982 | |||
4983 | intel_dp_long_pulse(intel_dp->attached_connector); | 4980 | intel_dp_long_pulse(intel_dp->attached_connector); |
4984 | if (intel_dp->is_mst) | 4981 | if (intel_dp->is_mst) |
4985 | ret = IRQ_HANDLED; | 4982 | ret = IRQ_HANDLED; |
diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c index 0b8eefc2acc5..60fb39cd220b 100644 --- a/drivers/gpu/drm/i915/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c | |||
@@ -85,8 +85,7 @@ static bool | |||
85 | intel_dp_reset_link_train(struct intel_dp *intel_dp, | 85 | intel_dp_reset_link_train(struct intel_dp *intel_dp, |
86 | uint8_t dp_train_pat) | 86 | uint8_t dp_train_pat) |
87 | { | 87 | { |
88 | if (!intel_dp->train_set_valid) | 88 | memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set)); |
89 | memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set)); | ||
90 | intel_dp_set_signal_levels(intel_dp); | 89 | intel_dp_set_signal_levels(intel_dp); |
91 | return intel_dp_set_link_train(intel_dp, dp_train_pat); | 90 | return intel_dp_set_link_train(intel_dp, dp_train_pat); |
92 | } | 91 | } |
@@ -161,23 +160,6 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp) | |||
161 | break; | 160 | break; |
162 | } | 161 | } |
163 | 162 | ||
164 | /* | ||
165 | * if we used previously trained voltage and pre-emphasis values | ||
166 | * and we don't get clock recovery, reset link training values | ||
167 | */ | ||
168 | if (intel_dp->train_set_valid) { | ||
169 | DRM_DEBUG_KMS("clock recovery not ok, reset"); | ||
170 | /* clear the flag as we are not reusing train set */ | ||
171 | intel_dp->train_set_valid = false; | ||
172 | if (!intel_dp_reset_link_train(intel_dp, | ||
173 | DP_TRAINING_PATTERN_1 | | ||
174 | DP_LINK_SCRAMBLING_DISABLE)) { | ||
175 | DRM_ERROR("failed to enable link training\n"); | ||
176 | return; | ||
177 | } | ||
178 | continue; | ||
179 | } | ||
180 | |||
181 | /* Check to see if we've tried the max voltage */ | 163 | /* Check to see if we've tried the max voltage */ |
182 | for (i = 0; i < intel_dp->lane_count; i++) | 164 | for (i = 0; i < intel_dp->lane_count; i++) |
183 | if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) | 165 | if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) |
@@ -284,7 +266,6 @@ intel_dp_link_training_channel_equalization(struct intel_dp *intel_dp) | |||
284 | /* Make sure clock is still ok */ | 266 | /* Make sure clock is still ok */ |
285 | if (!drm_dp_clock_recovery_ok(link_status, | 267 | if (!drm_dp_clock_recovery_ok(link_status, |
286 | intel_dp->lane_count)) { | 268 | intel_dp->lane_count)) { |
287 | intel_dp->train_set_valid = false; | ||
288 | intel_dp_link_training_clock_recovery(intel_dp); | 269 | intel_dp_link_training_clock_recovery(intel_dp); |
289 | intel_dp_set_link_train(intel_dp, | 270 | intel_dp_set_link_train(intel_dp, |
290 | training_pattern | | 271 | training_pattern | |
@@ -301,7 +282,6 @@ intel_dp_link_training_channel_equalization(struct intel_dp *intel_dp) | |||
301 | 282 | ||
302 | /* Try 5 times, then try clock recovery if that fails */ | 283 | /* Try 5 times, then try clock recovery if that fails */ |
303 | if (tries > 5) { | 284 | if (tries > 5) { |
304 | intel_dp->train_set_valid = false; | ||
305 | intel_dp_link_training_clock_recovery(intel_dp); | 285 | intel_dp_link_training_clock_recovery(intel_dp); |
306 | intel_dp_set_link_train(intel_dp, | 286 | intel_dp_set_link_train(intel_dp, |
307 | training_pattern | | 287 | training_pattern | |
@@ -322,10 +302,8 @@ intel_dp_link_training_channel_equalization(struct intel_dp *intel_dp) | |||
322 | 302 | ||
323 | intel_dp_set_idle_link_train(intel_dp); | 303 | intel_dp_set_idle_link_train(intel_dp); |
324 | 304 | ||
325 | if (channel_eq) { | 305 | if (channel_eq) |
326 | intel_dp->train_set_valid = true; | ||
327 | DRM_DEBUG_KMS("Channel EQ done. DP Training successful\n"); | 306 | DRM_DEBUG_KMS("Channel EQ done. DP Training successful\n"); |
328 | } | ||
329 | } | 307 | } |
330 | 308 | ||
331 | void intel_dp_stop_link_train(struct intel_dp *intel_dp) | 309 | void intel_dp_stop_link_train(struct intel_dp *intel_dp) |
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 4a24b0067a3a..f7f0f01814f6 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -863,8 +863,6 @@ struct intel_dp { | |||
863 | /* This is called before a link training is starterd */ | 863 | /* This is called before a link training is starterd */ |
864 | void (*prepare_link_retrain)(struct intel_dp *intel_dp); | 864 | void (*prepare_link_retrain)(struct intel_dp *intel_dp); |
865 | 865 | ||
866 | bool train_set_valid; | ||
867 | |||
868 | /* Displayport compliance testing */ | 866 | /* Displayport compliance testing */ |
869 | unsigned long compliance_test_type; | 867 | unsigned long compliance_test_type; |
870 | unsigned long compliance_test_data; | 868 | unsigned long compliance_test_data; |
diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c index d5a7cfec589b..647127f3aaff 100644 --- a/drivers/gpu/drm/i915/intel_fbc.c +++ b/drivers/gpu/drm/i915/intel_fbc.c | |||
@@ -824,8 +824,7 @@ static bool intel_fbc_can_choose(struct intel_crtc *crtc) | |||
824 | { | 824 | { |
825 | struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; | 825 | struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; |
826 | struct intel_fbc *fbc = &dev_priv->fbc; | 826 | struct intel_fbc *fbc = &dev_priv->fbc; |
827 | bool enable_by_default = IS_HASWELL(dev_priv) || | 827 | bool enable_by_default = IS_BROADWELL(dev_priv); |
828 | IS_BROADWELL(dev_priv); | ||
829 | 828 | ||
830 | if (intel_vgpu_active(dev_priv->dev)) { | 829 | if (intel_vgpu_active(dev_priv->dev)) { |
831 | fbc->no_fbc_reason = "VGPU is active"; | 830 | fbc->no_fbc_reason = "VGPU is active"; |