diff options
Diffstat (limited to 'drivers/platform/x86/acer-wmi.c')
| -rw-r--r-- | drivers/platform/x86/acer-wmi.c | 35 |
1 files changed, 33 insertions, 2 deletions
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 | /* |
