Skip to content

Commit afb2c44

Browse files
committed
drm/i915/ddi: Push pipe clock enabling to encoders
On ICL the pipe clock needs to be enabled before setting the HDMI infoframe, but these steps are in the reverse order atm. Move the pipe clock enabling to the encoders, so reordering of the two steps can be done in a clean way. No functional change. v2: - Rebased on drm-tip. Cc: Vandita Kulkarni <[email protected]> Cc: Paulo Zanoni <[email protected]> Cc: Ville Syrjälä <[email protected]> Signed-off-by: Imre Deak <[email protected]> Reviewed-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 24a2817 commit afb2c44

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

drivers/gpu/drm/i915/intel_crt.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@ static void hsw_post_disable_crt(struct intel_encoder *encoder,
232232
{
233233
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
234234

235+
intel_ddi_disable_pipe_clock(old_crtc_state);
236+
235237
pch_post_disable_crt(encoder, old_crtc_state, old_conn_state);
236238

237239
lpt_disable_pch_transcoder(dev_priv);
@@ -268,6 +270,8 @@ static void hsw_pre_enable_crt(struct intel_encoder *encoder,
268270
intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, false);
269271

270272
dev_priv->display.fdi_link_train(crtc, crtc_state);
273+
274+
intel_ddi_enable_pipe_clock(crtc_state);
271275
}
272276

273277
static void hsw_enable_crt(struct intel_encoder *encoder,

drivers/gpu/drm/i915/intel_ddi.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2639,6 +2639,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
26392639
intel_dp_start_link_train(intel_dp);
26402640
if (port != PORT_A || INTEL_GEN(dev_priv) >= 9)
26412641
intel_dp_stop_link_train(intel_dp);
2642+
2643+
intel_ddi_enable_pipe_clock(crtc_state);
26422644
}
26432645

26442646
static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
@@ -2672,6 +2674,8 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
26722674
intel_dig_port->set_infoframes(&encoder->base,
26732675
crtc_state->has_infoframe,
26742676
crtc_state, conn_state);
2677+
2678+
intel_ddi_enable_pipe_clock(crtc_state);
26752679
}
26762680

26772681
static void intel_ddi_pre_enable(struct intel_encoder *encoder,
@@ -2738,6 +2742,8 @@ static void intel_ddi_post_disable_dp(struct intel_encoder *encoder,
27382742
bool is_mst = intel_crtc_has_type(old_crtc_state,
27392743
INTEL_OUTPUT_DP_MST);
27402744

2745+
intel_ddi_disable_pipe_clock(old_crtc_state);
2746+
27412747
/*
27422748
* Power down sink before disabling the port, otherwise we end
27432749
* up getting interrupts from the sink on detecting link loss.
@@ -2763,6 +2769,8 @@ static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder,
27632769
struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
27642770
struct intel_hdmi *intel_hdmi = &dig_port->hdmi;
27652771

2772+
intel_ddi_disable_pipe_clock(old_crtc_state);
2773+
27662774
intel_disable_ddi_buf(encoder);
27672775

27682776
dig_port->set_infoframes(&encoder->base, false,

drivers/gpu/drm/i915/intel_display.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5647,9 +5647,6 @@ static void haswell_crtc_enable(struct intel_crtc_state *pipe_config,
56475647

56485648
intel_encoders_pre_enable(crtc, pipe_config, old_state);
56495649

5650-
if (!transcoder_is_dsi(cpu_transcoder))
5651-
intel_ddi_enable_pipe_clock(pipe_config);
5652-
56535650
if (intel_crtc_has_dp_encoder(intel_crtc->config))
56545651
intel_dp_set_m_n(intel_crtc, M1_N1);
56555652

@@ -5836,9 +5833,6 @@ static void haswell_crtc_disable(struct intel_crtc_state *old_crtc_state,
58365833
else
58375834
ironlake_pfit_disable(intel_crtc, false);
58385835

5839-
if (!transcoder_is_dsi(cpu_transcoder))
5840-
intel_ddi_disable_pipe_clock(old_crtc_state);
5841-
58425836
intel_encoders_post_disable(crtc, old_crtc_state, old_state);
58435837

58445838
if (INTEL_GEN(dev_priv) >= 11)

0 commit comments

Comments
 (0)