aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@virtuousgeek.org>2014-04-05 14:51:35 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-04-09 08:48:19 -0400
commit13732ba7493fd4b28568f768ee12497e26a0c8af (patch)
tree655f48728d45a365cd60bbc5d6a8aa1e841c70a6 /drivers/gpu
parent759c85e778f4f99f2f7eaa599c57b0c0ada97d08 (diff)
drm/i915: move infoframe setting to after pll enable v3
Needs to happen after clock is running or it doesn't behave correctly. v2: fix subject (Ville) make it clearer that this occurs in pre_enable (Paulo) misc bikesheds (Paulo) Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index fb9839b0effa..fd940a7e6e2f 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -669,8 +669,6 @@ static void intel_hdmi_mode_set(struct intel_encoder *encoder)
669 669
670 I915_WRITE(intel_hdmi->hdmi_reg, hdmi_val); 670 I915_WRITE(intel_hdmi->hdmi_reg, hdmi_val);
671 POSTING_READ(intel_hdmi->hdmi_reg); 671 POSTING_READ(intel_hdmi->hdmi_reg);
672
673 intel_hdmi->set_infoframes(&encoder->base, adjusted_mode);
674} 672}
675 673
676static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder, 674static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder,
@@ -1115,13 +1113,26 @@ done:
1115 return 0; 1113 return 0;
1116} 1114}
1117 1115
1116static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
1117{
1118 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
1119 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
1120 struct drm_display_mode *adjusted_mode =
1121 &intel_crtc->config.adjusted_mode;
1122
1123 intel_hdmi->set_infoframes(&encoder->base, adjusted_mode);
1124}
1125
1118static void vlv_hdmi_pre_enable(struct intel_encoder *encoder) 1126static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
1119{ 1127{
1120 struct intel_digital_port *dport = enc_to_dig_port(&encoder->base); 1128 struct intel_digital_port *dport = enc_to_dig_port(&encoder->base);
1129 struct intel_hdmi *intel_hdmi = &dport->hdmi;
1121 struct drm_device *dev = encoder->base.dev; 1130 struct drm_device *dev = encoder->base.dev;
1122 struct drm_i915_private *dev_priv = dev->dev_private; 1131 struct drm_i915_private *dev_priv = dev->dev_private;
1123 struct intel_crtc *intel_crtc = 1132 struct intel_crtc *intel_crtc =
1124 to_intel_crtc(encoder->base.crtc); 1133 to_intel_crtc(encoder->base.crtc);
1134 struct drm_display_mode *adjusted_mode =
1135 &intel_crtc->config.adjusted_mode;
1125 enum dpio_channel port = vlv_dport_to_channel(dport); 1136 enum dpio_channel port = vlv_dport_to_channel(dport);
1126 int pipe = intel_crtc->pipe; 1137 int pipe = intel_crtc->pipe;
1127 u32 val; 1138 u32 val;
@@ -1155,6 +1166,8 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
1155 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW23(port), 0x00400888); 1166 vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW23(port), 0x00400888);
1156 mutex_unlock(&dev_priv->dpio_lock); 1167 mutex_unlock(&dev_priv->dpio_lock);
1157 1168
1169 intel_hdmi->set_infoframes(&encoder->base, adjusted_mode);
1170
1158 intel_enable_hdmi(encoder); 1171 intel_enable_hdmi(encoder);
1159 1172
1160 vlv_wait_port_ready(dev_priv, dport); 1173 vlv_wait_port_ready(dev_priv, dport);
@@ -1350,6 +1363,7 @@ void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port)
1350 intel_encoder->enable = vlv_enable_hdmi; 1363 intel_encoder->enable = vlv_enable_hdmi;
1351 intel_encoder->post_disable = vlv_hdmi_post_disable; 1364 intel_encoder->post_disable = vlv_hdmi_post_disable;
1352 } else { 1365 } else {
1366 intel_encoder->pre_enable = intel_hdmi_pre_enable;
1353 intel_encoder->enable = intel_enable_hdmi; 1367 intel_encoder->enable = intel_enable_hdmi;
1354 } 1368 }
1355 1369