Commit b76cf76bfa76246c8acce104de8f2fdd001069fb

Authored by Jani Nikula
Committed by Daniel Vetter
1 parent ab1f90f966

drm/i915: rearrange vlv hdmi enable and pre_enable callbacks

VLV wants encoder enabling before the pipe is up. This is currently
achieved through calling the ->enable callback early, right after the
->pre_enable callback, in valleyview_crtc_enable(). This loses both the
distinction between ->pre_enable and ->enable on VLV and the possibility
to use a hook at the end of the modeset sequence.

Rearrange the HDMI callbacks to make it possible to move ->enable call
later. Basically do everything in ->pre_enable on VLV, and make ->enable
a NOP.

There should be no functional changes.

v2: Rebase.

v3: Explain why this is needed in the commit message (Chris).

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Showing 1 changed file with 11 additions and 9 deletions Side-by-side Diff

drivers/gpu/drm/i915/intel_hdmi.c
... ... @@ -718,14 +718,10 @@
718 718 I915_WRITE(intel_hdmi->hdmi_reg, temp);
719 719 POSTING_READ(intel_hdmi->hdmi_reg);
720 720 }
  721 +}
721 722  
722   - if (IS_VALLEYVIEW(dev)) {
723   - struct intel_digital_port *dport =
724   - enc_to_dig_port(&encoder->base);
725   - int channel = vlv_dport_to_channel(dport);
726   -
727   - vlv_wait_port_ready(dev_priv, channel);
728   - }
  723 +static void vlv_enable_hdmi(struct intel_encoder *encoder)
  724 +{
729 725 }
730 726  
731 727 static void intel_disable_hdmi(struct intel_encoder *encoder)
... ... @@ -1051,6 +1047,10 @@
1051 1047 vlv_dpio_write(dev_priv, DPIO_PCS_CLOCKBUF8(port),
1052 1048 0x00400888);
1053 1049 mutex_unlock(&dev_priv->dpio_lock);
  1050 +
  1051 + intel_enable_hdmi(encoder);
  1052 +
  1053 + vlv_wait_port_ready(dev_priv, port);
1054 1054 }
1055 1055  
1056 1056 static void intel_hdmi_pre_pll_enable(struct intel_encoder *encoder)
1057 1057  
1058 1058  
1059 1059  
... ... @@ -1231,14 +1231,16 @@
1231 1231  
1232 1232 intel_encoder->compute_config = intel_hdmi_compute_config;
1233 1233 intel_encoder->mode_set = intel_hdmi_mode_set;
1234   - intel_encoder->enable = intel_enable_hdmi;
1235 1234 intel_encoder->disable = intel_disable_hdmi;
1236 1235 intel_encoder->get_hw_state = intel_hdmi_get_hw_state;
1237 1236 intel_encoder->get_config = intel_hdmi_get_config;
1238 1237 if (IS_VALLEYVIEW(dev)) {
1239   - intel_encoder->pre_enable = intel_hdmi_pre_enable;
1240 1238 intel_encoder->pre_pll_enable = intel_hdmi_pre_pll_enable;
  1239 + intel_encoder->pre_enable = intel_hdmi_pre_enable;
  1240 + intel_encoder->enable = vlv_enable_hdmi;
1241 1241 intel_encoder->post_disable = intel_hdmi_post_disable;
  1242 + } else {
  1243 + intel_encoder->enable = intel_enable_hdmi;
1242 1244 }
1243 1245  
1244 1246 intel_encoder->type = INTEL_OUTPUT_HDMI;