drm/i915: Add the brightness property for SDVO-LVDS
authorZhao Yakui <yakui.zhao@intel.com>
Thu, 10 Sep 2009 07:45:47 +0000 (15:45 +0800)
committerEric Anholt <eric@anholt.net>
Thu, 10 Sep 2009 18:30:32 +0000 (11:30 -0700)
When the sdvo device is detected as SDVO-LVDS, we will check whether the
brightness is supported by issue SDVO enhancement command.
If it is supported, we will add the brightness property and then brightness
can be adjusted.

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/intel_sdvo.c

index ce8c5622d653ccd5b2f11a7188cd8cf9c8b3830d..1f671d96565b354566b584d5ca8994ada5830a45 100644 (file)
@@ -1872,7 +1872,7 @@ void intel_sdvo_destroy_enhance_property(struct drm_connector *connector)
                if (sdvo_priv->hue_property)
                        drm_property_destroy(dev, sdvo_priv->hue_property);
        }
-       if (sdvo_priv->is_tv) {
+       if (sdvo_priv->is_tv || sdvo_priv->is_lvds) {
                if (sdvo_priv->brightness_property)
                        drm_property_destroy(dev,
                                        sdvo_priv->brightness_property);
@@ -1900,7 +1900,7 @@ static void intel_sdvo_destroy(struct drm_connector *connector)
                drm_property_destroy(connector->dev,
                                     sdvo_priv->tv_format_property);
 
-       if (sdvo_priv->is_tv)
+       if (sdvo_priv->is_tv || sdvo_priv->is_lvds)
                intel_sdvo_destroy_enhance_property(connector);
 
        drm_sysfs_connector_remove(connector);
@@ -1940,7 +1940,7 @@ intel_sdvo_set_property(struct drm_connector *connector,
                changed = true;
        }
 
-       if (sdvo_priv->is_tv) {
+       if (sdvo_priv->is_tv || sdvo_priv->is_lvds) {
                cmd = 0;
                temp_value = val;
                if (sdvo_priv->left_property == property) {
@@ -2627,7 +2627,7 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector)
                                        data_value[0], data_value[1], response);
                }
        }
-       if (sdvo_priv->is_tv) {
+       if (sdvo_priv->is_tv || sdvo_priv->is_lvds) {
                if (sdvo_data.brightness) {
                        intel_sdvo_write_cmd(intel_output,
                                SDVO_CMD_GET_MAX_BRIGHTNESS, NULL, 0);
@@ -2750,10 +2750,12 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device)
        drm_encoder_helper_add(&intel_output->enc, &intel_sdvo_helper_funcs);
 
        drm_mode_connector_attach_encoder(&intel_output->base, &intel_output->enc);
-       if (sdvo_priv->is_tv) {
+       if (sdvo_priv->is_tv)
                intel_sdvo_tv_create_property(connector);
+
+       if (sdvo_priv->is_tv || sdvo_priv->is_lvds)
                intel_sdvo_create_enhance_property(connector);
-       }
+
        drm_sysfs_connector_add(connector);
 
        intel_sdvo_select_ddc_bus(sdvo_priv);