summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ideapad-laptop-Blacklist-rfkill-control-on-the-Lenov.patch73
-rw-r--r--kernel.spec2
2 files changed, 75 insertions, 0 deletions
diff --git a/ideapad-laptop-Blacklist-rfkill-control-on-the-Lenov.patch b/ideapad-laptop-Blacklist-rfkill-control-on-the-Lenov.patch
new file mode 100644
index 000000000..86d608664
--- /dev/null
+++ b/ideapad-laptop-Blacklist-rfkill-control-on-the-Lenov.patch
@@ -0,0 +1,73 @@
+Bugzilla: N/A
+Upstream-status: Sent upstream for 3.16
+
+From ec5a006650d13c183124bd4279b95625f85efc6d Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 2 Jun 2014 17:41:00 +0200
+Subject: [PATCH 03/14] ideapad-laptop: Blacklist rfkill control on the Lenovo
+ Yoga 2 11
+
+The Lenovo Yoga 2 11 always reports everything as blocked, causing userspace
+to not even try to use the wlan / bluetooth even though they work fine.
+
+Note this patch also removes the "else priv->rfk[i] = NULL;" bit of the
+rfkill initialization, it is not necessary as the priv struct is allocated
+with kzalloc.
+
+Reported-and-tested-by: Vincent Gerris <vgerris@gmail.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ drivers/platform/x86/ideapad-laptop.c | 23 ++++++++++++++++++-----
+ 1 file changed, 18 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
+index 6dd060a0bb65..219eb289a909 100644
+--- a/drivers/platform/x86/ideapad-laptop.c
++++ b/drivers/platform/x86/ideapad-laptop.c
+@@ -36,6 +36,7 @@
+ #include <linux/debugfs.h>
+ #include <linux/seq_file.h>
+ #include <linux/i8042.h>
++#include <linux/dmi.h>
+
+ #define IDEAPAD_RFKILL_DEV_NUM (3)
+
+@@ -819,6 +820,19 @@ static void ideapad_acpi_notify(acpi_handle handle, u32 event, void *data)
+ }
+ }
+
++/* Blacklist for devices where the ideapad rfkill interface does not work */
++static struct dmi_system_id rfkill_blacklist[] = {
++ /* The Lenovo Yoga 2 11 always reports everything as blocked */
++ {
++ .ident = "Lenovo Yoga 2 11",
++ .matches = {
++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
++ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Yoga 2 11"),
++ },
++ },
++ {}
++};
++
+ static int ideapad_acpi_add(struct platform_device *pdev)
+ {
+ int ret, i;
+@@ -854,11 +868,10 @@ static int ideapad_acpi_add(struct platform_device *pdev)
+ if (ret)
+ goto input_failed;
+
+- for (i = 0; i < IDEAPAD_RFKILL_DEV_NUM; i++) {
+- if (test_bit(ideapad_rfk_data[i].cfgbit, &priv->cfg))
+- ideapad_register_rfkill(priv, i);
+- else
+- priv->rfk[i] = NULL;
++ if (!dmi_check_system(rfkill_blacklist)) {
++ for (i = 0; i < IDEAPAD_RFKILL_DEV_NUM; i++)
++ if (test_bit(ideapad_rfk_data[i].cfgbit, &priv->cfg))
++ ideapad_register_rfkill(priv, i);
+ }
+ ideapad_sync_rfk_state(priv);
+ ideapad_sync_touchpad_state(priv);
+--
+1.9.0
+
diff --git a/kernel.spec b/kernel.spec
index b07de6470..ddd39386b 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -646,6 +646,7 @@ Patch26000: perf-lib64.patch
# Patch series from Hans for various backlight and platform driver fixes
Patch26001: thinkpad_acpi-Add-mappings-for-F9-F12-hotkeys-on-X24.patch
Patch26002: samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch
+Patch26003: ideapad-laptop-Blacklist-rfkill-control-on-the-Lenov.patch
# END OF PATCH DEFINITIONS
@@ -1369,6 +1370,7 @@ ApplyPatch perf-lib64.patch
# Patch series from Hans for various backlight and platform driver fixes
ApplyPatch thinkpad_acpi-Add-mappings-for-F9-F12-hotkeys-on-X24.patch
ApplyPatch samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch
+ApplyPatch ideapad-laptop-Blacklist-rfkill-control-on-the-Lenov.patch
# END OF PATCH APPLICATIONS