diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 17 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp_mst.c | 4 |
2 files changed, 13 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 8761513f3532..c9af34861d9e 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c | |||
| @@ -2708,7 +2708,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder, | |||
| 2708 | if (port != PORT_A || INTEL_GEN(dev_priv) >= 9) | 2708 | if (port != PORT_A || INTEL_GEN(dev_priv) >= 9) |
| 2709 | intel_dp_stop_link_train(intel_dp); | 2709 | intel_dp_stop_link_train(intel_dp); |
| 2710 | 2710 | ||
| 2711 | intel_ddi_enable_pipe_clock(crtc_state); | 2711 | if (!is_mst) |
| 2712 | intel_ddi_enable_pipe_clock(crtc_state); | ||
| 2712 | } | 2713 | } |
| 2713 | 2714 | ||
| 2714 | static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder, | 2715 | static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder, |
| @@ -2810,14 +2811,14 @@ static void intel_ddi_post_disable_dp(struct intel_encoder *encoder, | |||
| 2810 | bool is_mst = intel_crtc_has_type(old_crtc_state, | 2811 | bool is_mst = intel_crtc_has_type(old_crtc_state, |
| 2811 | INTEL_OUTPUT_DP_MST); | 2812 | INTEL_OUTPUT_DP_MST); |
| 2812 | 2813 | ||
| 2813 | intel_ddi_disable_pipe_clock(old_crtc_state); | 2814 | if (!is_mst) { |
| 2814 | 2815 | intel_ddi_disable_pipe_clock(old_crtc_state); | |
| 2815 | /* | 2816 | /* |
| 2816 | * Power down sink before disabling the port, otherwise we end | 2817 | * Power down sink before disabling the port, otherwise we end |
| 2817 | * up getting interrupts from the sink on detecting link loss. | 2818 | * up getting interrupts from the sink on detecting link loss. |
| 2818 | */ | 2819 | */ |
| 2819 | if (!is_mst) | ||
| 2820 | intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); | 2820 | intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); |
| 2821 | } | ||
| 2821 | 2822 | ||
| 2822 | intel_disable_ddi_buf(encoder); | 2823 | intel_disable_ddi_buf(encoder); |
| 2823 | 2824 | ||
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index 7e3e01607643..4ecd65375603 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c | |||
| @@ -166,6 +166,8 @@ static void intel_mst_post_disable_dp(struct intel_encoder *encoder, | |||
| 166 | struct intel_connector *connector = | 166 | struct intel_connector *connector = |
| 167 | to_intel_connector(old_conn_state->connector); | 167 | to_intel_connector(old_conn_state->connector); |
| 168 | 168 | ||
| 169 | intel_ddi_disable_pipe_clock(old_crtc_state); | ||
| 170 | |||
| 169 | /* this can fail */ | 171 | /* this can fail */ |
| 170 | drm_dp_check_act_status(&intel_dp->mst_mgr); | 172 | drm_dp_check_act_status(&intel_dp->mst_mgr); |
| 171 | /* and this can also fail */ | 173 | /* and this can also fail */ |
| @@ -252,6 +254,8 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder, | |||
| 252 | I915_WRITE(DP_TP_STATUS(port), temp); | 254 | I915_WRITE(DP_TP_STATUS(port), temp); |
| 253 | 255 | ||
| 254 | ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); | 256 | ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); |
| 257 | |||
| 258 | intel_ddi_enable_pipe_clock(pipe_config); | ||
| 255 | } | 259 | } |
| 256 | 260 | ||
| 257 | static void intel_mst_enable_dp(struct intel_encoder *encoder, | 261 | static void intel_mst_enable_dp(struct intel_encoder *encoder, |
