Signed-off-by: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_hdmi.c | 58 +++++++++++++++++++++++----------------
 1 file changed, 35 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index 76994dc033a3..9efc3dd62a00 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -345,14 +345,15 @@ static void hsw_write_infoframe(struct drm_encoder 
*encoder,
        const uint32_t *data = frame;
        struct drm_device *dev = encoder->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-       u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config->cpu_transcoder);
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(encoder->crtc->state);
+       u32 ctl_reg = HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder);
        u32 data_reg;
        int i;
        u32 val = I915_READ(ctl_reg);
 
        data_reg = hsw_infoframe_data_reg(type,
-                                         intel_crtc->config->cpu_transcoder,
+                                         pipe_config->cpu_transcoder,
                                          dev_priv);
        if (data_reg == 0)
                return;
@@ -380,7 +381,9 @@ static bool hsw_infoframe_enabled(struct drm_encoder 
*encoder)
        struct drm_device *dev = encoder->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-       u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config->cpu_transcoder);
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(intel_crtc->base.state);
+       u32 ctl_reg = HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder);
        u32 val = I915_READ(ctl_reg);
 
        return val & (VIDEO_DIP_ENABLE_AVI_HSW | VIDEO_DIP_ENABLE_SPD_HSW |
@@ -430,7 +433,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder 
*encoder,
                                         struct drm_display_mode *adjusted_mode)
 {
        struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(encoder->crtc->state);
        union hdmi_infoframe frame;
        int ret;
 
@@ -445,7 +449,7 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder 
*encoder,
        }
 
        if (intel_hdmi->rgb_quant_range_selectable) {
-               if (intel_crtc->config->limited_color_range)
+               if (pipe_config->limited_color_range)
                        frame.avi.quantization_range =
                                HDMI_QUANTIZATION_RANGE_LIMITED;
                else
@@ -679,9 +683,10 @@ static void hsw_set_infoframes(struct drm_encoder *encoder,
                               struct drm_display_mode *adjusted_mode)
 {
        struct drm_i915_private *dev_priv = encoder->dev->dev_private;
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(encoder->crtc->state);
        struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
-       u32 reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config->cpu_transcoder);
+       u32 reg = HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder);
        u32 val = I915_READ(reg);
 
        assert_hdmi_port_disabled(intel_hdmi);
@@ -709,7 +714,9 @@ static void intel_hdmi_prepare(struct intel_encoder 
*encoder)
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
        struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
-       struct drm_display_mode *adjusted_mode = 
&crtc->config->base.adjusted_mode;
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(crtc->base.state);
+       struct drm_display_mode *adjusted_mode = 
&pipe_config->base.adjusted_mode;
        u32 hdmi_val;
 
        hdmi_val = SDVO_ENCODING_HDMI;
@@ -720,12 +727,12 @@ static void intel_hdmi_prepare(struct intel_encoder 
*encoder)
        if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
                hdmi_val |= SDVO_HSYNC_ACTIVE_HIGH;
 
-       if (crtc->config->pipe_bpp > 24)
+       if (pipe_config->pipe_bpp > 24)
                hdmi_val |= HDMI_COLOR_FORMAT_12bpc;
        else
                hdmi_val |= SDVO_COLOR_FORMAT_8bpc;
 
-       if (crtc->config->has_hdmi_sink)
+       if (pipe_config->has_hdmi_sink)
                hdmi_val |= HDMI_MODE_SELECT_HDMI;
 
        if (HAS_PCH_CPT(dev))
@@ -819,11 +826,13 @@ static void intel_enable_hdmi(struct intel_encoder 
*encoder)
        struct drm_device *dev = encoder->base.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(intel_crtc->base.state);
        struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
        u32 temp;
        u32 enable_bits = SDVO_ENABLE;
 
-       if (intel_crtc->config->has_audio)
+       if (pipe_config->has_audio)
                enable_bits |= SDVO_AUDIO_ENABLE;
 
        temp = I915_READ(intel_hdmi->hdmi_reg);
@@ -854,8 +863,8 @@ static void intel_enable_hdmi(struct intel_encoder *encoder)
                POSTING_READ(intel_hdmi->hdmi_reg);
        }
 
-       if (intel_crtc->config->has_audio) {
-               WARN_ON(!intel_crtc->config->has_hdmi_sink);
+       if (pipe_config->has_audio) {
+               WARN_ON(!pipe_config->has_hdmi_sink);
                DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n",
                                 pipe_name(intel_crtc->pipe));
                intel_audio_codec_enable(encoder);
@@ -1267,14 +1276,15 @@ done:
 static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
 {
        struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
-       struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(encoder->base.crtc->state);
        struct drm_display_mode *adjusted_mode =
-               &intel_crtc->config->base.adjusted_mode;
+               &pipe_config->base.adjusted_mode;
 
        intel_hdmi_prepare(encoder);
 
        intel_hdmi->set_infoframes(&encoder->base,
-                                  intel_crtc->config->has_hdmi_sink,
+                                  pipe_config->has_hdmi_sink,
                                   adjusted_mode);
 }
 
@@ -1286,8 +1296,10 @@ static void vlv_hdmi_pre_enable(struct intel_encoder 
*encoder)
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_crtc *intel_crtc =
                to_intel_crtc(encoder->base.crtc);
+       struct intel_crtc_state *pipe_config =
+               to_intel_crtc_state(intel_crtc->base.state);
        struct drm_display_mode *adjusted_mode =
-               &intel_crtc->config->base.adjusted_mode;
+               &pipe_config->base.adjusted_mode;
        enum dpio_channel port = vlv_dport_to_channel(dport);
        int pipe = intel_crtc->pipe;
        u32 val;
@@ -1319,7 +1331,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder 
*encoder)
        mutex_unlock(&dev_priv->dpio_lock);
 
        intel_hdmi->set_infoframes(&encoder->base,
-                                  intel_crtc->config->has_hdmi_sink,
+                                  pipe_config->has_hdmi_sink,
                                   adjusted_mode);
 
        intel_enable_hdmi(encoder);
@@ -1531,13 +1543,13 @@ static void chv_hdmi_pre_enable(struct intel_encoder 
*encoder)
        }
 
        /* Data lane stagger programming */
-       if (intel_crtc->config->port_clock > 270000)
+       if (pipe_config->port_clock > 270000)
                stagger = 0x18;
-       else if (intel_crtc->config->port_clock > 135000)
+       else if (pipe_config->port_clock > 135000)
                stagger = 0xd;
-       else if (intel_crtc->config->port_clock > 67500)
+       else if (pipe_config->port_clock > 67500)
                stagger = 0x7;
-       else if (intel_crtc->config->port_clock > 33750)
+       else if (pipe_config->port_clock > 33750)
                stagger = 0x4;
        else
                stagger = 0x2;
-- 
2.1.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to