All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: rafael.barbalho@intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Correctly read backlight PWM for pipe B on vlv/chv
Date: Tue, 29 Jul 2014 16:13:04 +0300	[thread overview]
Message-ID: <20140729131304.GX27580@intel.com> (raw)
In-Reply-To: <1406637880-6918-1-git-send-email-rafael.barbalho@intel.com>

On Tue, Jul 29, 2014 at 01:44:40PM +0100, rafael.barbalho@intel.com wrote:
> From: Rafael Barbalho <rafael.barbalho@intel.com>
> 
> Make the vlv/chv backlight setup more generic by actually looking at which
> pipe the panel is attached to and read the backlight PWM registers that were
> setup by the bios from that pipe.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Rafael Barbalho <rafael.barbalho@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_panel.c | 24 ++++++++++--------------
>  1 file changed, 10 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index 59b028f..be75d76 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -1200,32 +1200,28 @@ static int vlv_setup_backlight(struct intel_connector *connector)
>  	struct drm_device *dev = connector->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	struct intel_panel *panel = &connector->panel;
> -	enum pipe pipe;
> +	enum pipe pipe = intel_get_pipe_from_connector(connector);

This won't work unless the connector is already enabled.

The power sequencer has a similar problem where we have to somehow deduce
the correct pipe. vlv_power_sequencer_pipe() tries to guess the correct pipe
there.

We could start with intel_get_pipe_from_connector() and if that fails we'd
do something like vlv_power_sequencer_pipe(). Hmm, except the backlight
registers don't have the port information, so I guess we'd need to pick the
pipe simply based on the DP port control register.

>  	u32 ctl, ctl2, val;
>  
> -	for_each_pipe(pipe) {
> -		u32 cur_val = I915_READ(VLV_BLC_PWM_CTL(pipe));
> +	ctl2 = I915_READ(VLV_BLC_PWM_CTL2(pipe));
> +	panel->backlight.active_low_pwm = ctl2 & BLM_POLARITY_I965;
>  
> -		/* Skip if the modulation freq is already set */
> -		if (cur_val & ~BACKLIGHT_DUTY_CYCLE_MASK)
> -			continue;
> +	ctl = I915_READ(VLV_BLC_PWM_CTL(pipe));
>  
> -		cur_val &= BACKLIGHT_DUTY_CYCLE_MASK;
> -		I915_WRITE(VLV_BLC_PWM_CTL(pipe), (0xf42 << 16) |
> -			   cur_val);
> +	/* Skip if the modulation freq is already set */
> +	if ((ctl & ~BACKLIGHT_DUTY_CYCLE_MASK) == 0) {
> +		ctl &= BACKLIGHT_DUTY_CYCLE_MASK;
> +		ctl |= (0xf42 << 16);
> +		I915_WRITE(VLV_BLC_PWM_CTL(pipe), ctl);
>  	}
>  
> -	ctl2 = I915_READ(VLV_BLC_PWM_CTL2(PIPE_A));
> -	panel->backlight.active_low_pwm = ctl2 & BLM_POLARITY_I965;
> -
> -	ctl = I915_READ(VLV_BLC_PWM_CTL(PIPE_A));
>  	panel->backlight.max = ctl >> 16;
>  	if (!panel->backlight.max)
>  		return -ENODEV;
>  
>  	panel->backlight.min = get_backlight_min_vbt(connector);
>  
> -	val = _vlv_get_backlight(dev, PIPE_A);
> +	val = _vlv_get_backlight(dev, pipe);
>  	panel->backlight.level = intel_panel_compute_brightness(connector, val);
>  
>  	panel->backlight.enabled = (ctl2 & BLM_PWM_ENABLE) &&
> -- 
> 2.0.3

-- 
Ville Syrjälä
Intel OTC

  reply	other threads:[~2014-07-29 13:13 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-29 12:44 [PATCH] drm/i915: Correctly read backlight PWM for pipe B on vlv/chv rafael.barbalho
2014-07-29 13:13 ` Ville Syrjälä [this message]
2014-07-29 13:38   ` Barbalho, Rafael
2014-07-29 14:02     ` Barbalho, Rafael

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140729131304.GX27580@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=rafael.barbalho@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.