74 lines
2.1 KiB
Diff
74 lines
2.1 KiB
Diff
From: Corentin Chary <corentincj@iksaif.net>
|
|
Date: Wed, 6 Jan 2010 22:07:38 +0100
|
|
Subject: [PATCH] eeepc-laptop: dmi blacklist to disable pci hotplug code
|
|
|
|
This is a short term workaround for Eeepc 1005HA.
|
|
|
|
refs: <http://bugzilla.kernel.org/show_bug.cgi?id=14570>
|
|
|
|
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
|
|
Signed-off-by: Len Brown <len.brown@intel.com>
|
|
[bwh: Backported to 2.6.32]
|
|
|
|
--- a/drivers/platform/x86/eeepc-laptop.c
|
|
+++ b/drivers/platform/x86/eeepc-laptop.c
|
|
@@ -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 */
|
|
|
|
@@ -614,6 +615,10 @@ static void eeepc_dmi_check(struct eeepc_laptop *eeepc)
|
|
{
|
|
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(struct eeepc_laptop *eeepc)
|
|
* 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(struct eeepc_laptop *eeepc, int cm, const char *name)
|
|
@@ -1156,6 +1168,9 @@ static int eeepc_rfkill_init(struct eeepc_laptop *eeepc)
|
|
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 -
|