45b5fd0
Bugzilla: 958826
45b5fd0
Upstream-status: 3.13
45b5fd0
45b5fd0
From 2a92551845bbbc8421ba908cd14bbdf065e0f454 Mon Sep 17 00:00:00 2001
45b5fd0
From: Hans de Goede <hdegoede@redhat.com>
45b5fd0
Date: Sun, 17 Nov 2013 14:00:17 +0100
45b5fd0
Subject: [PATCH 2/2] dell-laptop: Only enable rfkill on Latitudes
45b5fd0
45b5fd0
The rfkill functionality was removed from the dell-laptop driver because it
45b5fd0
was causing problems on various non Latitude models, and the blacklist kept
45b5fd0
growing and growing. In the thread discussing this Dell mentioned that they
45b5fd0
only QA the rfkill acpi interface on Latitudes and indeed there have been
45b5fd0
no blacklist entries for Latitudes.
45b5fd0
45b5fd0
Note that the blacklist contained no Vostros either, and most Vostros have
45b5fd0
a hardware switch too, so we could consider supporting Vostros with a
45b5fd0
hardware switch too.
45b5fd0
45b5fd0
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
45b5fd0
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
45b5fd0
---
45b5fd0
 drivers/platform/x86/dell-laptop.c | 57 +++++---------------------------------
45b5fd0
 1 file changed, 7 insertions(+), 50 deletions(-)
45b5fd0
45b5fd0
diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
45b5fd0
index 55f75a2..bae932b 100644
45b5fd0
--- a/drivers/platform/x86/dell-laptop.c
45b5fd0
+++ b/drivers/platform/x86/dell-laptop.c
45b5fd0
@@ -119,53 +119,6 @@ static const struct dmi_system_id dell_device_table[] __initconst = {
45b5fd0
 };
45b5fd0
 MODULE_DEVICE_TABLE(dmi, dell_device_table);
45b5fd0
 
45b5fd0
-static struct dmi_system_id dell_blacklist[] = {
45b5fd0
-	/* Supported by compal-laptop */
45b5fd0
-	{
45b5fd0
-		.ident = "Dell Mini 9",
45b5fd0
-		.matches = {
45b5fd0
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
45b5fd0
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 910"),
45b5fd0
-		},
45b5fd0
-	},
45b5fd0
-	{
45b5fd0
-		.ident = "Dell Mini 10",
45b5fd0
-		.matches = {
45b5fd0
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
45b5fd0
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1010"),
45b5fd0
-		},
45b5fd0
-	},
45b5fd0
-	{
45b5fd0
-		.ident = "Dell Mini 10v",
45b5fd0
-		.matches = {
45b5fd0
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
45b5fd0
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1011"),
45b5fd0
-		},
45b5fd0
-	},
45b5fd0
-	{
45b5fd0
-		.ident = "Dell Mini 1012",
45b5fd0
-		.matches = {
45b5fd0
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
45b5fd0
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1012"),
45b5fd0
-		},
45b5fd0
-	},
45b5fd0
-	{
45b5fd0
-		.ident = "Dell Inspiron 11z",
45b5fd0
-		.matches = {
45b5fd0
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
45b5fd0
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1110"),
45b5fd0
-		},
45b5fd0
-	},
45b5fd0
-	{
45b5fd0
-		.ident = "Dell Mini 12",
45b5fd0
-		.matches = {
45b5fd0
-			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
45b5fd0
-			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 1210"),
45b5fd0
-		},
45b5fd0
-	},
45b5fd0
-	{}
45b5fd0
-};
45b5fd0
-
45b5fd0
 static struct dmi_system_id dell_quirks[] = {
45b5fd0
 	{
45b5fd0
 		.callback = dmi_matched,
45b5fd0
@@ -579,11 +532,15 @@ static int __init dell_setup_rfkill(void)
45b5fd0
 {
45b5fd0
 	int status;
45b5fd0
 	int ret;
45b5fd0
+	const char *product;
45b5fd0
 
45b5fd0
-	if (dmi_check_system(dell_blacklist)) {
45b5fd0
-		pr_info("Blacklisted hardware detected - not enabling rfkill\n");
45b5fd0
+	/*
45b5fd0
+	 * rfkill causes trouble on various non Latitudes, according to Dell
45b5fd0
+	 * actually testing the rfkill functionality is only done on Latitudes.
45b5fd0
+	 */
45b5fd0
+	product = dmi_get_system_info(DMI_PRODUCT_NAME);
45b5fd0
+	if (!product || strncmp(product, "Latitude", 8))
45b5fd0
 		return 0;
45b5fd0
-	}
45b5fd0
 
45b5fd0
 	get_buffer();
45b5fd0
 	dell_send_request(buffer, 17, 11);
45b5fd0
-- 
45b5fd0
1.8.3.1
45b5fd0