intel_hdmi_set_hdmi_infoframe(encoder, adjusted_mode);
 }
 
-static void intel_hdmi_mode_set(struct intel_encoder *encoder)
+static void intel_hdmi_prepare(struct intel_encoder *encoder)
 {
        struct drm_device *dev = encoder->base.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct drm_display_mode *adjusted_mode =
                &intel_crtc->config.adjusted_mode;
 
+       intel_hdmi_prepare(encoder);
+
        intel_hdmi->set_infoframes(&encoder->base,
                                   intel_crtc->config.has_hdmi_sink,
                                   adjusted_mode);
        enum dpio_channel port = vlv_dport_to_channel(dport);
        int pipe = intel_crtc->pipe;
 
+       intel_hdmi_prepare(encoder);
+
        /* Program Tx lane resets to default */
        mutex_lock(&dev_priv->dpio_lock);
        vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port),
                         DRM_MODE_ENCODER_TMDS);
 
        intel_encoder->compute_config = intel_hdmi_compute_config;
-       intel_encoder->mode_set = intel_hdmi_mode_set;
        intel_encoder->disable = intel_disable_hdmi;
        intel_encoder->get_hw_state = intel_hdmi_get_hw_state;
        intel_encoder->get_config = intel_hdmi_get_config;