Skip to content

Commit

Permalink
Merge branch 'acer-wmi' into test
Browse files Browse the repository at this point in the history
  • Loading branch information
lenb committed Oct 23, 2008
2 parents 6b3c4f8 + ae3a1b4 commit aa58329
Show file tree
Hide file tree
Showing 4 changed files with 177 additions and 106 deletions.
28 changes: 4 additions & 24 deletions Documentation/laptops/acer-wmi.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Acer Laptop WMI Extras Driver
http://code.google.com/p/aceracpi
Version 0.1
9th February 2008
Version 0.2
18th August 2008

Copyright 2007-2008 Carlos Corbacho <carlos@strangeworlds.co.uk>

Expand Down Expand Up @@ -87,17 +87,7 @@ acer-wmi come with built-in wireless. However, should you feel so inclined to
ever wish to remove the card, or swap it out at some point, please get in touch
with me, as we may well be able to gain some data on wireless card detection.

To read the status of the wireless radio (0=off, 1=on):
cat /sys/devices/platform/acer-wmi/wireless

To enable the wireless radio:
echo 1 > /sys/devices/platform/acer-wmi/wireless

To disable the wireless radio:
echo 0 > /sys/devices/platform/acer-wmi/wireless

To set the state of the wireless radio when loading acer-wmi, pass:
wireless=X (where X is 0 or 1)
The wireless radio is exposed through rfkill.

Bluetooth
*********
Expand All @@ -117,17 +107,7 @@ For the adventurously minded - if you want to buy an internal bluetooth
module off the internet that is compatible with your laptop and fit it, then
it will work just fine with acer-wmi.

To read the status of the bluetooth module (0=off, 1=on):
cat /sys/devices/platform/acer-wmi/wireless

To enable the bluetooth module:
echo 1 > /sys/devices/platform/acer-wmi/bluetooth

To disable the bluetooth module:
echo 0 > /sys/devices/platform/acer-wmi/bluetooth

To set the state of the bluetooth module when loading acer-wmi, pass:
bluetooth=X (where X is 0 or 1)
Bluetooth is exposed through rfkill.

3G
**
Expand Down
39 changes: 37 additions & 2 deletions drivers/acpi/wmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,35 @@ static bool find_guid(const char *guid_string, struct wmi_block **out)
return 0;
}

static acpi_status wmi_method_enable(struct wmi_block *wblock, int enable)
{
struct guid_block *block = NULL;
char method[5];
struct acpi_object_list input;
union acpi_object params[1];
acpi_status status;
acpi_handle handle;

block = &wblock->gblock;
handle = wblock->handle;

if (!block)
return AE_NOT_EXIST;

input.count = 1;
input.pointer = params;
params[0].type = ACPI_TYPE_INTEGER;
params[0].integer.value = enable;

snprintf(method, 5, "WE%02X", block->notify_id);
status = acpi_evaluate_object(handle, method, &input, NULL);

if (status != AE_OK && status != AE_NOT_FOUND)
return status;
else
return AE_OK;
}

/*
* Exported WMI functions
*/
Expand Down Expand Up @@ -427,6 +456,7 @@ acpi_status wmi_install_notify_handler(const char *guid,
wmi_notify_handler handler, void *data)
{
struct wmi_block *block;
acpi_status status;

if (!guid || !handler)
return AE_BAD_PARAMETER;
Expand All @@ -441,7 +471,9 @@ wmi_notify_handler handler, void *data)
block->handler = handler;
block->handler_data = data;

return AE_OK;
status = wmi_method_enable(block, 1);

return status;
}
EXPORT_SYMBOL_GPL(wmi_install_notify_handler);

Expand All @@ -453,6 +485,7 @@ EXPORT_SYMBOL_GPL(wmi_install_notify_handler);
acpi_status wmi_remove_notify_handler(const char *guid)
{
struct wmi_block *block;
acpi_status status;

if (!guid)
return AE_BAD_PARAMETER;
Expand All @@ -464,10 +497,12 @@ acpi_status wmi_remove_notify_handler(const char *guid)
if (!block->handler)
return AE_NULL_ENTRY;

status = wmi_method_enable(block, 0);

block->handler = NULL;
block->handler_data = NULL;

return AE_OK;
return status;
}
EXPORT_SYMBOL_GPL(wmi_remove_notify_handler);

Expand Down
1 change: 1 addition & 0 deletions drivers/misc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ config ACER_WMI
depends on NEW_LEDS
depends on BACKLIGHT_CLASS_DEVICE
depends on SERIO_I8042
depends on RFKILL
select ACPI_WMI
---help---
This is a driver for newer Acer (and Wistron) laptops. It adds
Expand Down
Loading

0 comments on commit aa58329

Please sign in to comment.