diff options
-rw-r--r-- | Documentation/laptops/acer-wmi.txt | 10 | ||||
-rw-r--r-- | drivers/platform/x86/acer-wmi.c | 35 |
2 files changed, 40 insertions, 5 deletions
diff --git a/Documentation/laptops/acer-wmi.txt b/Documentation/laptops/acer-wmi.txt index 2b3a6b5260bf..5ee2a02b3b40 100644 --- a/Documentation/laptops/acer-wmi.txt +++ b/Documentation/laptops/acer-wmi.txt | |||
@@ -1,9 +1,9 @@ | |||
1 | Acer Laptop WMI Extras Driver | 1 | Acer Laptop WMI Extras Driver |
2 | http://code.google.com/p/aceracpi | 2 | http://code.google.com/p/aceracpi |
3 | Version 0.2 | 3 | Version 0.3 |
4 | 18th August 2008 | 4 | 4th April 2009 |
5 | 5 | ||
6 | Copyright 2007-2008 Carlos Corbacho <carlos@strangeworlds.co.uk> | 6 | Copyright 2007-2009 Carlos Corbacho <carlos@strangeworlds.co.uk> |
7 | 7 | ||
8 | acer-wmi is a driver to allow you to control various parts of your Acer laptop | 8 | acer-wmi is a driver to allow you to control various parts of your Acer laptop |
9 | hardware under Linux which are exposed via ACPI-WMI. | 9 | hardware under Linux which are exposed via ACPI-WMI. |
@@ -36,6 +36,10 @@ not possible in kernel space from a 64 bit OS. | |||
36 | Supported Hardware | 36 | Supported Hardware |
37 | ****************** | 37 | ****************** |
38 | 38 | ||
39 | NOTE: The Acer Aspire One is not supported hardware. It cannot work with | ||
40 | acer-wmi until Acer fix their ACPI-WMI implementation on them, so has been | ||
41 | blacklisted until that happens. | ||
42 | |||
39 | Please see the website for the current list of known working hardare: | 43 | Please see the website for the current list of known working hardare: |
40 | 44 | ||
41 | http://code.google.com/p/aceracpi/wiki/SupportedHardware | 45 | http://code.google.com/p/aceracpi/wiki/SupportedHardware |
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index a6a42e8c060b..0f6e43bf4fc2 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Acer WMI Laptop Extras | 2 | * Acer WMI Laptop Extras |
3 | * | 3 | * |
4 | * Copyright (C) 2007-2008 Carlos Corbacho <carlos@strangeworlds.co.uk> | 4 | * Copyright (C) 2007-2009 Carlos Corbacho <carlos@strangeworlds.co.uk> |
5 | * | 5 | * |
6 | * Based on acer_acpi: | 6 | * Based on acer_acpi: |
7 | * Copyright (C) 2005-2007 E.M. Smith | 7 | * Copyright (C) 2005-2007 E.M. Smith |
@@ -225,6 +225,25 @@ static struct quirk_entry quirk_fujitsu_amilo_li_1718 = { | |||
225 | .wireless = 2, | 225 | .wireless = 2, |
226 | }; | 226 | }; |
227 | 227 | ||
228 | /* The Aspire One has a dummy ACPI-WMI interface - disable it */ | ||
229 | static struct dmi_system_id __devinitdata acer_blacklist[] = { | ||
230 | { | ||
231 | .ident = "Acer Aspire One (SSD)", | ||
232 | .matches = { | ||
233 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
234 | DMI_MATCH(DMI_PRODUCT_NAME, "AOA110"), | ||
235 | }, | ||
236 | }, | ||
237 | { | ||
238 | .ident = "Acer Aspire One (HDD)", | ||
239 | .matches = { | ||
240 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
241 | DMI_MATCH(DMI_PRODUCT_NAME, "AOA150"), | ||
242 | }, | ||
243 | }, | ||
244 | {} | ||
245 | }; | ||
246 | |||
228 | static struct dmi_system_id acer_quirks[] = { | 247 | static struct dmi_system_id acer_quirks[] = { |
229 | { | 248 | { |
230 | .callback = dmi_matched, | 249 | .callback = dmi_matched, |
@@ -1117,11 +1136,17 @@ static int __devinit acer_platform_probe(struct platform_device *device) | |||
1117 | } | 1136 | } |
1118 | 1137 | ||
1119 | err = acer_rfkill_init(&device->dev); | 1138 | err = acer_rfkill_init(&device->dev); |
1139 | if (err) | ||
1140 | goto error_rfkill; | ||
1120 | 1141 | ||
1121 | return err; | 1142 | return err; |
1122 | 1143 | ||
1144 | error_rfkill: | ||
1145 | if (has_cap(ACER_CAP_BRIGHTNESS)) | ||
1146 | acer_backlight_exit(); | ||
1123 | error_brightness: | 1147 | error_brightness: |
1124 | acer_led_exit(); | 1148 | if (has_cap(ACER_CAP_MAILLED)) |
1149 | acer_led_exit(); | ||
1125 | error_mailled: | 1150 | error_mailled: |
1126 | return err; | 1151 | return err; |
1127 | } | 1152 | } |
@@ -1254,6 +1279,12 @@ static int __init acer_wmi_init(void) | |||
1254 | 1279 | ||
1255 | printk(ACER_INFO "Acer Laptop ACPI-WMI Extras\n"); | 1280 | printk(ACER_INFO "Acer Laptop ACPI-WMI Extras\n"); |
1256 | 1281 | ||
1282 | if (dmi_check_system(acer_blacklist)) { | ||
1283 | printk(ACER_INFO "Blacklisted hardware detected - " | ||
1284 | "not loading\n"); | ||
1285 | return -ENODEV; | ||
1286 | } | ||
1287 | |||
1257 | find_quirks(); | 1288 | find_quirks(); |
1258 | 1289 | ||
1259 | /* | 1290 | /* |