From cfb57245a5f63f7ec1a0063f6ff464dda85182bf Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Wed, 20 Feb 2013 21:03:22 +0100 Subject: [PATCH] drm/i915: Fix sdvo connector get_hw_state function The active output is only the currently selected one, which does not imply that it's actually enabled. Since we don't use the sdvo encoder side dpms support, we need to check whether the chip-side sdvo port is enabled instead. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60138 Signed-off-by: Daniel Vetter --- drivers/gpu/drm/i915/intel_sdvo.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 33b46d9..0e55bee 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -1219,11 +1219,15 @@ static bool intel_sdvo_connector_get_hw_state(struct intel_connector *connector) struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(&connector->base); struct intel_sdvo *intel_sdvo = intel_attached_sdvo(&connector->base); + struct drm_i915_private *dev_priv = intel_sdvo->base.base.dev->dev_private; u16 active_outputs; + u32 tmp; + tmp = I915_READ(intel_sdvo->sdvo_reg); intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); - if (active_outputs & intel_sdvo_connector->output_flag) + if ((active_outputs & intel_sdvo_connector->output_flag) && + (tmp & SDVO_ENABLE)) return true; else return false; -- 1.7.10.4