eeepc-laptop: dmi blacklist to disable pci hotplug code
authorCorentin Chary <corentincj@iksaif.net>
Wed, 6 Jan 2010 21:07:38 +0000 (22:07 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 26 Apr 2010 14:41:23 +0000 (07:41 -0700)
commit 10ae4b5663ff3092553bfbd867e7bd474ce6c553 upstream.

This is a short term workaround for Eeepc 1005HA.

refs: <http://bugzilla.kernel.org/show_bug.cgi?id=14570>

[bwh: Backported to 2.6.32]

Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Len Brown <len.brown@intel.com>
Cc: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/platform/x86/eeepc-laptop.c

index d232714afbc31a0b1054108da804fc8553002568..b9808ac40a40217131ce361a2c65167b82c825cc 100644 (file)
@@ -137,6 +137,7 @@ struct eeepc_hotk {
        u32 cm_supported;               /* the control methods supported
                                           by this BIOS */
        bool cpufv_disabled;
+       bool hotplug_disabled;
        uint init_flag;                 /* Init flags */
        u16 event_count[128];           /* count for each event */
        struct input_dev *inputdev;
@@ -614,6 +615,10 @@ static void eeepc_dmi_check(void)
 {
        const char *model;
 
+       model = dmi_get_system_info(DMI_PRODUCT_NAME);
+       if (!model)
+               return;
+
        /*
         * Blacklist for setting cpufv (cpu speed).
         *
@@ -633,17 +638,24 @@ static void eeepc_dmi_check(void)
         * substring matching.  We don't want to affect the "701SD"
         * and "701SDX" models, because they do support S.H.E.
         */
-
-       model = dmi_get_system_info(DMI_PRODUCT_NAME);
-       if (!model)
-               return;
-
        if (strcmp(model, "701") == 0 || strcmp(model, "702") == 0) {
                ehotk->cpufv_disabled = true;
                pr_info("model %s does not officially support setting cpu "
                        "speed\n", model);
                pr_info("cpufv disabled to avoid instability\n");
        }
+
+       /*
+        * Blacklist for wlan hotplug
+        *
+        * Eeepc 1005HA doesn't work like others models and don't need the
+        * hotplug code. In fact, current hotplug code seems to unplug another
+        * device...
+        */
+       if (strcmp(model, "1005HA") == 0) {
+               ehotk->hotplug_disabled = true;
+               pr_info("wlan hotplug disabled\n");
+       }
 }
 
 static void cmsg_quirk(int cm, const char *name)
@@ -1177,6 +1189,9 @@ static int eeepc_rfkill_init(struct device *dev)
        if (result && result != -ENODEV)
                goto exit;
 
+       if (ehotk->hotplug_disabled)
+               return 0;
+
        result = eeepc_setup_pci_hotplug();
        /*
         * If we get -EBUSY then something else is handling the PCI hotplug -