diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2014-11-07 08:18:45 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-11-14 04:29:19 -0500 |
commit | 2d72f6c7be9cd26485f88961f6a56fae3d9d17e9 (patch) | |
tree | 60b58af15ee2d193825f59262a2a367287191b94 /drivers/gpu/drm/i915/intel_panel.c | |
parent | 23ec0a8835f38c6e43570b54a786e058a9b9a268 (diff) |
drm/i915: Skip .get_backlight() when backlight isn't enabled
On VLV/CHV when the display is off, we can't read out the current
backlight level from the hardware since we have no pipe to do so.
Currently we end up reading a bigus register due to passing
INVALID_PIPE to VLV_BLC_PWM_CTL().
Skip the entire .get_backlight() call if the backlight isn't enabled
according to backlight.enabled.
This problem can be reproduced simply by reading the backlight device
actual_brightness file while the display is off.
Cc: Jani Nikula <jani.nikula@intel.com>
Suggested-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_panel.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index ef646b139c4e..4ec6c2feef42 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c | |||
@@ -539,12 +539,15 @@ static u32 intel_panel_get_backlight(struct intel_connector *connector) | |||
539 | { | 539 | { |
540 | struct drm_device *dev = connector->base.dev; | 540 | struct drm_device *dev = connector->base.dev; |
541 | struct drm_i915_private *dev_priv = dev->dev_private; | 541 | struct drm_i915_private *dev_priv = dev->dev_private; |
542 | u32 val; | 542 | struct intel_panel *panel = &connector->panel; |
543 | u32 val = 0; | ||
543 | 544 | ||
544 | mutex_lock(&dev_priv->backlight_lock); | 545 | mutex_lock(&dev_priv->backlight_lock); |
545 | 546 | ||
546 | val = dev_priv->display.get_backlight(connector); | 547 | if (panel->backlight.enabled) { |
547 | val = intel_panel_compute_brightness(connector, val); | 548 | val = dev_priv->display.get_backlight(connector); |
549 | val = intel_panel_compute_brightness(connector, val); | ||
550 | } | ||
548 | 551 | ||
549 | mutex_unlock(&dev_priv->backlight_lock); | 552 | mutex_unlock(&dev_priv->backlight_lock); |
550 | 553 | ||