|
Zbigniew Jędrzejewski-Szmek |
930e1b |
From e7e2208e73ccc4a93dc87d1fc4624be0dbe3e747 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
From: Bastien Nocera <hadess@hadess.net>
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
Date: Fri, 11 Oct 2013 09:45:32 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
Subject: [PATCH] Add support for saving/restoring keyboard backlights
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
Piggy-backing on the display backlight code, this saves and restores
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
keyboard backlights on supported devices.
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
The detection code matches that of UPower:
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
http://cgit.freedesktop.org/upower/tree/src/up-kbd-backlight.c#n173
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
https://bugs.freedesktop.org/show_bug.cgi?id=70367
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
[tomegun: also work for devices named "{smc,samsung,asus}::kbd_backlight"]
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
Conflicts:
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
---
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
rules/99-systemd.rules.in | 4 +++-
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
src/backlight/backlight.c | 7 +++++--
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
2 files changed, 8 insertions(+), 3 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
index 307f18f..a00ffed 100644
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
--- a/rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+++ b/rules/99-systemd.rules.in
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
@@ -51,9 +51,11 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name"
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
-# Pull in backlight save/restore for all firmware backlight devices
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+# Pull in backlight save/restore for all firmware backlight devices,
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+# and keyboard backlights
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
# Asynchronously mount file systems implemented by these modules as
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
# soon as they are loaded.
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
index 9b2eada..f22deed 100644
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
--- a/src/backlight/backlight.c
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+++ b/src/backlight/backlight.c
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
@@ -56,9 +56,11 @@ int main(int argc, char *argv[]) {
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
errno = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]);
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+ if (!device)
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+ device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]);
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
if (!device) {
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
if (errno != 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
- log_error("Failed to get backlight device: %m");
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+ log_error("Failed to get backlight device '%s': %m", argv[2]);
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
r = -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
} else
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
r = log_oom();
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
@@ -66,7 +68,8 @@ int main(int argc, char *argv[]) {
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
goto finish;
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
}
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
- if (!streq_ptr(udev_device_get_subsystem(device), "backlight")) {
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+ if (!streq_ptr(udev_device_get_subsystem(device), "backlight") &&
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
+ !streq_ptr(udev_device_get_subsystem(device), "leds")) {
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
log_error("Not a backlight device: %s", argv[2]);
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
r = -ENODEV;
|
|
Zbigniew Jędrzejewski-Szmek |
930e1b |
goto finish;
|