All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: write backlight harder
@ 2013-02-06 10:24 Daniel Vetter
  2013-02-06 11:12 ` Takashi Iwai
  2013-02-06 12:29 ` [Intel-gfx] " Jani Nikula
  0 siblings, 2 replies; 4+ messages in thread
From: Daniel Vetter @ 2013-02-06 10:24 UTC (permalink / raw)
  To: Intel Graphics Development; +Cc: Daniel Vetter, stable, Takashi Iwai

770c12312ad617172b1a65b911d3e6564fc5aca8 is the first bad commit
commit 770c12312ad617172b1a65b911d3e6564fc5aca8
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Aug 11 08:56:42 2012 +0200

    drm/i915: Fix blank panel at reopening lid

changed the register write sequence for restoring the backlight, which
helped prevent non-working backlights on some machines. Turns out that
the original sequence was the right thing to do for a different set of
machines. Worse, setting the backlight level _after_ enabling it seems
to reset it somehow. So we need to make that one conditional upon the
backlight having been reset to zero, and add the old one back.

Cargo-culting at it's best, but it seems to work.

Cc: stable@vger.kernel.org
Cc: Takashi Iwai <tiwai@suse.de>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47941
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/i915/intel_panel.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index bee8cb6..a3730e0 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -321,6 +321,9 @@ void intel_panel_enable_backlight(struct drm_device *dev,
 	if (dev_priv->backlight_level == 0)
 		dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
 
+	dev_priv->backlight_enabled = true;
+	intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
+
 	if (INTEL_INFO(dev)->gen >= 4) {
 		uint32_t reg, tmp;
 
@@ -356,12 +359,12 @@ void intel_panel_enable_backlight(struct drm_device *dev,
 	}
 
 set_level:
-	/* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1.
-	 * BLC_PWM_CPU_CTL may be cleared to zero automatically when these
-	 * registers are set.
+	/* Check the current backlight level and try to set again if it's zero.
+	 * On some machines, BLC_PWM_CPU_CTL is cleared to zero automatically
+	 * when BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1 are written.
 	 */
-	dev_priv->backlight_enabled = true;
-	intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
+	if (!intel_panel_get_backlight(dev))
+		intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
 }
 
 static void intel_panel_init_backlight(struct drm_device *dev)
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] drm/i915: write backlight harder
  2013-02-06 10:24 [PATCH] drm/i915: write backlight harder Daniel Vetter
@ 2013-02-06 11:12 ` Takashi Iwai
  2013-02-06 12:29 ` [Intel-gfx] " Jani Nikula
  1 sibling, 0 replies; 4+ messages in thread
From: Takashi Iwai @ 2013-02-06 11:12 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: Intel Graphics Development, stable

At Wed,  6 Feb 2013 11:24:41 +0100,
Daniel Vetter wrote:
> 
> 770c12312ad617172b1a65b911d3e6564fc5aca8 is the first bad commit
> commit 770c12312ad617172b1a65b911d3e6564fc5aca8
> Author: Takashi Iwai <tiwai@suse.de>
> Date:   Sat Aug 11 08:56:42 2012 +0200
> 
>     drm/i915: Fix blank panel at reopening lid
> 
> changed the register write sequence for restoring the backlight, which
> helped prevent non-working backlights on some machines. Turns out that
> the original sequence was the right thing to do for a different set of
> machines. Worse, setting the backlight level _after_ enabling it seems
> to reset it somehow. So we need to make that one conditional upon the
> backlight having been reset to zero, and add the old one back.
> 
> Cargo-culting at it's best, but it seems to work.
> 
> Cc: stable@vger.kernel.org
> Cc: Takashi Iwai <tiwai@suse.de>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47941
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Feel free to take:
	Acked-by: Takashi Iwai <tiwai@suse.de>


thanks,

Takashi

> ---
>  drivers/gpu/drm/i915/intel_panel.c |   13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index bee8cb6..a3730e0 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -321,6 +321,9 @@ void intel_panel_enable_backlight(struct drm_device *dev,
>  	if (dev_priv->backlight_level == 0)
>  		dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
>  
> +	dev_priv->backlight_enabled = true;
> +	intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
> +
>  	if (INTEL_INFO(dev)->gen >= 4) {
>  		uint32_t reg, tmp;
>  
> @@ -356,12 +359,12 @@ void intel_panel_enable_backlight(struct drm_device *dev,
>  	}
>  
>  set_level:
> -	/* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1.
> -	 * BLC_PWM_CPU_CTL may be cleared to zero automatically when these
> -	 * registers are set.
> +	/* Check the current backlight level and try to set again if it's zero.
> +	 * On some machines, BLC_PWM_CPU_CTL is cleared to zero automatically
> +	 * when BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1 are written.
>  	 */
> -	dev_priv->backlight_enabled = true;
> -	intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
> +	if (!intel_panel_get_backlight(dev))
> +		intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
>  }
>  
>  static void intel_panel_init_backlight(struct drm_device *dev)
> -- 
> 1.7.10.4
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915: write backlight harder
  2013-02-06 10:24 [PATCH] drm/i915: write backlight harder Daniel Vetter
  2013-02-06 11:12 ` Takashi Iwai
@ 2013-02-06 12:29 ` Jani Nikula
  2013-02-06 12:41   ` Daniel Vetter
  1 sibling, 1 reply; 4+ messages in thread
From: Jani Nikula @ 2013-02-06 12:29 UTC (permalink / raw)
  To: Intel Graphics Development; +Cc: Takashi Iwai, Daniel Vetter, stable

On Wed, 06 Feb 2013, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> 770c12312ad617172b1a65b911d3e6564fc5aca8 is the first bad commit
> commit 770c12312ad617172b1a65b911d3e6564fc5aca8
> Author: Takashi Iwai <tiwai@suse.de>
> Date:   Sat Aug 11 08:56:42 2012 +0200
>
>     drm/i915: Fix blank panel at reopening lid
>
> changed the register write sequence for restoring the backlight, which
> helped prevent non-working backlights on some machines. Turns out that
> the original sequence was the right thing to do for a different set of
> machines. Worse, setting the backlight level _after_ enabling it seems
> to reset it somehow. So we need to make that one conditional upon the
> backlight having been reset to zero, and add the old one back.
>
> Cargo-culting at it's best, but it seems to work.
>
> Cc: stable@vger.kernel.org
> Cc: Takashi Iwai <tiwai@suse.de>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47941
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/i915/intel_panel.c |   13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index bee8cb6..a3730e0 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -321,6 +321,9 @@ void intel_panel_enable_backlight(struct drm_device *dev,
>  	if (dev_priv->backlight_level == 0)
>  		dev_priv->backlight_level = intel_panel_get_max_backlight(dev);
>  
> +	dev_priv->backlight_enabled = true;
> +	intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
> +
>  	if (INTEL_INFO(dev)->gen >= 4) {
>  		uint32_t reg, tmp;
>  
> @@ -356,12 +359,12 @@ void intel_panel_enable_backlight(struct drm_device *dev,
>  	}
>  
>  set_level:
> -	/* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1.
> -	 * BLC_PWM_CPU_CTL may be cleared to zero automatically when these
> -	 * registers are set.
> +	/* Check the current backlight level and try to set again if it's zero.
> +	 * On some machines, BLC_PWM_CPU_CTL is cleared to zero automatically
> +	 * when BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1 are written.
>  	 */
> -	dev_priv->backlight_enabled = true;
> -	intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);
> +	if (!intel_panel_get_backlight(dev))
> +		intel_panel_actually_set_backlight(dev, dev_priv->backlight_level);

Given how much pain the backlight keeps giving us, do you think we would
benefit from sticking a DRM_DEBUG_DRIVER in the if block there?

Either way, with a heavy *sigh*,
Reviewed-by: Jani Nikula <jani.nikula@intel.com>

>  }
>  
>  static void intel_panel_init_backlight(struct drm_device *dev)
> -- 
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915: write backlight harder
  2013-02-06 12:29 ` [Intel-gfx] " Jani Nikula
@ 2013-02-06 12:41   ` Daniel Vetter
  0 siblings, 0 replies; 4+ messages in thread
From: Daniel Vetter @ 2013-02-06 12:41 UTC (permalink / raw)
  To: Jani Nikula; +Cc: Intel Graphics Development, Takashi Iwai, stable

On Wed, Feb 6, 2013 at 1:29 PM, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> Given how much pain the backlight keeps giving us, do you think we would
> benefit from sticking a DRM_DEBUG_DRIVER in the if block there?
>
> Either way, with a heavy *sigh*,
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>

Merged to dinq, thanks for the review.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-02-06 12:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-06 10:24 [PATCH] drm/i915: write backlight harder Daniel Vetter
2013-02-06 11:12 ` Takashi Iwai
2013-02-06 12:29 ` [Intel-gfx] " Jani Nikula
2013-02-06 12:41   ` Daniel Vetter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.