drm/nouveau: Put the dithering check back in nouveau_connector_create.
authorFrancisco Jerez <currojerez@riseup.net>
Wed, 16 Jun 2010 13:52:44 +0000 (15:52 +0200)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 13 Jul 2010 00:13:03 +0000 (10:13 +1000)
a7b9f9e5adef dropped it by accident.

Signed-off-by: Francisco Jerez <currojerez@riseup.net>
Tested-by: Thibaut Girka <thib@sitedethib.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_connector.c

index a8c44c9eedf6535189445a718fb76e27bc6cdb71..79190206b398d4dbdefba7d62e70e1dd2e2678f3 100644 (file)
@@ -737,7 +737,7 @@ nouveau_connector_create(struct drm_device *dev,
        struct nouveau_connector *nv_connector = NULL;
        struct drm_connector *connector;
        struct drm_encoder *encoder;
-       int type;
+       int type, ret = 0;
 
        NV_DEBUG_KMS(dev, "\n");
 
@@ -813,9 +813,21 @@ nouveau_connector_create(struct drm_device *dev,
 
        if (!connector->encoder_ids[0]) {
                NV_WARN(dev, "  no encoders, ignoring\n");
-               drm_connector_cleanup(connector);
-               kfree(connector);
-               return 0;
+               goto fail;
+       }
+
+       /* Check if we need dithering enabled */
+       if (dcb->type == DCB_CONNECTOR_LVDS) {
+               bool dummy, is_24bit = false;
+
+               ret = nouveau_bios_parse_lvds_table(dev, 0, &dummy, &is_24bit);
+               if (ret) {
+                       NV_ERROR(dev, "Error parsing LVDS table, disabling "
+                                "LVDS\n");
+                       goto fail;
+               }
+
+               nv_connector->use_dithering = !is_24bit;
        }
 
        /* Init DVI-I specific properties */
@@ -865,4 +877,10 @@ nouveau_connector_create(struct drm_device *dev,
 
        drm_sysfs_connector_add(connector);
        return 0;
+
+fail:
+       drm_connector_cleanup(connector);
+       kfree(connector);
+       return ret;
+
 }