Skip to content

Commit

Permalink
drm/i915: Eliminate lots of WARNs when there's no backlight present
Browse files Browse the repository at this point in the history
My 855gm doesn't register the intel backlight but it still ends up
calling the backlight code to enable/disable the backlight via the
LVDS code. This leads to some WARNs due to backlight.max being 0.

Let's have intel_panel_enable_backlight() and intel_panel_disable_backlight()
check whether there's a backlight present or not.

Also move the backlight.present check from asle_set_backlight() into
intel_panel_set_backlight() for some extra symmetry.

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>
  • Loading branch information
Ville Syrjälä authored and Daniel Vetter committed Jan 22, 2014
1 parent bfbdb42 commit dc5a436
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 11 deletions.
10 changes: 2 additions & 8 deletions drivers/gpu/drm/i915/intel_opregion.c
Original file line number Diff line number Diff line change
Expand Up @@ -396,9 +396,7 @@ int intel_opregion_notify_adapter(struct drm_device *dev, pci_power_t state)
static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
{
struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_connector *connector;
struct intel_connector *intel_connector;
struct intel_panel *panel;
struct opregion_asle __iomem *asle = dev_priv->opregion.asle;

DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp);
Expand All @@ -417,12 +415,8 @@ static u32 asle_set_backlight(struct drm_device *dev, u32 bclp)
* only one).
*/
DRM_DEBUG_KMS("updating opregion backlight %d/255\n", bclp);
list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
intel_connector = to_intel_connector(connector);
panel = &intel_connector->panel;
if (panel->backlight.present)
intel_panel_set_backlight(intel_connector, bclp, 255);
}
list_for_each_entry(intel_connector, &dev->mode_config.connector_list, base.head)
intel_panel_set_backlight(intel_connector, bclp, 255);
iowrite32(DIV_ROUND_UP(bclp * 100, 255) | ASLE_CBLV_VALID, &asle->cblv);

mutex_unlock(&dev->mode_config.mutex);
Expand Down
6 changes: 3 additions & 3 deletions drivers/gpu/drm/i915/intel_panel.c
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ void intel_panel_set_backlight(struct intel_connector *connector, u32 level,
u32 freq;
unsigned long flags;

if (pipe == INVALID_PIPE)
if (!panel->backlight.present || pipe == INVALID_PIPE)
return;

spin_lock_irqsave(&dev_priv->backlight_lock, flags);
Expand Down Expand Up @@ -579,7 +579,7 @@ void intel_panel_disable_backlight(struct intel_connector *connector)
enum pipe pipe = intel_get_pipe_from_connector(connector);
unsigned long flags;

if (pipe == INVALID_PIPE)
if (!panel->backlight.present || pipe == INVALID_PIPE)
return;

/*
Expand Down Expand Up @@ -782,7 +782,7 @@ void intel_panel_enable_backlight(struct intel_connector *connector)
enum pipe pipe = intel_get_pipe_from_connector(connector);
unsigned long flags;

if (pipe == INVALID_PIPE)
if (!panel->backlight.present || pipe == INVALID_PIPE)
return;

DRM_DEBUG_KMS("pipe %c\n", pipe_name(pipe));
Expand Down

0 comments on commit dc5a436

Please sign in to comment.