Commit c7373764 authored by Imre Deak's avatar Imre Deak

drm/i915/ddi: Set HDMI infoframes with pipe clocks enabled

On ICL for setting the HDMI infoframe the pipe clock needs to be
enabled, otherwise accessing the VIDEO_DIP_CTL register will hang the
machine.

Cc: Vandita Kulkarni <vandita.kulkarni@intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180613170710.15080-5-imre.deak@intel.com
parent 8fc0aa6e
...@@ -2671,11 +2671,11 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder, ...@@ -2671,11 +2671,11 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
if (IS_GEN9_BC(dev_priv)) if (IS_GEN9_BC(dev_priv))
skl_ddi_set_iboost(encoder, level, INTEL_OUTPUT_HDMI); skl_ddi_set_iboost(encoder, level, INTEL_OUTPUT_HDMI);
intel_ddi_enable_pipe_clock(crtc_state);
intel_dig_port->set_infoframes(&encoder->base, intel_dig_port->set_infoframes(&encoder->base,
crtc_state->has_infoframe, crtc_state->has_infoframe,
crtc_state, conn_state); crtc_state, conn_state);
intel_ddi_enable_pipe_clock(crtc_state);
} }
static void intel_ddi_pre_enable(struct intel_encoder *encoder, static void intel_ddi_pre_enable(struct intel_encoder *encoder,
...@@ -2769,13 +2769,13 @@ static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder, ...@@ -2769,13 +2769,13 @@ static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder,
struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base); struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
struct intel_hdmi *intel_hdmi = &dig_port->hdmi; struct intel_hdmi *intel_hdmi = &dig_port->hdmi;
dig_port->set_infoframes(&encoder->base, false,
old_crtc_state, old_conn_state);
intel_ddi_disable_pipe_clock(old_crtc_state); intel_ddi_disable_pipe_clock(old_crtc_state);
intel_disable_ddi_buf(encoder); intel_disable_ddi_buf(encoder);
dig_port->set_infoframes(&encoder->base, false,
old_crtc_state, old_conn_state);
intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain); intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain);
intel_ddi_clk_disable(encoder); intel_ddi_clk_disable(encoder);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment