From: Hans de Goede <hdegoede@redhat.com>
To: "Darren Hart" <dvhart@infradead.org>,
"Matthew Garrett" <mjg59@srcf.ucam.org>,
"Pali Rohár" <pali.rohar@gmail.com>,
"Henrique de Moraes Holschuh" <ibm-acpi@hmh.eng.br>,
"Richard Purdie" <rpurdie@rpsys.net>,
"Jacek Anaszewski" <j.anaszewski@samsung.com>
Cc: ibm-acpi-devel@lists.sourceforge.net,
platform-driver-x86@vger.kernel.org, linux-leds@vger.kernel.org,
Hans de Goede <hdegoede@redhat.com>
Subject: [PATCH v5 4/6] platform: x86: thinkpad: Call led kbd_backlight trigger on kbd brightness change
Date: Thu, 17 Nov 2016 23:24:39 +0100 [thread overview]
Message-ID: <20161117222441.31464-4-hdegoede@redhat.com> (raw)
In-Reply-To: <20161117222441.31464-1-hdegoede@redhat.com>
Set the default-trigger of the thinklight and keyboard-backlight LEDs
to "kbd-backlight" and call ledtrig_kbd_backlight() when the hotkey
for controlling the thinklight and/or the keyboard-backlight gets pressed.
This will allow userspace to monitor (poll) for brightness changes on
these LEDs caused by the hotkey.
Note this also sets the LED_TRIGGER_READ_ONLY flag since the hotkey
is hardwired to control the brightness.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
Changes in v3:
-This is a new patch in v3 of this patch-set
Changes in v4:
-No changes
Changes in v5:
-Switch to new led-trigger based API for notifying userspace about
keyboard backlight brightness changes.
-Also call ledtrig_kbd_backlight() for laptops with a thinklight
-Rename the hotkey defines from THINKLIGHT to KBD_LIGHT since they
are shared between the thinklight and the keyboard backlight
---
drivers/platform/x86/thinkpad_acpi.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index b65ce75..066ad20 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -162,6 +162,7 @@ enum tpacpi_hkey_event_t {
TP_HKEY_EV_HOTKEY_BASE = 0x1001, /* first hotkey (FN+F1) */
TP_HKEY_EV_BRGHT_UP = 0x1010, /* Brightness up */
TP_HKEY_EV_BRGHT_DOWN = 0x1011, /* Brightness down */
+ TP_HKEY_EV_KBD_LIGHT = 0x1012, /* Thinklight/kbd backlight */
TP_HKEY_EV_VOL_UP = 0x1015, /* Volume up or unmute */
TP_HKEY_EV_VOL_DOWN = 0x1016, /* Volume down or unmute */
TP_HKEY_EV_VOL_MUTE = 0x1017, /* Mixer output mute */
@@ -1950,7 +1951,7 @@ enum { /* Positions of some of the keys in hotkey masks */
TP_ACPI_HKEY_HIBERNATE_MASK = 1 << TP_ACPI_HOTKEYSCAN_FNF12,
TP_ACPI_HKEY_BRGHTUP_MASK = 1 << TP_ACPI_HOTKEYSCAN_FNHOME,
TP_ACPI_HKEY_BRGHTDWN_MASK = 1 << TP_ACPI_HOTKEYSCAN_FNEND,
- TP_ACPI_HKEY_THNKLGHT_MASK = 1 << TP_ACPI_HOTKEYSCAN_FNPAGEUP,
+ TP_ACPI_HKEY_KBD_LIGHT_MASK = 1 << TP_ACPI_HOTKEYSCAN_FNPAGEUP,
TP_ACPI_HKEY_ZOOM_MASK = 1 << TP_ACPI_HOTKEYSCAN_FNSPACE,
TP_ACPI_HKEY_VOLUP_MASK = 1 << TP_ACPI_HOTKEYSCAN_VOLUMEUP,
TP_ACPI_HKEY_VOLDWN_MASK = 1 << TP_ACPI_HOTKEYSCAN_VOLUMEDOWN,
@@ -2320,7 +2321,7 @@ static void hotkey_read_nvram(struct tp_nvram_state *n, const u32 m)
n->display_toggle = !!(d & TP_NVRAM_MASK_HKT_DISPLAY);
n->hibernate_toggle = !!(d & TP_NVRAM_MASK_HKT_HIBERNATE);
}
- if (m & TP_ACPI_HKEY_THNKLGHT_MASK) {
+ if (m & TP_ACPI_HKEY_KBD_LIGHT_MASK) {
d = nvram_read_byte(TP_NVRAM_ADDR_THINKLIGHT);
n->thinklight_toggle = !!(d & TP_NVRAM_MASK_THINKLIGHT);
}
@@ -5138,8 +5139,10 @@ static struct tpacpi_led_classdev tpacpi_led_kbdlight = {
.led_classdev = {
.name = "tpacpi::kbd_backlight",
.max_brightness = 2,
+ .flags = LED_TRIGGER_READ_ONLY,
.brightness_set = &kbdlight_sysfs_set,
.brightness_get = &kbdlight_sysfs_get,
+ .default_trigger = "kbd-backlight",
}
};
@@ -5167,6 +5170,8 @@ static int __init kbdlight_init(struct ibm_init_struct *iibm)
return rc;
}
+ tpacpi_hotkey_driver_mask_set(hotkey_driver_mask |
+ TP_ACPI_HKEY_KBD_LIGHT_MASK);
return 0;
}
@@ -5332,8 +5337,10 @@ static enum led_brightness light_sysfs_get(struct led_classdev *led_cdev)
static struct tpacpi_led_classdev tpacpi_led_thinklight = {
.led_classdev = {
.name = "tpacpi::thinklight",
+ .flags = LED_TRIGGER_READ_ONLY,
.brightness_set = &light_sysfs_set,
.brightness_get = &light_sysfs_get,
+ .default_trigger = "kbd-backlight",
}
};
@@ -5372,11 +5379,12 @@ static int __init light_init(struct ibm_init_struct *iibm)
if (rc < 0) {
tp_features.light = 0;
tp_features.light_status = 0;
- } else {
- rc = 0;
+ return rc;
}
- return rc;
+ tpacpi_hotkey_driver_mask_set(hotkey_driver_mask |
+ TP_ACPI_HKEY_KBD_LIGHT_MASK);
+ return 0;
}
static void light_exit(void)
@@ -9114,6 +9122,10 @@ static void tpacpi_driver_event(const unsigned int hkey_event)
volume_alsa_notify_change();
}
}
+ if (hkey_event == TP_HKEY_EV_KBD_LIGHT) {
+ /* set_brightness = false, already handled by firmware */
+ ledtrig_kbd_backlight(false, 0);
+ }
}
static void hotkey_driver_event(const unsigned int scancode)
--
2.9.3
next prev parent reply other threads:[~2016-11-17 22:24 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-17 22:24 [PATCH v5 1/6] leds: triggers: Add current_brightness trigger parameter Hans de Goede
2016-11-17 22:24 ` [PATCH v5 2/6] leds: triggers: Add a keyboard backlight trigger Hans de Goede
2016-11-18 8:55 ` Jacek Anaszewski
[not found] ` <af5a6b68-310d-85ec-16db-5c9036f38ba5-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-11-18 9:07 ` Hans de Goede
2016-11-18 16:03 ` Jacek Anaszewski
2016-11-18 18:47 ` Hans de Goede
2016-11-19 15:44 ` Jacek Anaszewski
2016-11-20 15:05 ` Pali Rohár
2016-11-20 16:21 ` Pavel Machek
2016-11-20 18:48 ` Hans de Goede
[not found] ` <acd1691b-56be-c902-feff-7ecf38ea102a-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-11-20 19:45 ` Pali Rohár
2016-11-21 10:24 ` Jacek Anaszewski
2016-11-21 10:42 ` Hans de Goede
2016-11-21 11:24 ` Jacek Anaszewski
2016-11-21 11:56 ` Hans de Goede
2016-11-21 13:29 ` Jacek Anaszewski
2016-11-22 14:58 ` Pali Rohár
2016-11-22 15:20 ` [ibm-acpi-devel] " Glenn Golden
2016-11-23 11:01 ` Jacek Anaszewski
2016-11-24 9:15 ` Pali Rohár
2016-11-24 9:21 ` Hans de Goede
2016-11-24 14:21 ` Jacek Anaszewski
2016-11-24 14:26 ` Pali Rohár
2016-11-24 15:32 ` Jacek Anaszewski
[not found] ` <50225a88-b928-c61b-bf6f-6c85fb6a9082-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-11-24 15:36 ` Pali Rohár
2016-11-24 16:21 ` Jacek Anaszewski
2016-11-24 16:51 ` Pali Rohár
2016-11-24 21:35 ` Jacek Anaszewski
[not found] ` <5238be1f-d669-07e6-c796-5bc0126cb456-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-24 21:45 ` Pali Rohár
2016-11-25 8:33 ` Jacek Anaszewski
2016-11-25 10:01 ` Pavel Machek
2016-11-25 10:25 ` Jacek Anaszewski
[not found] ` <e32e3d6c-5d6d-c882-21d9-8028c8311b0b-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-11-25 11:05 ` Pavel Machek
2016-11-25 11:19 ` Jacek Anaszewski
[not found] ` <2367b9a7-68f7-2038-0d3a-a9561055b4f6-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-11-25 14:49 ` Pavel Machek
2016-11-25 15:55 ` Jacek Anaszewski
2016-11-25 20:40 ` Pavel Machek
2016-11-25 22:28 ` Jacek Anaszewski
2016-12-21 18:49 ` Pavel Machek
2016-12-23 21:55 ` Jacek Anaszewski
2017-01-13 19:17 ` Darren Hart
2017-01-15 10:54 ` Hans de Goede
2017-01-15 12:25 ` Henrique de Moraes Holschuh
2017-01-15 15:05 ` Hans de Goede
2017-01-24 12:32 ` Pavel Machek
2017-01-24 22:56 ` Jacek Anaszewski
2017-01-25 13:12 ` Hans de Goede
2016-11-25 11:14 ` Hans de Goede
2016-11-25 11:26 ` Pali Rohár
2016-11-25 12:05 ` Pavel Machek
2016-11-25 15:46 ` Jacek Anaszewski
2016-12-01 14:08 ` Jacek Anaszewski
2016-11-25 9:56 ` Pavel Machek
2016-11-25 9:51 ` Pavel Machek
2016-11-21 11:41 ` Pavel Machek
2016-11-21 13:29 ` Jacek Anaszewski
2016-11-25 9:29 ` Pavel Machek
2016-11-21 8:35 ` Jacek Anaszewski
2016-11-21 9:31 ` Hans de Goede
2016-11-21 10:12 ` Pali Rohár
2016-11-21 10:16 ` Hans de Goede
2016-11-25 10:07 ` Pavel Machek
2016-11-17 22:24 ` [PATCH v5 3/6] leds: triggers: Add support for read-only triggers Hans de Goede
2016-11-18 8:52 ` Jacek Anaszewski
2016-11-18 9:04 ` Hans de Goede
2016-11-18 10:49 ` Jacek Anaszewski
2016-11-18 11:01 ` Hans de Goede
2016-11-17 22:24 ` Hans de Goede [this message]
2016-11-17 22:24 ` [PATCH v5 5/6] platform: x86: dell-laptop: Set keyboard backlight led device default trigger Hans de Goede
2016-11-17 22:24 ` [PATCH v5 6/6] platform: x86: dell-wmi: Call led kbd_backlight trigger on kbd brightness change Hans de Goede
2016-11-20 14:59 ` [PATCH v5 1/6] leds: triggers: Add current_brightness trigger parameter Pali Rohár
2016-11-20 18:45 ` Hans de Goede
2016-11-20 19:40 ` Pali Rohár
2016-11-20 22:12 ` Pavel Machek
2016-11-20 23:07 ` Pali Rohár
2016-11-20 23:48 ` Pavel Machek
2016-11-21 10:02 ` Pali Rohár
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=20161117222441.31464-4-hdegoede@redhat.com \
--to=hdegoede@redhat.com \
--cc=dvhart@infradead.org \
--cc=ibm-acpi-devel@lists.sourceforge.net \
--cc=ibm-acpi@hmh.eng.br \
--cc=j.anaszewski@samsung.com \
--cc=linux-leds@vger.kernel.org \
--cc=mjg59@srcf.ucam.org \
--cc=pali.rohar@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=rpurdie@rpsys.net \
/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;
as well as URLs for NNTP newsgroup(s).