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 +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 +Signed-off-by: Hans de Goede +--- + 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 + #include + #include ++#include + + #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