Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 165228
b: refs/heads/master
c: f2a9d5e
h: refs/heads/master
v: v3
  • Loading branch information
Alan Jenkins authored and Len Brown committed Aug 28, 2009
1 parent 5084c35 commit 449ccba
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 30 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: 1e7798547fe6920ae27fb92c9202353e9e4c55db
refs/heads/master: f2a9d5e8a649c606f520b7a7b9f4f46fba79c327
70 changes: 41 additions & 29 deletions trunk/drivers/platform/x86/eeepc-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -579,7 +579,6 @@ static void cmsg_quirks(void)

static int eeepc_hotk_check(void)
{
const struct key_entry *key;
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
int result;

Expand All @@ -604,31 +603,6 @@ static int eeepc_hotk_check(void)
pr_info("Get control methods supported: 0x%x\n",
ehotk->cm_supported);
}
ehotk->inputdev = input_allocate_device();
if (!ehotk->inputdev) {
pr_info("Unable to allocate input device\n");
return 0;
}
ehotk->inputdev->name = "Asus EeePC extra buttons";
ehotk->inputdev->phys = EEEPC_HOTK_FILE "/input0";
ehotk->inputdev->id.bustype = BUS_HOST;
ehotk->inputdev->getkeycode = eeepc_getkeycode;
ehotk->inputdev->setkeycode = eeepc_setkeycode;

for (key = eeepc_keymap; key->type != KE_END; key++) {
switch (key->type) {
case KE_KEY:
set_bit(EV_KEY, ehotk->inputdev->evbit);
set_bit(key->keycode, ehotk->inputdev->keybit);
break;
}
}
result = input_register_device(ehotk->inputdev);
if (result) {
pr_info("Unable to register input device\n");
input_free_device(ehotk->inputdev);
return 0;
}
} else {
pr_err("Hotkey device not present, aborting\n");
return -EINVAL;
Expand Down Expand Up @@ -1142,6 +1116,40 @@ static int eeepc_hwmon_init(struct device *dev)
return result;
}

static int eeepc_input_init(struct device *dev)
{
const struct key_entry *key;
int result;

ehotk->inputdev = input_allocate_device();
if (!ehotk->inputdev) {
pr_info("Unable to allocate input device\n");
return -ENOMEM;
}
ehotk->inputdev->name = "Asus EeePC extra buttons";
ehotk->inputdev->dev.parent = dev;
ehotk->inputdev->phys = EEEPC_HOTK_FILE "/input0";
ehotk->inputdev->id.bustype = BUS_HOST;
ehotk->inputdev->getkeycode = eeepc_getkeycode;
ehotk->inputdev->setkeycode = eeepc_setkeycode;

for (key = eeepc_keymap; key->type != KE_END; key++) {
switch (key->type) {
case KE_KEY:
set_bit(EV_KEY, ehotk->inputdev->evbit);
set_bit(key->keycode, ehotk->inputdev->keybit);
break;
}
}
result = input_register_device(ehotk->inputdev);
if (result) {
pr_info("Unable to register input device\n");
input_free_device(ehotk->inputdev);
return result;
}
return 0;
}

static int eeepc_hotk_add(struct acpi_device *device)
{
struct device *dev;
Expand All @@ -1162,7 +1170,7 @@ static int eeepc_hotk_add(struct acpi_device *device)

result = eeepc_hotk_check();
if (result)
goto fail_check;
goto fail_platform_driver;
eeepc_enable_camera();

/* Register platform stuff */
Expand Down Expand Up @@ -1192,6 +1200,10 @@ static int eeepc_hotk_add(struct acpi_device *device)
pr_info("Backlight controlled by ACPI video "
"driver\n");

result = eeepc_input_init(dev);
if (result)
goto fail_input;

result = eeepc_hwmon_init(dev);
if (result)
goto fail_hwmon;
Expand All @@ -1205,6 +1217,8 @@ static int eeepc_hotk_add(struct acpi_device *device)
fail_rfkill:
eeepc_hwmon_exit();
fail_hwmon:
eeepc_input_exit();
fail_input:
eeepc_backlight_exit();
fail_backlight:
sysfs_remove_group(&platform_device->dev.kobj,
Expand All @@ -1216,8 +1230,6 @@ static int eeepc_hotk_add(struct acpi_device *device)
fail_platform_device1:
platform_driver_unregister(&platform_driver);
fail_platform_driver:
eeepc_input_exit();
fail_check:
kfree(ehotk);

return result;
Expand Down

0 comments on commit 449ccba

Please sign in to comment.