Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 154199
b: refs/heads/master
c: 352fa20
h: refs/heads/master
i:
  154197: ade47c7
  154195: 8788a11
  154191: 008147e
v: v3
  • Loading branch information
Bjorn Helgaas authored and Len Brown committed Jun 18, 2009
1 parent 154cc97 commit 7ad6cf5
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 586ed1604fd6137cae1e8ede8143c3b8897306fd
refs/heads/master: 352fa202c3320ac4844cd38fa72c7a91d7c4cfea
30 changes: 13 additions & 17 deletions trunk/drivers/platform/x86/asus_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,8 @@ static struct asus_hotk *hotk;
*/
static int asus_hotk_add(struct acpi_device *device);
static int asus_hotk_remove(struct acpi_device *device, int type);
static void asus_hotk_notify(struct acpi_device *device, u32 event);

static const struct acpi_device_id asus_device_ids[] = {
{"ATK0100", 0},
{"", 0},
Expand All @@ -465,9 +467,11 @@ static struct acpi_driver asus_hotk_driver = {
.name = "asus_acpi",
.class = ACPI_HOTK_CLASS,
.ids = asus_device_ids,
.flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS,
.ops = {
.add = asus_hotk_add,
.remove = asus_hotk_remove,
.notify = asus_hotk_notify,
},
};

Expand Down Expand Up @@ -1101,12 +1105,20 @@ static int asus_hotk_remove_fs(struct acpi_device *device)
return 0;
}

static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
static void asus_hotk_notify(struct acpi_device *device, u32 event)
{
/* TODO Find a better way to handle events count. */
if (!hotk)
return;

/*
* The BIOS *should* be sending us device events, but apparently
* Asus uses system events instead, so just ignore any device
* events we get.
*/
if (event > ACPI_MAX_SYS_NOTIFY)
return;

if ((event & ~((u32) BR_UP)) < 16)
hotk->brightness = (event & ~((u32) BR_UP));
else if ((event & ~((u32) BR_DOWN)) < 16)
Expand Down Expand Up @@ -1346,15 +1358,6 @@ static int asus_hotk_add(struct acpi_device *device)
if (result)
goto end;

/*
* We install the handler, it will receive the hotk in parameter, so, we
* could add other data to the hotk struct
*/
status = acpi_install_notify_handler(hotk->handle, ACPI_SYSTEM_NOTIFY,
asus_hotk_notify, hotk);
if (ACPI_FAILURE(status))
printk(KERN_ERR " Error installing notify handler\n");

/* For laptops without GPLV: init the hotk->brightness value */
if ((!hotk->methods->brightness_get)
&& (!hotk->methods->brightness_status)
Expand Down Expand Up @@ -1389,16 +1392,9 @@ static int asus_hotk_add(struct acpi_device *device)

static int asus_hotk_remove(struct acpi_device *device, int type)
{
acpi_status status = 0;

if (!device || !acpi_driver_data(device))
return -EINVAL;

status = acpi_remove_notify_handler(hotk->handle, ACPI_SYSTEM_NOTIFY,
asus_hotk_notify);
if (ACPI_FAILURE(status))
printk(KERN_ERR "Asus ACPI: Error removing notify handler\n");

asus_hotk_remove_fs(device);

kfree(hotk);
Expand Down

0 comments on commit 7ad6cf5

Please sign in to comment.