[systemd-devel] [PATCH] backlight: let udev properties override clamping

Zbigniew Jędrzejewski-Szmek zbyszek at in.waw.pl
Sat Jan 31 20:30:12 PST 2015


On Wed, Jan 28, 2015 at 11:51:47PM +0200, Topi Miettinen wrote:
> On my computer, the minimum brightness enforced by clamping in
> backlight is too bright.
> 
> Let udev property ID_BACKLIGHT_CLAMP control whether the brightness
> is clamped or not.
> ---
>  man/systemd-backlight at .service.xml | 11 ++++++++++-
>  src/backlight/backlight.c          |  5 ++++-
>  2 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/man/systemd-backlight at .service.xml b/man/systemd-backlight at .service.xml
> index 453afbf..4105685 100644
> --- a/man/systemd-backlight at .service.xml
> +++ b/man/systemd-backlight at .service.xml
> @@ -58,7 +58,16 @@
>                  is a service that restores the display backlight
>                  brightness at early boot and saves it at shutdown. On
>                  disk, the backlight brightness is stored in
> -                <filename>/var/lib/systemd/backlight/</filename>.</para>
> +                <filename>/var/lib/systemd/backlight/</filename>. During
> +                loading, if udev property ID_BACKLIGHT_CLAMP is not
> +                present or is set to <literal>1</literal>, the
> +                brightness is clamped to at least value
> +                <literal>1</literal> or 5% of maximum brightness. This
> +                is to avoid an unpowered display due to poor API
> +                design in kernel (unfixed as of 2015-01-28) that does
> +                not allow user space to know the difference between
> +                lowest brightness and powering off the
> +                backlight.</para>
Since you're going to submit a new version anyway, please reword this bit.
Maybe something like this:

  During loading, if udev property <option>ID_BACKLIGHT_CLAMP<option>
  is not set to a false value, brightness is clamped to a value of at
  least 1 or 5% of the maximum brightness, whichever is greater. This
  restriction will be removed when the kernel allows user space to
  reliably set a brightness value which does not turn off the display.

Zbyszek

>          </refsect1>
>  
>          <refsect1>
> diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
> index 1271a66..df53b75 100644
> --- a/src/backlight/backlight.c
> +++ b/src/backlight/backlight.c
> @@ -373,6 +373,7 @@ int main(int argc, char *argv[]) {
>  
>          if (streq(argv[1], "load")) {
>                  _cleanup_free_ char *value = NULL;
> +                const char *clamp;
>  
>                  if (!shall_restore_state())
>                          return EXIT_SUCCESS;
> @@ -390,7 +391,9 @@ int main(int argc, char *argv[]) {
>                          return EXIT_FAILURE;
>                  }
>  
> -                clamp_brightness(device, &value, max_brightness);
> +                clamp = udev_device_get_property_value(device, "ID_BACKLIGHT_CLAMP");
> +                if (clamp == NULL || streq(clamp, "1"))
> +                        clamp_brightness(device, &value, max_brightness);
>  
>                  r = udev_device_set_sysattr_value(device, "brightness", value);
>                  if (r < 0) {
> -- 
> 2.1.4
> 
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


More information about the systemd-devel mailing list