public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Hans de Goede <hdegoede@redhat.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] backlight: Don't read back backlight setting	from kernel on DPMS off
Date: Thu, 05 Jun 2014 17:01:23 +0300	[thread overview]
Message-ID: <8761kfe9qk.fsf@intel.com> (raw)
In-Reply-To: <1401976118-8780-1-git-send-email-hdegoede@redhat.com>

On Thu, 05 Jun 2014, Hans de Goede <hdegoede@redhat.com> wrote:
> We've several reports from users where the backlight comes up turned off
> on starting X, when using video.use_native_backlight=1 (true dmi quirks, will
> be the default for 3.16), in combination with having an external display
> plugged in:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1032978
> https://bugzilla.redhat.com/show_bug.cgi?id=1103806
>
> This seems to be caused by /sys/class/backlight/intel_backlight/brightness
> reading back 0 when re-initializing the outputs. Unlike
> /sys/class/backlight/acpi_video0/brightness which is used without the
> video.use_native_backlight=1 param, which keeps returning the value from before
>
> Here is an excerpt from Xorg.log when this happens:
>
> [28225]: (II) intel(0): resizing framebuffer to 3286x1080
> [28225]: (II) intel(0): switch to mode 1366x768@59.8 on pipe 0 using LVDS1, position (0, 0), rotation normal
> [28225]: (II) intel(0): switch to mode 1920x1080@60.0 on pipe 0 using HDMI2, position (1366, 0), rotation normal
> [28225]: (II) intel(0): DPMS off mode 3, saved backlight level 0
> ^^^ This is an extra debug line I added, mode == the mode parameter to
>  xxx_output_dpms_backlight, saved backlight level is the value of
>  backlight_active_level after the xxx_output_backlight_get call.
>
> Note how backlight_active_level becomes 0 here.
>
> [28225]: (II) intel(0): switch to mode 1366x768@59.8 on pipe 1 using LVDS1, position (0, 0), rotation normal
> [28225]: (II) intel(0): DPMS on mode 0, setting backlight to 0
>
> And here we restore the backlight to backlight_active_level which now is 0.
>
> This commit fixes this by not reading back the backlight setting from the
> kernel on DPMS off.

I'm not at all familiar with the code base you're changing, and I'm just
speculating here, but this seems a little odd.

My guess is that the sna_output_backlight_get and/or
intel_output_backlight_get functions read the actual_brightness sysfs
file, which reads back the value from hardware. This is the contract for
backlight class device. The acpi video implementation returns the cached
value if there's no BQC or BCQ method.

I think perhaps either the current brightness should be read before
switching off the output, or the brightness sysfs file should be used
(which returns the cached current value). Or, perhaps, your patch is the
right answer, as I think we should save the value across disable/enable
anyway.

Chris?

BR,
Jani.


>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  src/sna/sna_display.c   | 3 ---
>  src/uxa/intel_display.c | 3 ---
>  2 files changed, 6 deletions(-)
>
> diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
> index 13dbf64..c9d4b08 100644
> --- a/src/sna/sna_display.c
> +++ b/src/sna/sna_display.c
> @@ -2323,9 +2323,6 @@ sna_output_dpms_backlight(xf86OutputPtr output, int oldmode, int mode)
>  			sna_output_backlight_set(output,
>  						   sna_output->backlight_active_level);
>  	} else {
> -		/* Only save the current backlight value if we're going from on to off. */
> -		if (oldmode == DPMSModeOn)
> -			sna_output->backlight_active_level = sna_output_backlight_get(output);
>  		sna_output_backlight_set(output, 0);
>  	}
>  }
> diff --git a/src/uxa/intel_display.c b/src/uxa/intel_display.c
> index 95ddcc8..62902f4 100644
> --- a/src/uxa/intel_display.c
> +++ b/src/uxa/intel_display.c
> @@ -963,9 +963,6 @@ intel_output_dpms_backlight(xf86OutputPtr output, int oldmode, int mode)
>  			intel_output_backlight_set(output,
>  						   intel_output->backlight_active_level);
>  	} else {
> -		/* Only save the current backlight value if we're going from on to off. */
> -		if (oldmode == DPMSModeOn)
> -			intel_output->backlight_active_level = intel_output_backlight_get(output);
>  		intel_output_backlight_set(output, 0);
>  	}
>  }
> -- 
> 2.0.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Technology Center

  reply	other threads:[~2014-06-05 14:01 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-05 13:48 [PATCH] backlight: Don't read back backlight setting from kernel on DPMS off Hans de Goede
2014-06-05 14:01 ` Jani Nikula [this message]
2014-06-05 14:29   ` Chris Wilson
2014-06-05 19:08     ` Hans de Goede
2014-06-05 20:24       ` Chris Wilson
2014-06-06 14:37         ` Hans de Goede
2014-06-06 14:51           ` Chris Wilson
2014-06-07 10:18             ` Hans de Goede
2014-06-07 11:12               ` Chris Wilson
2014-06-13  8:49                 ` Hans de Goede
2014-06-13  9:00                   ` Chris Wilson
2014-06-06 14:39         ` Hans de Goede

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=8761kfe9qk.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=hdegoede@redhat.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox