From: Paulo Zanoni <[email protected]>

We need to check if any of the pipes is using TRANSCODER_EDP.

Signed-off-by: Paulo Zanoni <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index a3228c1..8c3c131 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8552,6 +8552,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(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]);
 
-- 
1.7.11.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to