drm: add connector info/property for non-desktop displays [v2]
[linux-2.6-microblaze.git] / drivers / gpu / drm / drm_connector.c
index 704fc89..25f4b2e 100644 (file)
@@ -234,6 +234,10 @@ int drm_connector_init(struct drm_device *dev,
                                   config->link_status_property,
                                   0);
 
+       drm_object_attach_property(&connector->base,
+                                  config->non_desktop_property,
+                                  0);
+
        if (drm_core_check_feature(dev, DRIVER_ATOMIC)) {
                drm_object_attach_property(&connector->base, config->prop_crtc_id, 0);
        }
@@ -763,6 +767,10 @@ DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
  *      value of link-status is "GOOD". If something fails during or after modeset,
  *      the kernel driver may set this to "BAD" and issue a hotplug uevent. Drivers
  *      should update this value using drm_mode_connector_set_link_status_property().
+ * non_desktop:
+ *     Indicates the output should be ignored for purposes of displaying a
+ *     standard desktop environment or console. This is most likely because
+ *     the output device is not rectilinear.
  *
  * Connectors also have one standardized atomic property:
  *
@@ -811,6 +819,11 @@ int drm_connector_create_standard_properties(struct drm_device *dev)
                return -ENOMEM;
        dev->mode_config.link_status_property = prop;
 
+       prop = drm_property_create_bool(dev, DRM_MODE_PROP_IMMUTABLE, "non-desktop");
+       if (!prop)
+               return -ENOMEM;
+       dev->mode_config.non_desktop_property = prop;
+
        return 0;
 }
 
@@ -1194,6 +1207,10 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector,
        if (edid)
                size = EDID_LENGTH * (1 + edid->extensions);
 
+       drm_object_property_set_value(&connector->base,
+                                     dev->mode_config.non_desktop_property,
+                                     connector->display_info.non_desktop);
+
        ret = drm_property_replace_global_blob(dev,
                                               &connector->edid_blob_ptr,
                                               size,