vmwgfx: Let SVGA_REG_NUM_DISPLAYS determine output connectivity
authorThomas Hellstrom <thellstrom@vmware.com>
Wed, 31 Aug 2011 07:13:40 +0000 (07:13 +0000)
committerDave Airlie <airlied@redhat.com>
Thu, 1 Sep 2011 08:37:21 +0000 (09:37 +0100)
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c

index b3a2cd5..7b8115a 100644 (file)
@@ -340,9 +340,16 @@ static enum drm_connector_status
        vmw_ldu_connector_detect(struct drm_connector *connector,
                                 bool force)
 {
-       if (vmw_connector_to_ldu(connector)->pref_active)
-               return connector_status_connected;
-       return connector_status_disconnected;
+       uint32_t num_displays;
+       struct drm_device *dev = connector->dev;
+       struct vmw_private *dev_priv = vmw_priv(dev);
+
+       mutex_lock(&dev_priv->hw_mutex);
+       num_displays = vmw_read(dev_priv, SVGA_REG_NUM_DISPLAYS);
+       mutex_unlock(&dev_priv->hw_mutex);
+
+       return ((vmw_connector_to_ldu(connector)->base.unit < num_displays) ?
+               connector_status_connected : connector_status_disconnected);
 }
 
 static const struct drm_display_mode vmw_ldu_connector_builtin[] = {