summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2017-05-16 01:31:44 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2017-05-16 01:31:44 +0000
commit55a16dfc8c0859613cb2e53e89b6bd5ca59ea6fd (patch)
treeeeda6d80e8e6a528835e32f353243c4b85a4fdf3
parenta0b56f2a8eb2149dc5921dbfa0d933c781fe1110 (diff)
downloadlinux-libre-raptor-55a16dfc8c0859613cb2e53e89b6bd5ca59ea6fd.tar.gz
linux-libre-raptor-55a16dfc8c0859613cb2e53e89b6bd5ca59ea6fd.zip
4.10.15-100.fc24.gnu
-rw-r--r--freed-ora/current/f24/dell-laptop-Adds-support-for-keyboard-backlight-timeout-AC-settings.patch197
-rw-r--r--freed-ora/current/f24/kernel.spec14
-rw-r--r--freed-ora/current/f24/patch-4.10-gnu-4.10.14-gnu.xz.sign7
-rw-r--r--freed-ora/current/f24/patch-4.10-gnu-4.10.15-gnu.xz.sign7
-rw-r--r--freed-ora/current/f24/sources2
5 files changed, 218 insertions, 9 deletions
diff --git a/freed-ora/current/f24/dell-laptop-Adds-support-for-keyboard-backlight-timeout-AC-settings.patch b/freed-ora/current/f24/dell-laptop-Adds-support-for-keyboard-backlight-timeout-AC-settings.patch
new file mode 100644
index 000000000..bf370c6e4
--- /dev/null
+++ b/freed-ora/current/f24/dell-laptop-Adds-support-for-keyboard-backlight-timeout-AC-settings.patch
@@ -0,0 +1,197 @@
+From patchwork Sun Apr 23 19:40:47 2017
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 8bit
+Subject: dell-laptop: Adds support for keyboard backlight timeout AC settings
+From: =?utf-8?q?Pali_Roh=C3=A1r?= <pali.rohar@gmail.com>
+X-Patchwork-Id: 9695273
+Message-Id: <1492976447-10339-1-git-send-email-pali.rohar@gmail.com>
+To: Matthew Garrett <mjg59@srcf.ucam.org>,
+ Darren Hart <dvhart@infradead.org>, Andy Shevchenko <andy@infradead.org>,
+ Arcadiy Ivanov <arcadiy@ivanov.biz>,
+ Mario Limonciello <mario.limonciello@dell.com>
+Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org,
+ =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali.rohar@gmail.com>
+Date: Sun, 23 Apr 2017 21:40:47 +0200
+
+When changing keyboard backlight state on new Dell laptops, firmware
+expects a new timeout AC value filled in Set New State SMBIOS call.
+
+Without it any change of keyboard backlight state on new Dell laptops
+fails. And user can see following error message in dmesg:
+
+ dell_laptop: Setting old previous keyboard state failed
+ leds dell::kbd_backlight: Setting an LED's brightness failed (-6)
+
+This patch adds support for retrieving current timeout AC values and also
+updating them. Current timeout value in sysfs is displayed based on current
+AC status, like current display brightness value.
+
+Detection if Dell laptop supports or not new timeout AC settings is done by
+checking existence of Keyboard Backlight with AC SMBIOS token (0x0451).
+
+Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
+Acked-by: Mario Limonciello <mario.limonciello@dell.com>
+---
+I have not tested this patch yet as I do not have affected machine. I would
+appreciate some testing of this patch on more new Dell laptops. Without
+this patch changing keyboard backlight is not possible on affected machines.
+---
+ drivers/platform/x86/dell-laptop.c | 59 ++++++++++++++++++++++++++++++++----
+ 1 file changed, 53 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
+index f57dd28..cddf3c2 100644
+--- a/drivers/platform/x86/dell-laptop.c
++++ b/drivers/platform/x86/dell-laptop.c
+@@ -42,6 +42,7 @@
+ #define KBD_LED_AUTO_50_TOKEN 0x02EB
+ #define KBD_LED_AUTO_75_TOKEN 0x02EC
+ #define KBD_LED_AUTO_100_TOKEN 0x02F6
++#define KBD_LED_AC_TOKEN 0x0451
+
+ struct quirk_entry {
+ u8 touchpad_led;
+@@ -1024,7 +1025,7 @@ static void touchpad_led_exit(void)
+ * bit 2 Pointing stick
+ * bit 3 Any mouse
+ * bits 4-7 Reserved for future use
+- * cbRES2, byte3 Current Timeout
++ * cbRES2, byte3 Current Timeout on battery
+ * bits 7:6 Timeout units indicator:
+ * 00b Seconds
+ * 01b Minutes
+@@ -1036,6 +1037,15 @@ static void touchpad_led_exit(void)
+ * cbRES3, byte0 Current setting of ALS value that turns the light on or off.
+ * cbRES3, byte1 Current ALS reading
+ * cbRES3, byte2 Current keyboard light level.
++ * cbRES3, byte3 Current timeout on AC Power
++ * bits 7:6 Timeout units indicator:
++ * 00b Seconds
++ * 01b Minutes
++ * 10b Hours
++ * 11b Days
++ * Bits 5:0 Timeout value (0-63) in sec/min/hr/day
++ * NOTE: A value of 0 means always on (no timeout) if any bits of RES3 byte2
++ * are set upon return from the upon return from the [Get Feature information] call.
+ *
+ * cbArg1 0x2 = Set New State
+ * cbRES1 Standard return codes (0, -1, -2)
+@@ -1058,7 +1068,7 @@ static void touchpad_led_exit(void)
+ * bit 2 Pointing stick
+ * bit 3 Any mouse
+ * bits 4-7 Reserved for future use
+- * cbArg2, byte3 Desired Timeout
++ * cbArg2, byte3 Desired Timeout on battery
+ * bits 7:6 Timeout units indicator:
+ * 00b Seconds
+ * 01b Minutes
+@@ -1067,6 +1077,13 @@ static void touchpad_led_exit(void)
+ * bits 5:0 Timeout value (0-63) in sec/min/hr/day
+ * cbArg3, byte0 Desired setting of ALS value that turns the light on or off.
+ * cbArg3, byte2 Desired keyboard light level.
++ * cbArg3, byte3 Desired Timeout on AC power
++ * bits 7:6 Timeout units indicator:
++ * 00b Seconds
++ * 01b Minutes
++ * 10b Hours
++ * 11b Days
++ * bits 5:0 Timeout value (0-63) in sec/min/hr/day
+ */
+
+
+@@ -1112,6 +1129,8 @@ struct kbd_state {
+ u8 triggers;
+ u8 timeout_value;
+ u8 timeout_unit;
++ u8 timeout_value_ac;
++ u8 timeout_unit_ac;
+ u8 als_setting;
+ u8 als_value;
+ u8 level;
+@@ -1131,6 +1150,7 @@ struct kbd_state {
+ static struct kbd_info kbd_info;
+ static bool kbd_als_supported;
+ static bool kbd_triggers_supported;
++static bool kbd_timeout_ac_supported;
+
+ static u8 kbd_mode_levels[16];
+ static int kbd_mode_levels_count;
+@@ -1269,6 +1289,8 @@ static int kbd_get_state(struct kbd_state *state)
+ state->als_setting = buffer->output[2] & 0xFF;
+ state->als_value = (buffer->output[2] >> 8) & 0xFF;
+ state->level = (buffer->output[2] >> 16) & 0xFF;
++ state->timeout_value_ac = (buffer->output[2] >> 24) & 0x3F;
++ state->timeout_unit_ac = (buffer->output[2] >> 30) & 0x3;
+
+ out:
+ dell_smbios_release_buffer();
+@@ -1288,6 +1310,8 @@ static int kbd_set_state(struct kbd_state *state)
+ buffer->input[1] |= (state->timeout_unit & 0x3) << 30;
+ buffer->input[2] = state->als_setting & 0xFF;
+ buffer->input[2] |= (state->level & 0xFF) << 16;
++ buffer->input[2] |= (state->timeout_value_ac & 0x3F) << 24;
++ buffer->input[2] |= (state->timeout_unit_ac & 0x3) << 30;
+ dell_smbios_send_request(4, 11);
+ ret = buffer->output[0];
+ dell_smbios_release_buffer();
+@@ -1394,6 +1418,13 @@ static inline int kbd_init_info(void)
+ if (ret)
+ return ret;
+
++ /* NOTE: Old models without KBD_LED_AC_TOKEN token supports only one
++ * timeout value which is shared for both battery and AC power
++ * settings. So do not try to set AC values on old models.
++ */
++ if (dell_smbios_find_token(KBD_LED_AC_TOKEN))
++ kbd_timeout_ac_supported = true;
++
+ kbd_get_state(&state);
+
+ /* NOTE: timeout value is stored in 6 bits so max value is 63 */
+@@ -1573,8 +1604,14 @@ static ssize_t kbd_led_timeout_store(struct device *dev,
+ return ret;
+
+ new_state = state;
+- new_state.timeout_value = value;
+- new_state.timeout_unit = unit;
++
++ if (kbd_timeout_ac_supported && power_supply_is_system_supplied() > 0) {
++ new_state.timeout_value_ac = value;
++ new_state.timeout_unit_ac = unit;
++ } else {
++ new_state.timeout_value = value;
++ new_state.timeout_unit = unit;
++ }
+
+ ret = kbd_set_state_safe(&new_state, &state);
+ if (ret)
+@@ -1587,16 +1624,26 @@ static ssize_t kbd_led_timeout_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+ {
+ struct kbd_state state;
++ int value;
+ int ret;
+ int len;
++ u8 unit;
+
+ ret = kbd_get_state(&state);
+ if (ret)
+ return ret;
+
+- len = sprintf(buf, "%d", state.timeout_value);
++ if (kbd_timeout_ac_supported && power_supply_is_system_supplied() > 0) {
++ value = state.timeout_value_ac;
++ unit = state.timeout_unit_ac;
++ } else {
++ value = state.timeout_value;
++ unit = state.timeout_unit;
++ }
++
++ len = sprintf(buf, "%d", value);
+
+- switch (state.timeout_unit) {
++ switch (unit) {
+ case KBD_TIMEOUT_SECONDS:
+ return len + sprintf(buf+len, "s\n");
+ case KBD_TIMEOUT_MINUTES:
diff --git a/freed-ora/current/f24/kernel.spec b/freed-ora/current/f24/kernel.spec
index aab6a7eb8..847c8c0fa 100644
--- a/freed-ora/current/f24/kernel.spec
+++ b/freed-ora/current/f24/kernel.spec
@@ -92,7 +92,7 @@ Summary: The Linux kernel
%if 0%{?released_kernel}
# Do we have a -stable update to apply?
-%define stable_update 14
+%define stable_update 15
# Set rpm version accordingly
%if 0%{?stable_update}
%define stablerev %{stable_update}
@@ -652,6 +652,9 @@ Patch861: 0001-efi-libstub-Treat-missing-SecureBoot-variable-as-Sec.patch
#rhbz 1441310
Patch863: rhbz_1441310.patch
+#rhbz 1436686
+Patch864: dell-laptop-Adds-support-for-keyboard-backlight-timeout-AC-settings.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -2318,6 +2321,15 @@ fi
#
#
%changelog
+* Wed May 10 2017 Alexandre Oliva <lxoliva@fsfla.org> -libre
+- GNU Linux-libre 4.10.15-gnu.
+
+* Mon May 08 2017 Justin M. Forbes <jforbes@fedoraproject.org> - 4.10.15-100
+- Linux v4.10.15
+
+* Mon May 08 2017 Laura Abbott <labbott@fedoraproject.org>
+- Fix for Dell Laptop LED errors (rhbz 1436686)
+
* Thu May 4 2017 Alexandre Oliva <lxoliva@fsfla.org> -libre
- GNU Linux-libre 4.10.14-gnu.
diff --git a/freed-ora/current/f24/patch-4.10-gnu-4.10.14-gnu.xz.sign b/freed-ora/current/f24/patch-4.10-gnu-4.10.14-gnu.xz.sign
deleted file mode 100644
index 964ff15fe..000000000
--- a/freed-ora/current/f24/patch-4.10-gnu-4.10.14-gnu.xz.sign
+++ /dev/null
@@ -1,7 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2
-
-iEYEABECAAYFAlkK5DcACgkQvLfPh359R6faSgCfUuziKM8htaAG2rmg7y4l4JvE
-3zkAn2IWpU69MQo4b5TH7qm0KdsN1DfD
-=fZUz
------END PGP SIGNATURE-----
diff --git a/freed-ora/current/f24/patch-4.10-gnu-4.10.15-gnu.xz.sign b/freed-ora/current/f24/patch-4.10-gnu-4.10.15-gnu.xz.sign
new file mode 100644
index 000000000..e73846bf9
--- /dev/null
+++ b/freed-ora/current/f24/patch-4.10-gnu-4.10.15-gnu.xz.sign
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iEYEABECAAYFAlkRDRUACgkQvLfPh359R6evYACeLoQQyMtPT+biWo3KW/0VKynV
+W4kAniQKZs7HlujbLhlsUM+YOuEfvwhM
+=8bR6
+-----END PGP SIGNATURE-----
diff --git a/freed-ora/current/f24/sources b/freed-ora/current/f24/sources
index a2dac76f4..c7cc7284d 100644
--- a/freed-ora/current/f24/sources
+++ b/freed-ora/current/f24/sources
@@ -1,3 +1,3 @@
SHA512 (linux-libre-4.10-gnu.tar.xz) = 44d1774a1d43a15322297d351737fbcbf92c6f433266ce2b17587437d433562cf5811fdae48fafd5a8e00d18ed9ac2e1ad4b12a657f322eb234384316ad131e0
SHA512 (perf-man-4.10.tar.gz) = 2c830e06f47211d70a8330961487af73a8bc01073019475e6b6131d3bb8c95658b77ca0ae5f1b44371accf103658bc5a3a4366b3e017a4088a8fd408dd6867e8
-SHA512 (patch-4.10-gnu-4.10.14-gnu.xz) = 8ea226ae267bd74a6306be6ec1d9f8100dff9d3118d6597718cab71e3ac8ea6eb7c32349655764f49a35e31b4ff873fd5cc474620ef5d3be5aa69c66ebde72a0
+SHA512 (patch-4.10-gnu-4.10.15-gnu.xz) = 392a4b5f1afceb04fd867f8bfb707bc7aa359e215a33c311318c8b2c7db56804731fec1d334a32a8b7694d4a08a405556b692773a180afb340a71407b55ddd70
OpenPOWER on IntegriCloud