drm/i915: check TRANSCODER_EDP on intel_modeset_setup_hw_state
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Wed, 24 Oct 2012 18:09:25 +0000 (16:09 -0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 26 Oct 2012 08:24:47 +0000 (10:24 +0200)
We need to check if any of the pipes is using TRANSCODER_EDP.

V2: DDI_BUF_CTL was renamed, so fix the usage here.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_display.c

index f51b5eee30c5e4090d3f91f297f1598a5c6c1706..d89dda02777b2a4ab5725d83c373f3e103eed5cc 100644 (file)
@@ -8690,6 +8690,31 @@ void intel_modeset_setup_hw_state(struct drm_device *dev)
        struct intel_encoder *encoder;
        struct intel_connector *connector;
 
+       if (IS_HASWELL(dev)) {
+               tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP));
+
+               if (tmp & TRANS_DDI_FUNC_ENABLE) {
+                       switch (tmp & TRANS_DDI_EDP_INPUT_MASK) {
+                       case TRANS_DDI_EDP_INPUT_A_ON:
+                       case TRANS_DDI_EDP_INPUT_A_ONOFF:
+                               pipe = PIPE_A;
+                               break;
+                       case TRANS_DDI_EDP_INPUT_B_ONOFF:
+                               pipe = PIPE_B;
+                               break;
+                       case TRANS_DDI_EDP_INPUT_C_ONOFF:
+                               pipe = PIPE_C;
+                               break;
+                       }
+
+                       crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
+                       crtc->cpu_transcoder = TRANSCODER_EDP;
+
+                       DRM_DEBUG_KMS("Pipe %c using transcoder EDP\n",
+                                     pipe_name(pipe));
+               }
+       }
+
        for_each_pipe(pipe) {
                crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);