diff options
Diffstat (limited to 'drivers/platform')
-rw-r--r-- | drivers/platform/x86/asus-laptop.c | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c index bfc1a8892a32..eaffe732653a 100644 --- a/drivers/platform/x86/asus-laptop.c +++ b/drivers/platform/x86/asus-laptop.c | |||
@@ -207,13 +207,17 @@ MODULE_DEVICE_TABLE(acpi, asus_device_ids); | |||
207 | 207 | ||
208 | static int asus_hotk_add(struct acpi_device *device); | 208 | static int asus_hotk_add(struct acpi_device *device); |
209 | static int asus_hotk_remove(struct acpi_device *device, int type); | 209 | static int asus_hotk_remove(struct acpi_device *device, int type); |
210 | static void asus_hotk_notify(struct acpi_device *device, u32 event); | ||
211 | |||
210 | static struct acpi_driver asus_hotk_driver = { | 212 | static struct acpi_driver asus_hotk_driver = { |
211 | .name = ASUS_HOTK_NAME, | 213 | .name = ASUS_HOTK_NAME, |
212 | .class = ASUS_HOTK_CLASS, | 214 | .class = ASUS_HOTK_CLASS, |
213 | .ids = asus_device_ids, | 215 | .ids = asus_device_ids, |
216 | .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, | ||
214 | .ops = { | 217 | .ops = { |
215 | .add = asus_hotk_add, | 218 | .add = asus_hotk_add, |
216 | .remove = asus_hotk_remove, | 219 | .remove = asus_hotk_remove, |
220 | .notify = asus_hotk_notify, | ||
217 | }, | 221 | }, |
218 | }; | 222 | }; |
219 | 223 | ||
@@ -812,7 +816,7 @@ static int asus_setkeycode(struct input_dev *dev, int scancode, int keycode) | |||
812 | return -EINVAL; | 816 | return -EINVAL; |
813 | } | 817 | } |
814 | 818 | ||
815 | static void asus_hotk_notify(acpi_handle handle, u32 event, void *data) | 819 | static void asus_hotk_notify(struct acpi_device *device, u32 event) |
816 | { | 820 | { |
817 | static struct key_entry *key; | 821 | static struct key_entry *key; |
818 | u16 count; | 822 | u16 count; |
@@ -1124,7 +1128,6 @@ static int asus_hotk_found; | |||
1124 | 1128 | ||
1125 | static int asus_hotk_add(struct acpi_device *device) | 1129 | static int asus_hotk_add(struct acpi_device *device) |
1126 | { | 1130 | { |
1127 | acpi_status status = AE_OK; | ||
1128 | int result; | 1131 | int result; |
1129 | 1132 | ||
1130 | if (!device) | 1133 | if (!device) |
@@ -1149,15 +1152,6 @@ static int asus_hotk_add(struct acpi_device *device) | |||
1149 | 1152 | ||
1150 | asus_hotk_add_fs(); | 1153 | asus_hotk_add_fs(); |
1151 | 1154 | ||
1152 | /* | ||
1153 | * We install the handler, it will receive the hotk in parameter, so, we | ||
1154 | * could add other data to the hotk struct | ||
1155 | */ | ||
1156 | status = acpi_install_notify_handler(hotk->handle, ACPI_ALL_NOTIFY, | ||
1157 | asus_hotk_notify, hotk); | ||
1158 | if (ACPI_FAILURE(status)) | ||
1159 | printk(ASUS_ERR "Error installing notify handler\n"); | ||
1160 | |||
1161 | asus_hotk_found = 1; | 1155 | asus_hotk_found = 1; |
1162 | 1156 | ||
1163 | /* WLED and BLED are on by default */ | 1157 | /* WLED and BLED are on by default */ |
@@ -1198,16 +1192,9 @@ end: | |||
1198 | 1192 | ||
1199 | static int asus_hotk_remove(struct acpi_device *device, int type) | 1193 | static int asus_hotk_remove(struct acpi_device *device, int type) |
1200 | { | 1194 | { |
1201 | acpi_status status = 0; | ||
1202 | |||
1203 | if (!device || !acpi_driver_data(device)) | 1195 | if (!device || !acpi_driver_data(device)) |
1204 | return -EINVAL; | 1196 | return -EINVAL; |
1205 | 1197 | ||
1206 | status = acpi_remove_notify_handler(hotk->handle, ACPI_ALL_NOTIFY, | ||
1207 | asus_hotk_notify); | ||
1208 | if (ACPI_FAILURE(status)) | ||
1209 | printk(ASUS_ERR "Error removing notify handler\n"); | ||
1210 | |||
1211 | kfree(hotk->name); | 1198 | kfree(hotk->name); |
1212 | kfree(hotk); | 1199 | kfree(hotk); |
1213 | 1200 | ||