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-backli...@.service.xml | 11 ++++++++++- > src/backlight/backlight.c | 5 ++++- > 2 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/man/systemd-backli...@.service.xml > b/man/systemd-backli...@.service.xml > index 453afbf..4105685 100644 > --- a/man/systemd-backli...@.service.xml > +++ b/man/systemd-backli...@.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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/systemd-devel _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel