diff options
Diffstat (limited to 'drivers/platform')
-rw-r--r-- | drivers/platform/x86/eeepc-laptop.c | 253 |
1 files changed, 125 insertions, 128 deletions
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index f457587e64d3..b9b5aebbd5b0 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * eepc-laptop.c - Asus Eee PC extras | 2 | * eeepc-laptop.c - Asus Eee PC extras |
3 | * | 3 | * |
4 | * Based on asus_acpi.c as patched for the Eee PC by Asus: | 4 | * Based on asus_acpi.c as patched for the Eee PC by Asus: |
5 | * ftp://ftp.asus.com/pub/ASUS/EeePC/701/ASUS_ACPI_071126.rar | 5 | * ftp://ftp.asus.com/pub/ASUS/EeePC/701/ASUS_ACPI_071126.rar |
@@ -37,21 +37,20 @@ | |||
37 | #include <linux/leds.h> | 37 | #include <linux/leds.h> |
38 | 38 | ||
39 | #define EEEPC_LAPTOP_VERSION "0.1" | 39 | #define EEEPC_LAPTOP_VERSION "0.1" |
40 | #define EEEPC_LAPTOP_NAME "Eee PC Hotkey Driver" | ||
41 | #define EEEPC_LAPTOP_FILE "eeepc" | ||
40 | 42 | ||
41 | #define EEEPC_HOTK_NAME "Eee PC Hotkey Driver" | 43 | #define EEEPC_ACPI_CLASS "hotkey" |
42 | #define EEEPC_HOTK_FILE "eeepc" | 44 | #define EEEPC_ACPI_DEVICE_NAME "Hotkey" |
43 | #define EEEPC_HOTK_CLASS "hotkey" | 45 | #define EEEPC_ACPI_HID "ASUS010" |
44 | #define EEEPC_HOTK_DEVICE_NAME "Hotkey" | ||
45 | #define EEEPC_HOTK_HID "ASUS010" | ||
46 | 46 | ||
47 | MODULE_AUTHOR("Corentin Chary, Eric Cooper"); | 47 | MODULE_AUTHOR("Corentin Chary, Eric Cooper"); |
48 | MODULE_DESCRIPTION(EEEPC_HOTK_NAME); | 48 | MODULE_DESCRIPTION(EEEPC_LAPTOP_NAME); |
49 | MODULE_LICENSE("GPL"); | 49 | MODULE_LICENSE("GPL"); |
50 | 50 | ||
51 | /* | 51 | /* |
52 | * Definitions for Asus EeePC | 52 | * Definitions for Asus EeePC |
53 | */ | 53 | */ |
54 | #define NOTIFY_WLAN_ON 0x10 | ||
55 | #define NOTIFY_BRN_MIN 0x20 | 54 | #define NOTIFY_BRN_MIN 0x20 |
56 | #define NOTIFY_BRN_MAX 0x2f | 55 | #define NOTIFY_BRN_MAX 0x2f |
57 | 56 | ||
@@ -152,9 +151,8 @@ static struct key_entry eeepc_keymap[] = { | |||
152 | 151 | ||
153 | /* | 152 | /* |
154 | * This is the main structure, we can use it to store useful information | 153 | * This is the main structure, we can use it to store useful information |
155 | * about the hotk device | ||
156 | */ | 154 | */ |
157 | struct eeepc_hotk { | 155 | struct eeepc_laptop { |
158 | struct acpi_device *device; /* the device we are in */ | 156 | struct acpi_device *device; /* the device we are in */ |
159 | acpi_handle handle; /* the handle of the hotk device */ | 157 | acpi_handle handle; /* the handle of the hotk device */ |
160 | u32 cm_supported; /* the control methods supported | 158 | u32 cm_supported; /* the control methods supported |
@@ -171,7 +169,7 @@ struct eeepc_hotk { | |||
171 | }; | 169 | }; |
172 | 170 | ||
173 | /* The actual device the driver binds to */ | 171 | /* The actual device the driver binds to */ |
174 | static struct eeepc_hotk *ehotk; | 172 | static struct eeepc_laptop *eeepc; |
175 | 173 | ||
176 | /* The platform device */ | 174 | /* The platform device */ |
177 | static struct platform_device *platform_device; | 175 | static struct platform_device *platform_device; |
@@ -222,10 +220,10 @@ static int set_acpi(int cm, int value) | |||
222 | 220 | ||
223 | if (method == NULL) | 221 | if (method == NULL) |
224 | return -ENODEV; | 222 | return -ENODEV; |
225 | if ((ehotk->cm_supported & (0x1 << cm)) == 0) | 223 | if ((eeepc->cm_supported & (0x1 << cm)) == 0) |
226 | return -ENODEV; | 224 | return -ENODEV; |
227 | 225 | ||
228 | if (write_acpi_int(ehotk->handle, method, value)) | 226 | if (write_acpi_int(eeepc->handle, method, value)) |
229 | pr_warning("Error writing %s\n", method); | 227 | pr_warning("Error writing %s\n", method); |
230 | return 0; | 228 | return 0; |
231 | } | 229 | } |
@@ -237,10 +235,10 @@ static int get_acpi(int cm) | |||
237 | 235 | ||
238 | if (method == NULL) | 236 | if (method == NULL) |
239 | return -ENODEV; | 237 | return -ENODEV; |
240 | if ((ehotk->cm_supported & (0x1 << cm)) == 0) | 238 | if ((eeepc->cm_supported & (0x1 << cm)) == 0) |
241 | return -ENODEV; | 239 | return -ENODEV; |
242 | 240 | ||
243 | if (read_acpi_int(ehotk->handle, method, &value)) | 241 | if (read_acpi_int(eeepc->handle, method, &value)) |
244 | pr_warning("Error reading %s\n", method); | 242 | pr_warning("Error reading %s\n", method); |
245 | return value; | 243 | return value; |
246 | } | 244 | } |
@@ -395,7 +393,7 @@ static int eeepc_platform_init(void) | |||
395 | { | 393 | { |
396 | int result; | 394 | int result; |
397 | 395 | ||
398 | platform_device = platform_device_alloc(EEEPC_HOTK_FILE, -1); | 396 | platform_device = platform_device_alloc(EEEPC_LAPTOP_FILE, -1); |
399 | if (!platform_device) | 397 | if (!platform_device) |
400 | return -ENOMEM; | 398 | return -ENOMEM; |
401 | 399 | ||
@@ -501,12 +499,12 @@ static void eeepc_rfkill_hotplug(void) | |||
501 | struct pci_bus *bus; | 499 | struct pci_bus *bus; |
502 | bool blocked = eeepc_wlan_rfkill_blocked(); | 500 | bool blocked = eeepc_wlan_rfkill_blocked(); |
503 | 501 | ||
504 | if (ehotk->wlan_rfkill) | 502 | if (eeepc->wlan_rfkill) |
505 | rfkill_set_sw_state(ehotk->wlan_rfkill, blocked); | 503 | rfkill_set_sw_state(eeepc->wlan_rfkill, blocked); |
506 | 504 | ||
507 | mutex_lock(&ehotk->hotplug_lock); | 505 | mutex_lock(&eeepc->hotplug_lock); |
508 | 506 | ||
509 | if (ehotk->hotplug_slot) { | 507 | if (eeepc->hotplug_slot) { |
510 | bus = pci_find_bus(0, 1); | 508 | bus = pci_find_bus(0, 1); |
511 | if (!bus) { | 509 | if (!bus) { |
512 | pr_warning("Unable to find PCI bus 1?\n"); | 510 | pr_warning("Unable to find PCI bus 1?\n"); |
@@ -536,7 +534,7 @@ static void eeepc_rfkill_hotplug(void) | |||
536 | } | 534 | } |
537 | 535 | ||
538 | out_unlock: | 536 | out_unlock: |
539 | mutex_unlock(&ehotk->hotplug_lock); | 537 | mutex_unlock(&eeepc->hotplug_lock); |
540 | } | 538 | } |
541 | 539 | ||
542 | static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data) | 540 | static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data) |
@@ -619,22 +617,22 @@ static int eeepc_setup_pci_hotplug(void) | |||
619 | return -ENODEV; | 617 | return -ENODEV; |
620 | } | 618 | } |
621 | 619 | ||
622 | ehotk->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); | 620 | eeepc->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); |
623 | if (!ehotk->hotplug_slot) | 621 | if (!eeepc->hotplug_slot) |
624 | goto error_slot; | 622 | goto error_slot; |
625 | 623 | ||
626 | ehotk->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), | 624 | eeepc->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), |
627 | GFP_KERNEL); | 625 | GFP_KERNEL); |
628 | if (!ehotk->hotplug_slot->info) | 626 | if (!eeepc->hotplug_slot->info) |
629 | goto error_info; | 627 | goto error_info; |
630 | 628 | ||
631 | ehotk->hotplug_slot->private = ehotk; | 629 | eeepc->hotplug_slot->private = eeepc; |
632 | ehotk->hotplug_slot->release = &eeepc_cleanup_pci_hotplug; | 630 | eeepc->hotplug_slot->release = &eeepc_cleanup_pci_hotplug; |
633 | ehotk->hotplug_slot->ops = &eeepc_hotplug_slot_ops; | 631 | eeepc->hotplug_slot->ops = &eeepc_hotplug_slot_ops; |
634 | eeepc_get_adapter_status(ehotk->hotplug_slot, | 632 | eeepc_get_adapter_status(eeepc->hotplug_slot, |
635 | &ehotk->hotplug_slot->info->adapter_status); | 633 | &eeepc->hotplug_slot->info->adapter_status); |
636 | 634 | ||
637 | ret = pci_hp_register(ehotk->hotplug_slot, bus, 0, "eeepc-wifi"); | 635 | ret = pci_hp_register(eeepc->hotplug_slot, bus, 0, "eeepc-wifi"); |
638 | if (ret) { | 636 | if (ret) { |
639 | pr_err("Unable to register hotplug slot - %d\n", ret); | 637 | pr_err("Unable to register hotplug slot - %d\n", ret); |
640 | goto error_register; | 638 | goto error_register; |
@@ -643,10 +641,10 @@ static int eeepc_setup_pci_hotplug(void) | |||
643 | return 0; | 641 | return 0; |
644 | 642 | ||
645 | error_register: | 643 | error_register: |
646 | kfree(ehotk->hotplug_slot->info); | 644 | kfree(eeepc->hotplug_slot->info); |
647 | error_info: | 645 | error_info: |
648 | kfree(ehotk->hotplug_slot); | 646 | kfree(eeepc->hotplug_slot); |
649 | ehotk->hotplug_slot = NULL; | 647 | eeepc->hotplug_slot = NULL; |
650 | error_slot: | 648 | error_slot: |
651 | return ret; | 649 | return ret; |
652 | } | 650 | } |
@@ -695,33 +693,33 @@ static void eeepc_rfkill_exit(void) | |||
695 | eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P5"); | 693 | eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P5"); |
696 | eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); | 694 | eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6"); |
697 | eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); | 695 | eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7"); |
698 | if (ehotk->wlan_rfkill) { | 696 | if (eeepc->wlan_rfkill) { |
699 | rfkill_unregister(ehotk->wlan_rfkill); | 697 | rfkill_unregister(eeepc->wlan_rfkill); |
700 | rfkill_destroy(ehotk->wlan_rfkill); | 698 | rfkill_destroy(eeepc->wlan_rfkill); |
701 | ehotk->wlan_rfkill = NULL; | 699 | eeepc->wlan_rfkill = NULL; |
702 | } | 700 | } |
703 | /* | 701 | /* |
704 | * Refresh pci hotplug in case the rfkill state was changed after | 702 | * Refresh pci hotplug in case the rfkill state was changed after |
705 | * eeepc_unregister_rfkill_notifier() | 703 | * eeepc_unregister_rfkill_notifier() |
706 | */ | 704 | */ |
707 | eeepc_rfkill_hotplug(); | 705 | eeepc_rfkill_hotplug(); |
708 | if (ehotk->hotplug_slot) | 706 | if (eeepc->hotplug_slot) |
709 | pci_hp_deregister(ehotk->hotplug_slot); | 707 | pci_hp_deregister(eeepc->hotplug_slot); |
710 | 708 | ||
711 | if (ehotk->bluetooth_rfkill) { | 709 | if (eeepc->bluetooth_rfkill) { |
712 | rfkill_unregister(ehotk->bluetooth_rfkill); | 710 | rfkill_unregister(eeepc->bluetooth_rfkill); |
713 | rfkill_destroy(ehotk->bluetooth_rfkill); | 711 | rfkill_destroy(eeepc->bluetooth_rfkill); |
714 | ehotk->bluetooth_rfkill = NULL; | 712 | eeepc->bluetooth_rfkill = NULL; |
715 | } | 713 | } |
716 | if (ehotk->wwan3g_rfkill) { | 714 | if (eeepc->wwan3g_rfkill) { |
717 | rfkill_unregister(ehotk->wwan3g_rfkill); | 715 | rfkill_unregister(eeepc->wwan3g_rfkill); |
718 | rfkill_destroy(ehotk->wwan3g_rfkill); | 716 | rfkill_destroy(eeepc->wwan3g_rfkill); |
719 | ehotk->wwan3g_rfkill = NULL; | 717 | eeepc->wwan3g_rfkill = NULL; |
720 | } | 718 | } |
721 | if (ehotk->wimax_rfkill) { | 719 | if (eeepc->wimax_rfkill) { |
722 | rfkill_unregister(ehotk->wimax_rfkill); | 720 | rfkill_unregister(eeepc->wimax_rfkill); |
723 | rfkill_destroy(ehotk->wimax_rfkill); | 721 | rfkill_destroy(eeepc->wimax_rfkill); |
724 | ehotk->wimax_rfkill = NULL; | 722 | eeepc->wimax_rfkill = NULL; |
725 | } | 723 | } |
726 | } | 724 | } |
727 | 725 | ||
@@ -729,30 +727,30 @@ static int eeepc_rfkill_init(struct device *dev) | |||
729 | { | 727 | { |
730 | int result = 0; | 728 | int result = 0; |
731 | 729 | ||
732 | mutex_init(&ehotk->hotplug_lock); | 730 | mutex_init(&eeepc->hotplug_lock); |
733 | 731 | ||
734 | result = eeepc_new_rfkill(&ehotk->wlan_rfkill, | 732 | result = eeepc_new_rfkill(&eeepc->wlan_rfkill, |
735 | "eeepc-wlan", dev, | 733 | "eeepc-wlan", dev, |
736 | RFKILL_TYPE_WLAN, CM_ASL_WLAN); | 734 | RFKILL_TYPE_WLAN, CM_ASL_WLAN); |
737 | 735 | ||
738 | if (result && result != -ENODEV) | 736 | if (result && result != -ENODEV) |
739 | goto exit; | 737 | goto exit; |
740 | 738 | ||
741 | result = eeepc_new_rfkill(&ehotk->bluetooth_rfkill, | 739 | result = eeepc_new_rfkill(&eeepc->bluetooth_rfkill, |
742 | "eeepc-bluetooth", dev, | 740 | "eeepc-bluetooth", dev, |
743 | RFKILL_TYPE_BLUETOOTH, CM_ASL_BLUETOOTH); | 741 | RFKILL_TYPE_BLUETOOTH, CM_ASL_BLUETOOTH); |
744 | 742 | ||
745 | if (result && result != -ENODEV) | 743 | if (result && result != -ENODEV) |
746 | goto exit; | 744 | goto exit; |
747 | 745 | ||
748 | result = eeepc_new_rfkill(&ehotk->wwan3g_rfkill, | 746 | result = eeepc_new_rfkill(&eeepc->wwan3g_rfkill, |
749 | "eeepc-wwan3g", dev, | 747 | "eeepc-wwan3g", dev, |
750 | RFKILL_TYPE_WWAN, CM_ASL_3G); | 748 | RFKILL_TYPE_WWAN, CM_ASL_3G); |
751 | 749 | ||
752 | if (result && result != -ENODEV) | 750 | if (result && result != -ENODEV) |
753 | goto exit; | 751 | goto exit; |
754 | 752 | ||
755 | result = eeepc_new_rfkill(&ehotk->wimax_rfkill, | 753 | result = eeepc_new_rfkill(&eeepc->wimax_rfkill, |
756 | "eeepc-wimax", dev, | 754 | "eeepc-wimax", dev, |
757 | RFKILL_TYPE_WIMAX, CM_ASL_WIMAX); | 755 | RFKILL_TYPE_WIMAX, CM_ASL_WIMAX); |
758 | 756 | ||
@@ -785,9 +783,9 @@ exit: | |||
785 | /* | 783 | /* |
786 | * Platform driver - hibernate/resume callbacks | 784 | * Platform driver - hibernate/resume callbacks |
787 | */ | 785 | */ |
788 | static int eeepc_hotk_thaw(struct device *device) | 786 | static int eeepc_thaw(struct device *device) |
789 | { | 787 | { |
790 | if (ehotk->wlan_rfkill) { | 788 | if (eeepc->wlan_rfkill) { |
791 | bool wlan; | 789 | bool wlan; |
792 | 790 | ||
793 | /* | 791 | /* |
@@ -802,33 +800,33 @@ static int eeepc_hotk_thaw(struct device *device) | |||
802 | return 0; | 800 | return 0; |
803 | } | 801 | } |
804 | 802 | ||
805 | static int eeepc_hotk_restore(struct device *device) | 803 | static int eeepc_restore(struct device *device) |
806 | { | 804 | { |
807 | /* Refresh both wlan rfkill state and pci hotplug */ | 805 | /* Refresh both wlan rfkill state and pci hotplug */ |
808 | if (ehotk->wlan_rfkill) | 806 | if (eeepc->wlan_rfkill) |
809 | eeepc_rfkill_hotplug(); | 807 | eeepc_rfkill_hotplug(); |
810 | 808 | ||
811 | if (ehotk->bluetooth_rfkill) | 809 | if (eeepc->bluetooth_rfkill) |
812 | rfkill_set_sw_state(ehotk->bluetooth_rfkill, | 810 | rfkill_set_sw_state(eeepc->bluetooth_rfkill, |
813 | get_acpi(CM_ASL_BLUETOOTH) != 1); | 811 | get_acpi(CM_ASL_BLUETOOTH) != 1); |
814 | if (ehotk->wwan3g_rfkill) | 812 | if (eeepc->wwan3g_rfkill) |
815 | rfkill_set_sw_state(ehotk->wwan3g_rfkill, | 813 | rfkill_set_sw_state(eeepc->wwan3g_rfkill, |
816 | get_acpi(CM_ASL_3G) != 1); | 814 | get_acpi(CM_ASL_3G) != 1); |
817 | if (ehotk->wimax_rfkill) | 815 | if (eeepc->wimax_rfkill) |
818 | rfkill_set_sw_state(ehotk->wimax_rfkill, | 816 | rfkill_set_sw_state(eeepc->wimax_rfkill, |
819 | get_acpi(CM_ASL_WIMAX) != 1); | 817 | get_acpi(CM_ASL_WIMAX) != 1); |
820 | 818 | ||
821 | return 0; | 819 | return 0; |
822 | } | 820 | } |
823 | 821 | ||
824 | static struct dev_pm_ops eeepc_pm_ops = { | 822 | static struct dev_pm_ops eeepc_pm_ops = { |
825 | .thaw = eeepc_hotk_thaw, | 823 | .thaw = eeepc_thaw, |
826 | .restore = eeepc_hotk_restore, | 824 | .restore = eeepc_restore, |
827 | }; | 825 | }; |
828 | 826 | ||
829 | static struct platform_driver platform_driver = { | 827 | static struct platform_driver platform_driver = { |
830 | .driver = { | 828 | .driver = { |
831 | .name = EEEPC_HOTK_FILE, | 829 | .name = EEEPC_LAPTOP_FILE, |
832 | .owner = THIS_MODULE, | 830 | .owner = THIS_MODULE, |
833 | .pm = &eeepc_pm_ops, | 831 | .pm = &eeepc_pm_ops, |
834 | } | 832 | } |
@@ -1018,7 +1016,7 @@ static int eeepc_backlight_init(struct device *dev) | |||
1018 | { | 1016 | { |
1019 | struct backlight_device *bd; | 1017 | struct backlight_device *bd; |
1020 | 1018 | ||
1021 | bd = backlight_device_register(EEEPC_HOTK_FILE, dev, | 1019 | bd = backlight_device_register(EEEPC_LAPTOP_FILE, dev, |
1022 | NULL, &eeepcbl_ops); | 1020 | NULL, &eeepcbl_ops); |
1023 | if (IS_ERR(bd)) { | 1021 | if (IS_ERR(bd)) { |
1024 | pr_err("Could not register eeepc backlight device\n"); | 1022 | pr_err("Could not register eeepc backlight device\n"); |
@@ -1063,12 +1061,12 @@ static void eeepc_input_notify(int event) | |||
1063 | if (key) { | 1061 | if (key) { |
1064 | switch (key->type) { | 1062 | switch (key->type) { |
1065 | case KE_KEY: | 1063 | case KE_KEY: |
1066 | input_report_key(ehotk->inputdev, key->keycode, | 1064 | input_report_key(eeepc->inputdev, key->keycode, |
1067 | 1); | 1065 | 1); |
1068 | input_sync(ehotk->inputdev); | 1066 | input_sync(eeepc->inputdev); |
1069 | input_report_key(ehotk->inputdev, key->keycode, | 1067 | input_report_key(eeepc->inputdev, key->keycode, |
1070 | 0); | 1068 | 0); |
1071 | input_sync(ehotk->inputdev); | 1069 | input_sync(eeepc->inputdev); |
1072 | break; | 1070 | break; |
1073 | } | 1071 | } |
1074 | } | 1072 | } |
@@ -1123,30 +1121,30 @@ static int eeepc_input_init(struct device *dev) | |||
1123 | const struct key_entry *key; | 1121 | const struct key_entry *key; |
1124 | int result; | 1122 | int result; |
1125 | 1123 | ||
1126 | ehotk->inputdev = input_allocate_device(); | 1124 | eeepc->inputdev = input_allocate_device(); |
1127 | if (!ehotk->inputdev) { | 1125 | if (!eeepc->inputdev) { |
1128 | pr_info("Unable to allocate input device\n"); | 1126 | pr_info("Unable to allocate input device\n"); |
1129 | return -ENOMEM; | 1127 | return -ENOMEM; |
1130 | } | 1128 | } |
1131 | ehotk->inputdev->name = "Asus EeePC extra buttons"; | 1129 | eeepc->inputdev->name = "Asus EeePC extra buttons"; |
1132 | ehotk->inputdev->dev.parent = dev; | 1130 | eeepc->inputdev->dev.parent = dev; |
1133 | ehotk->inputdev->phys = EEEPC_HOTK_FILE "/input0"; | 1131 | eeepc->inputdev->phys = EEEPC_LAPTOP_FILE "/input0"; |
1134 | ehotk->inputdev->id.bustype = BUS_HOST; | 1132 | eeepc->inputdev->id.bustype = BUS_HOST; |
1135 | ehotk->inputdev->getkeycode = eeepc_getkeycode; | 1133 | eeepc->inputdev->getkeycode = eeepc_getkeycode; |
1136 | ehotk->inputdev->setkeycode = eeepc_setkeycode; | 1134 | eeepc->inputdev->setkeycode = eeepc_setkeycode; |
1137 | 1135 | ||
1138 | for (key = eeepc_keymap; key->type != KE_END; key++) { | 1136 | for (key = eeepc_keymap; key->type != KE_END; key++) { |
1139 | switch (key->type) { | 1137 | switch (key->type) { |
1140 | case KE_KEY: | 1138 | case KE_KEY: |
1141 | set_bit(EV_KEY, ehotk->inputdev->evbit); | 1139 | set_bit(EV_KEY, eeepc->inputdev->evbit); |
1142 | set_bit(key->keycode, ehotk->inputdev->keybit); | 1140 | set_bit(key->keycode, eeepc->inputdev->keybit); |
1143 | break; | 1141 | break; |
1144 | } | 1142 | } |
1145 | } | 1143 | } |
1146 | result = input_register_device(ehotk->inputdev); | 1144 | result = input_register_device(eeepc->inputdev); |
1147 | if (result) { | 1145 | if (result) { |
1148 | pr_info("Unable to register input device\n"); | 1146 | pr_info("Unable to register input device\n"); |
1149 | input_free_device(ehotk->inputdev); | 1147 | input_free_device(eeepc->inputdev); |
1150 | return result; | 1148 | return result; |
1151 | } | 1149 | } |
1152 | return 0; | 1150 | return 0; |
@@ -1154,23 +1152,23 @@ static int eeepc_input_init(struct device *dev) | |||
1154 | 1152 | ||
1155 | static void eeepc_input_exit(void) | 1153 | static void eeepc_input_exit(void) |
1156 | { | 1154 | { |
1157 | if (ehotk->inputdev) | 1155 | if (eeepc->inputdev) |
1158 | input_unregister_device(ehotk->inputdev); | 1156 | input_unregister_device(eeepc->inputdev); |
1159 | } | 1157 | } |
1160 | 1158 | ||
1161 | /* | 1159 | /* |
1162 | * ACPI driver | 1160 | * ACPI driver |
1163 | */ | 1161 | */ |
1164 | static void eeepc_hotk_notify(struct acpi_device *device, u32 event) | 1162 | static void eeepc_acpi_notify(struct acpi_device *device, u32 event) |
1165 | { | 1163 | { |
1166 | u16 count; | 1164 | u16 count; |
1167 | 1165 | ||
1168 | if (event > ACPI_MAX_SYS_NOTIFY) | 1166 | if (event > ACPI_MAX_SYS_NOTIFY) |
1169 | return; | 1167 | return; |
1170 | count = ehotk->event_count[event % 128]++; | 1168 | count = eeepc->event_count[event % 128]++; |
1171 | acpi_bus_generate_proc_event(ehotk->device, event, count); | 1169 | acpi_bus_generate_proc_event(eeepc->device, event, count); |
1172 | acpi_bus_generate_netlink_event(ehotk->device->pnp.device_class, | 1170 | acpi_bus_generate_netlink_event(eeepc->device->pnp.device_class, |
1173 | dev_name(&ehotk->device->dev), event, | 1171 | dev_name(&eeepc->device->dev), event, |
1174 | count); | 1172 | count); |
1175 | 1173 | ||
1176 | if (event >= NOTIFY_BRN_MIN && event <= NOTIFY_BRN_MAX) { | 1174 | if (event >= NOTIFY_BRN_MIN && event <= NOTIFY_BRN_MAX) { |
@@ -1202,11 +1200,11 @@ static void cmsg_quirk(int cm, const char *name) | |||
1202 | 1200 | ||
1203 | /* Some BIOSes do not report cm although it is avaliable. | 1201 | /* Some BIOSes do not report cm although it is avaliable. |
1204 | Check if cm_getv[cm] works and, if yes, assume cm should be set. */ | 1202 | Check if cm_getv[cm] works and, if yes, assume cm should be set. */ |
1205 | if (!(ehotk->cm_supported & (1 << cm)) | 1203 | if (!(eeepc->cm_supported & (1 << cm)) |
1206 | && !read_acpi_int(ehotk->handle, cm_getv[cm], &dummy)) { | 1204 | && !read_acpi_int(eeepc->handle, cm_getv[cm], &dummy)) { |
1207 | pr_info("%s (%x) not reported by BIOS," | 1205 | pr_info("%s (%x) not reported by BIOS," |
1208 | " enabling anyway\n", name, 1 << cm); | 1206 | " enabling anyway\n", name, 1 << cm); |
1209 | ehotk->cm_supported |= 1 << cm; | 1207 | eeepc->cm_supported |= 1 << cm; |
1210 | } | 1208 | } |
1211 | } | 1209 | } |
1212 | 1210 | ||
@@ -1218,15 +1216,15 @@ static void cmsg_quirks(void) | |||
1218 | cmsg_quirk(CM_ASL_TPD, "TPD"); | 1216 | cmsg_quirk(CM_ASL_TPD, "TPD"); |
1219 | } | 1217 | } |
1220 | 1218 | ||
1221 | static int eeepc_hotk_init(void) | 1219 | static int eeepc_acpi_init(void) |
1222 | { | 1220 | { |
1223 | unsigned int init_flags; | 1221 | unsigned int init_flags; |
1224 | int result; | 1222 | int result; |
1225 | 1223 | ||
1226 | result = acpi_bus_get_status(ehotk->device); | 1224 | result = acpi_bus_get_status(eeepc->device); |
1227 | if (result) | 1225 | if (result) |
1228 | return result; | 1226 | return result; |
1229 | if (!ehotk->device->status.present) { | 1227 | if (!eeepc->device->status.present) { |
1230 | pr_err("Hotkey device not present, aborting\n"); | 1228 | pr_err("Hotkey device not present, aborting\n"); |
1231 | return -ENODEV; | 1229 | return -ENODEV; |
1232 | } | 1230 | } |
@@ -1234,18 +1232,18 @@ static int eeepc_hotk_init(void) | |||
1234 | init_flags = DISABLE_ASL_WLAN | DISABLE_ASL_DISPLAYSWITCH; | 1232 | init_flags = DISABLE_ASL_WLAN | DISABLE_ASL_DISPLAYSWITCH; |
1235 | pr_notice("Hotkey init flags 0x%x\n", init_flags); | 1233 | pr_notice("Hotkey init flags 0x%x\n", init_flags); |
1236 | 1234 | ||
1237 | if (write_acpi_int(ehotk->handle, "INIT", init_flags)) { | 1235 | if (write_acpi_int(eeepc->handle, "INIT", init_flags)) { |
1238 | pr_err("Hotkey initialization failed\n"); | 1236 | pr_err("Hotkey initialization failed\n"); |
1239 | return -ENODEV; | 1237 | return -ENODEV; |
1240 | } | 1238 | } |
1241 | 1239 | ||
1242 | /* get control methods supported */ | 1240 | /* get control methods supported */ |
1243 | if (read_acpi_int(ehotk->handle, "CMSG", &ehotk->cm_supported)) { | 1241 | if (read_acpi_int(eeepc->handle, "CMSG", &eeepc->cm_supported)) { |
1244 | pr_err("Get control methods supported failed\n"); | 1242 | pr_err("Get control methods supported failed\n"); |
1245 | return -ENODEV; | 1243 | return -ENODEV; |
1246 | } | 1244 | } |
1247 | cmsg_quirks(); | 1245 | cmsg_quirks(); |
1248 | pr_info("Get control methods supported: 0x%x\n", ehotk->cm_supported); | 1246 | pr_info("Get control methods supported: 0x%x\n", eeepc->cm_supported); |
1249 | 1247 | ||
1250 | return 0; | 1248 | return 0; |
1251 | } | 1249 | } |
@@ -1260,22 +1258,22 @@ static void __devinit eeepc_enable_camera(void) | |||
1260 | set_acpi(CM_ASL_CAMERA, 1); | 1258 | set_acpi(CM_ASL_CAMERA, 1); |
1261 | } | 1259 | } |
1262 | 1260 | ||
1263 | static int __devinit eeepc_hotk_add(struct acpi_device *device) | 1261 | static int __devinit eeepc_acpi_add(struct acpi_device *device) |
1264 | { | 1262 | { |
1265 | struct device *dev; | 1263 | struct device *dev; |
1266 | int result; | 1264 | int result; |
1267 | 1265 | ||
1268 | pr_notice(EEEPC_HOTK_NAME "\n"); | 1266 | pr_notice(EEEPC_LAPTOP_NAME "\n"); |
1269 | ehotk = kzalloc(sizeof(struct eeepc_hotk), GFP_KERNEL); | 1267 | eeepc = kzalloc(sizeof(struct eeepc_laptop), GFP_KERNEL); |
1270 | if (!ehotk) | 1268 | if (!eeepc) |
1271 | return -ENOMEM; | 1269 | return -ENOMEM; |
1272 | ehotk->handle = device->handle; | 1270 | eeepc->handle = device->handle; |
1273 | strcpy(acpi_device_name(device), EEEPC_HOTK_DEVICE_NAME); | 1271 | strcpy(acpi_device_name(device), EEEPC_ACPI_DEVICE_NAME); |
1274 | strcpy(acpi_device_class(device), EEEPC_HOTK_CLASS); | 1272 | strcpy(acpi_device_class(device), EEEPC_ACPI_CLASS); |
1275 | device->driver_data = ehotk; | 1273 | device->driver_data = eeepc; |
1276 | ehotk->device = device; | 1274 | eeepc->device = device; |
1277 | 1275 | ||
1278 | result = eeepc_hotk_init(); | 1276 | result = eeepc_acpi_init(); |
1279 | if (result) | 1277 | if (result) |
1280 | goto fail_platform; | 1278 | goto fail_platform; |
1281 | eeepc_enable_camera(); | 1279 | eeepc_enable_camera(); |
@@ -1283,7 +1281,6 @@ static int __devinit eeepc_hotk_add(struct acpi_device *device) | |||
1283 | result = eeepc_platform_init(); | 1281 | result = eeepc_platform_init(); |
1284 | if (result) | 1282 | if (result) |
1285 | goto fail_platform; | 1283 | goto fail_platform; |
1286 | |||
1287 | dev = &platform_device->dev; | 1284 | dev = &platform_device->dev; |
1288 | 1285 | ||
1289 | if (!acpi_video_backlight_support()) { | 1286 | if (!acpi_video_backlight_support()) { |
@@ -1322,12 +1319,12 @@ fail_input: | |||
1322 | fail_backlight: | 1319 | fail_backlight: |
1323 | eeepc_platform_exit(); | 1320 | eeepc_platform_exit(); |
1324 | fail_platform: | 1321 | fail_platform: |
1325 | kfree(ehotk); | 1322 | kfree(eeepc); |
1326 | 1323 | ||
1327 | return result; | 1324 | return result; |
1328 | } | 1325 | } |
1329 | 1326 | ||
1330 | static int eeepc_hotk_remove(struct acpi_device *device, int type) | 1327 | static int eeepc_acpi_remove(struct acpi_device *device, int type) |
1331 | { | 1328 | { |
1332 | eeepc_backlight_exit(); | 1329 | eeepc_backlight_exit(); |
1333 | eeepc_rfkill_exit(); | 1330 | eeepc_rfkill_exit(); |
@@ -1336,27 +1333,27 @@ static int eeepc_hotk_remove(struct acpi_device *device, int type) | |||
1336 | eeepc_led_exit(); | 1333 | eeepc_led_exit(); |
1337 | eeepc_platform_exit(); | 1334 | eeepc_platform_exit(); |
1338 | 1335 | ||
1339 | kfree(ehotk); | 1336 | kfree(eeepc); |
1340 | return 0; | 1337 | return 0; |
1341 | } | 1338 | } |
1342 | 1339 | ||
1343 | 1340 | ||
1344 | static const struct acpi_device_id eeepc_device_ids[] = { | 1341 | static const struct acpi_device_id eeepc_device_ids[] = { |
1345 | {EEEPC_HOTK_HID, 0}, | 1342 | {EEEPC_ACPI_HID, 0}, |
1346 | {"", 0}, | 1343 | {"", 0}, |
1347 | }; | 1344 | }; |
1348 | MODULE_DEVICE_TABLE(acpi, eeepc_device_ids); | 1345 | MODULE_DEVICE_TABLE(acpi, eeepc_device_ids); |
1349 | 1346 | ||
1350 | static struct acpi_driver eeepc_hotk_driver = { | 1347 | static struct acpi_driver eeepc_acpi_driver = { |
1351 | .name = EEEPC_HOTK_NAME, | 1348 | .name = EEEPC_LAPTOP_NAME, |
1352 | .class = EEEPC_HOTK_CLASS, | 1349 | .class = EEEPC_ACPI_CLASS, |
1353 | .owner = THIS_MODULE, | 1350 | .owner = THIS_MODULE, |
1354 | .ids = eeepc_device_ids, | 1351 | .ids = eeepc_device_ids, |
1355 | .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, | 1352 | .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, |
1356 | .ops = { | 1353 | .ops = { |
1357 | .add = eeepc_hotk_add, | 1354 | .add = eeepc_acpi_add, |
1358 | .remove = eeepc_hotk_remove, | 1355 | .remove = eeepc_acpi_remove, |
1359 | .notify = eeepc_hotk_notify, | 1356 | .notify = eeepc_acpi_notify, |
1360 | }, | 1357 | }, |
1361 | }; | 1358 | }; |
1362 | 1359 | ||
@@ -1369,17 +1366,17 @@ static int __init eeepc_laptop_init(void) | |||
1369 | if (result < 0) | 1366 | if (result < 0) |
1370 | return result; | 1367 | return result; |
1371 | 1368 | ||
1372 | result = acpi_bus_register_driver(&eeepc_hotk_driver); | 1369 | result = acpi_bus_register_driver(&eeepc_acpi_driver); |
1373 | if (result < 0) | 1370 | if (result < 0) |
1374 | goto fail_acpi_driver; | 1371 | goto fail_acpi_driver; |
1375 | if (!ehotk) { | 1372 | if (!eeepc) { |
1376 | result = -ENODEV; | 1373 | result = -ENODEV; |
1377 | goto fail_no_device; | 1374 | goto fail_no_device; |
1378 | } | 1375 | } |
1379 | return 0; | 1376 | return 0; |
1380 | 1377 | ||
1381 | fail_no_device: | 1378 | fail_no_device: |
1382 | acpi_bus_unregister_driver(&eeepc_hotk_driver); | 1379 | acpi_bus_unregister_driver(&eeepc_acpi_driver); |
1383 | fail_acpi_driver: | 1380 | fail_acpi_driver: |
1384 | platform_driver_unregister(&platform_driver); | 1381 | platform_driver_unregister(&platform_driver); |
1385 | return result; | 1382 | return result; |
@@ -1387,7 +1384,7 @@ fail_acpi_driver: | |||
1387 | 1384 | ||
1388 | static void __exit eeepc_laptop_exit(void) | 1385 | static void __exit eeepc_laptop_exit(void) |
1389 | { | 1386 | { |
1390 | acpi_bus_unregister_driver(&eeepc_hotk_driver); | 1387 | acpi_bus_unregister_driver(&eeepc_acpi_driver); |
1391 | platform_driver_unregister(&platform_driver); | 1388 | platform_driver_unregister(&platform_driver); |
1392 | } | 1389 | } |
1393 | 1390 | ||