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;
 
-       if (!(I915_READ(intel_sdvo->sdvo_reg) & SDVO_ENABLE))
-               return false;
-
        intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs);
 
        if (active_outputs & intel_sdvo_connector->output_flag)
        struct drm_device *dev = encoder->base.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base);
+       u16 active_outputs;
        u32 tmp;
 
        tmp = I915_READ(intel_sdvo->sdvo_reg);
+       intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs);
 
-       if (!(tmp & SDVO_ENABLE))
+       if (!(tmp & SDVO_ENABLE) && (active_outputs == 0))
                return false;
 
        if (HAS_PCH_CPT(dev))
        struct intel_sdvo *intel_sdvo;
        u32 hotplug_mask;
        int i;
-
        intel_sdvo = kzalloc(sizeof(struct intel_sdvo), GFP_KERNEL);
        if (!intel_sdvo)
                return false;