|
@@ -2809,16 +2809,6 @@ static void intel_disable_dp(struct intel_encoder *encoder,
|
|
|
static void g4x_disable_dp(struct intel_encoder *encoder,
|
|
|
const struct intel_crtc_state *old_crtc_state,
|
|
|
const struct drm_connector_state *old_conn_state)
|
|
|
-{
|
|
|
- intel_disable_dp(encoder, old_crtc_state, old_conn_state);
|
|
|
-
|
|
|
- /* disable the port before the pipe on g4x */
|
|
|
- intel_dp_link_down(encoder, old_crtc_state);
|
|
|
-}
|
|
|
-
|
|
|
-static void ilk_disable_dp(struct intel_encoder *encoder,
|
|
|
- const struct intel_crtc_state *old_crtc_state,
|
|
|
- const struct drm_connector_state *old_conn_state)
|
|
|
{
|
|
|
intel_disable_dp(encoder, old_crtc_state, old_conn_state);
|
|
|
}
|
|
@@ -2834,13 +2824,19 @@ static void vlv_disable_dp(struct intel_encoder *encoder,
|
|
|
intel_disable_dp(encoder, old_crtc_state, old_conn_state);
|
|
|
}
|
|
|
|
|
|
-static void ilk_post_disable_dp(struct intel_encoder *encoder,
|
|
|
+static void g4x_post_disable_dp(struct intel_encoder *encoder,
|
|
|
const struct intel_crtc_state *old_crtc_state,
|
|
|
const struct drm_connector_state *old_conn_state)
|
|
|
{
|
|
|
struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
|
|
|
enum port port = encoder->port;
|
|
|
|
|
|
+ /*
|
|
|
+ * Bspec does not list a specific disable sequence for g4x DP.
|
|
|
+ * Follow the ilk+ sequence (disable pipe before the port) for
|
|
|
+ * g4x DP as it does not suffer from underruns like the normal
|
|
|
+ * g4x modeset sequence (disable pipe after the port).
|
|
|
+ */
|
|
|
intel_dp_link_down(encoder, old_crtc_state);
|
|
|
|
|
|
/* Only ilk+ has port A */
|
|
@@ -6456,15 +6452,11 @@ bool intel_dp_init(struct drm_i915_private *dev_priv,
|
|
|
intel_encoder->enable = vlv_enable_dp;
|
|
|
intel_encoder->disable = vlv_disable_dp;
|
|
|
intel_encoder->post_disable = vlv_post_disable_dp;
|
|
|
- } else if (INTEL_GEN(dev_priv) >= 5) {
|
|
|
- intel_encoder->pre_enable = g4x_pre_enable_dp;
|
|
|
- intel_encoder->enable = g4x_enable_dp;
|
|
|
- intel_encoder->disable = ilk_disable_dp;
|
|
|
- intel_encoder->post_disable = ilk_post_disable_dp;
|
|
|
} else {
|
|
|
intel_encoder->pre_enable = g4x_pre_enable_dp;
|
|
|
intel_encoder->enable = g4x_enable_dp;
|
|
|
intel_encoder->disable = g4x_disable_dp;
|
|
|
+ intel_encoder->post_disable = g4x_post_disable_dp;
|
|
|
}
|
|
|
|
|
|
intel_dig_port->dp.output_reg = output_reg;
|