Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPI: Remove the old /proc/acpi/event interface

It is quite some time that this one has been deprecated.
Get rid of it.

Should some really important user be overseen, it may be reverted and
the userspace program worked on first, but it is time to do something
to get rid of this old stuff...

Signed-off-by: Thomas Renninger <trenn@suse.de>
Acked-by: Matthew Garrett <matthew.garrett@nebula.com>
Acked-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Thomas Renninger and committed by
Rafael J. Wysocki
1696d9dc ad81f054

+10 -305
+4 -4
Documentation/laptops/asus-laptop.txt
··· 8 8 9 9 This driver provides support for extra features of ACPI-compatible ASUS laptops. 10 10 It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or 11 - VICTOR XP7210 for example). It makes all the extra buttons generate standard 12 - ACPI events that go through /proc/acpi/events and input events (like keyboards). 11 + VICTOR XP7210 for example). It makes all the extra buttons generate input 12 + events (like keyboards). 13 13 On some models adds support for changing the display brightness and output, 14 14 switching the LCD backlight on and off, and most importantly, allows you to 15 15 blink those fancy LEDs intended for reporting mail and wireless status. ··· 55 55 DSDT) to me. 56 56 57 57 That's all, now, all the events generated by the hotkeys of your laptop 58 - should be reported in your /proc/acpi/event entry. You can check with 59 - "acpi_listen". 58 + should be reported via netlink events. You can check with 59 + "acpi_genl monitor" (part of the acpica project). 60 60 61 61 Hotkeys are also reported as input keys (like keyboards) you can check 62 62 which key are supported using "xev" under X11.
+4 -4
Documentation/laptops/sony-laptop.txt
··· 12 12 ------------------ 13 13 Some models report hotkeys through the SNC or SPIC devices, such events are 14 14 reported both through the ACPI subsystem as acpi events and through the INPUT 15 - subsystem. See the logs of acpid or /proc/acpi/event and 16 - /proc/bus/input/devices to find out what those events are and which input 17 - devices are created by the driver. Additionally, loading the driver with the 18 - debug option will report all events in the kernel log. 15 + subsystem. See the logs of /proc/bus/input/devices to find out what those 16 + events are and which input devices are created by the driver. 17 + Additionally, loading the driver with the debug option will report all events 18 + in the kernel log. 19 19 20 20 The "scancodes" passed to the input system (that can be remapped with udev) 21 21 are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c
-18
drivers/acpi/Kconfig
··· 91 91 Thus this option is a debug option that helps to write ACPI drivers 92 92 and can be used to identify ACPI code or EC firmware bugs. 93 93 94 - config ACPI_PROC_EVENT 95 - bool "Deprecated /proc/acpi/event support" 96 - depends on PROC_FS 97 - default y 98 - help 99 - A user-space daemon, acpid, typically reads /proc/acpi/event 100 - and handles all ACPI-generated events. 101 - 102 - These events are now delivered to user-space either 103 - via the input layer or as netlink events. 104 - 105 - This build option enables the old code for legacy 106 - user-space implementation. After some time, this will 107 - be moved under CONFIG_ACPI_PROCFS, and then deleted. 108 - 109 - Say Y here to retain the old behaviour. Say N if your 110 - user-space is newer than kernel 2.6.23 (September 2007). 111 - 112 94 config ACPI_AC 113 95 tristate "AC Adapter" 114 96 depends on X86
-1
drivers/acpi/ac.c
··· 267 267 msleep(ac_sleep_before_get_state_ms); 268 268 269 269 acpi_ac_get_state(ac); 270 - acpi_bus_generate_proc_event(device, event, (u32) ac->state); 271 270 acpi_bus_generate_netlink_event(device->pnp.device_class, 272 271 dev_name(&device->dev), event, 273 272 (u32) ac->state);
-1
drivers/acpi/acpi_pad.c
··· 452 452 switch (event) { 453 453 case ACPI_PROCESSOR_AGGREGATOR_NOTIFY: 454 454 acpi_pad_handle_notify(handle); 455 - acpi_bus_generate_proc_event(device, event, 0); 456 455 acpi_bus_generate_netlink_event(device->pnp.device_class, 457 456 dev_name(&device->dev), event, 0); 458 457 break;
-2
drivers/acpi/battery.c
··· 1034 1034 if (event == ACPI_BATTERY_NOTIFY_INFO) 1035 1035 acpi_battery_refresh(battery); 1036 1036 acpi_battery_update(battery); 1037 - acpi_bus_generate_proc_event(device, event, 1038 - acpi_battery_present(battery)); 1039 1037 acpi_bus_generate_netlink_event(device->pnp.device_class, 1040 1038 dev_name(&device->dev), event, 1041 1039 acpi_battery_present(battery));
-98
drivers/acpi/bus.c
··· 346 346 } 347 347 348 348 /* -------------------------------------------------------------------------- 349 - Event Management 350 - -------------------------------------------------------------------------- */ 351 - 352 - #ifdef CONFIG_ACPI_PROC_EVENT 353 - static DEFINE_SPINLOCK(acpi_bus_event_lock); 354 - 355 - LIST_HEAD(acpi_bus_event_list); 356 - DECLARE_WAIT_QUEUE_HEAD(acpi_bus_event_queue); 357 - 358 - extern int event_is_open; 359 - 360 - int acpi_bus_generate_proc_event4(const char *device_class, const char *bus_id, u8 type, int data) 361 - { 362 - struct acpi_bus_event *event; 363 - unsigned long flags; 364 - 365 - /* drop event on the floor if no one's listening */ 366 - if (!event_is_open) 367 - return 0; 368 - 369 - event = kzalloc(sizeof(struct acpi_bus_event), GFP_ATOMIC); 370 - if (!event) 371 - return -ENOMEM; 372 - 373 - strcpy(event->device_class, device_class); 374 - strcpy(event->bus_id, bus_id); 375 - event->type = type; 376 - event->data = data; 377 - 378 - spin_lock_irqsave(&acpi_bus_event_lock, flags); 379 - list_add_tail(&event->node, &acpi_bus_event_list); 380 - spin_unlock_irqrestore(&acpi_bus_event_lock, flags); 381 - 382 - wake_up_interruptible(&acpi_bus_event_queue); 383 - 384 - return 0; 385 - 386 - } 387 - 388 - EXPORT_SYMBOL_GPL(acpi_bus_generate_proc_event4); 389 - 390 - int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data) 391 - { 392 - if (!device) 393 - return -EINVAL; 394 - return acpi_bus_generate_proc_event4(device->pnp.device_class, 395 - device->pnp.bus_id, type, data); 396 - } 397 - 398 - EXPORT_SYMBOL(acpi_bus_generate_proc_event); 399 - 400 - int acpi_bus_receive_event(struct acpi_bus_event *event) 401 - { 402 - unsigned long flags; 403 - struct acpi_bus_event *entry = NULL; 404 - 405 - DECLARE_WAITQUEUE(wait, current); 406 - 407 - 408 - if (!event) 409 - return -EINVAL; 410 - 411 - if (list_empty(&acpi_bus_event_list)) { 412 - 413 - set_current_state(TASK_INTERRUPTIBLE); 414 - add_wait_queue(&acpi_bus_event_queue, &wait); 415 - 416 - if (list_empty(&acpi_bus_event_list)) 417 - schedule(); 418 - 419 - remove_wait_queue(&acpi_bus_event_queue, &wait); 420 - set_current_state(TASK_RUNNING); 421 - 422 - if (signal_pending(current)) 423 - return -ERESTARTSYS; 424 - } 425 - 426 - spin_lock_irqsave(&acpi_bus_event_lock, flags); 427 - if (!list_empty(&acpi_bus_event_list)) { 428 - entry = list_entry(acpi_bus_event_list.next, 429 - struct acpi_bus_event, node); 430 - list_del(&entry->node); 431 - } 432 - spin_unlock_irqrestore(&acpi_bus_event_lock, flags); 433 - 434 - if (!entry) 435 - return -ENODEV; 436 - 437 - memcpy(event, entry, sizeof(struct acpi_bus_event)); 438 - 439 - kfree(entry); 440 - 441 - return 0; 442 - } 443 - 444 - #endif /* CONFIG_ACPI_PROC_EVENT */ 445 - 446 - /* -------------------------------------------------------------------------- 447 349 Notification Handling 448 350 -------------------------------------------------------------------------- */ 449 351
-2
drivers/acpi/button.c
··· 303 303 304 304 pm_wakeup_event(&device->dev, 0); 305 305 } 306 - 307 - acpi_bus_generate_proc_event(device, event, ++button->pushed); 308 306 break; 309 307 default: 310 308 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-106
drivers/acpi/event.c
··· 21 21 #define _COMPONENT ACPI_SYSTEM_COMPONENT 22 22 ACPI_MODULE_NAME("event"); 23 23 24 - #ifdef CONFIG_ACPI_PROC_EVENT 25 - /* Global vars for handling event proc entry */ 26 - static DEFINE_SPINLOCK(acpi_system_event_lock); 27 - int event_is_open = 0; 28 - extern struct list_head acpi_bus_event_list; 29 - extern wait_queue_head_t acpi_bus_event_queue; 30 - 31 - static int acpi_system_open_event(struct inode *inode, struct file *file) 32 - { 33 - spin_lock_irq(&acpi_system_event_lock); 34 - 35 - if (event_is_open) 36 - goto out_busy; 37 - 38 - event_is_open = 1; 39 - 40 - spin_unlock_irq(&acpi_system_event_lock); 41 - return 0; 42 - 43 - out_busy: 44 - spin_unlock_irq(&acpi_system_event_lock); 45 - return -EBUSY; 46 - } 47 - 48 - static ssize_t 49 - acpi_system_read_event(struct file *file, char __user * buffer, size_t count, 50 - loff_t * ppos) 51 - { 52 - int result = 0; 53 - struct acpi_bus_event event; 54 - static char str[ACPI_MAX_STRING]; 55 - static int chars_remaining = 0; 56 - static char *ptr; 57 - 58 - if (!chars_remaining) { 59 - memset(&event, 0, sizeof(struct acpi_bus_event)); 60 - 61 - if ((file->f_flags & O_NONBLOCK) 62 - && (list_empty(&acpi_bus_event_list))) 63 - return -EAGAIN; 64 - 65 - result = acpi_bus_receive_event(&event); 66 - if (result) 67 - return result; 68 - 69 - chars_remaining = sprintf(str, "%s %s %08x %08x\n", 70 - event.device_class ? event. 71 - device_class : "<unknown>", 72 - event.bus_id ? event. 73 - bus_id : "<unknown>", event.type, 74 - event.data); 75 - ptr = str; 76 - } 77 - 78 - if (chars_remaining < count) { 79 - count = chars_remaining; 80 - } 81 - 82 - if (copy_to_user(buffer, ptr, count)) 83 - return -EFAULT; 84 - 85 - *ppos += count; 86 - chars_remaining -= count; 87 - ptr += count; 88 - 89 - return count; 90 - } 91 - 92 - static int acpi_system_close_event(struct inode *inode, struct file *file) 93 - { 94 - spin_lock_irq(&acpi_system_event_lock); 95 - event_is_open = 0; 96 - spin_unlock_irq(&acpi_system_event_lock); 97 - return 0; 98 - } 99 - 100 - static unsigned int acpi_system_poll_event(struct file *file, poll_table * wait) 101 - { 102 - poll_wait(file, &acpi_bus_event_queue, wait); 103 - if (!list_empty(&acpi_bus_event_list)) 104 - return POLLIN | POLLRDNORM; 105 - return 0; 106 - } 107 - 108 - static const struct file_operations acpi_system_event_ops = { 109 - .owner = THIS_MODULE, 110 - .open = acpi_system_open_event, 111 - .read = acpi_system_read_event, 112 - .release = acpi_system_close_event, 113 - .poll = acpi_system_poll_event, 114 - .llseek = default_llseek, 115 - }; 116 - #endif /* CONFIG_ACPI_PROC_EVENT */ 117 - 118 24 /* ACPI notifier chain */ 119 25 static BLOCKING_NOTIFIER_HEAD(acpi_chain_head); 120 26 ··· 186 280 187 281 static int __init acpi_event_init(void) 188 282 { 189 - #ifdef CONFIG_ACPI_PROC_EVENT 190 - struct proc_dir_entry *entry; 191 - #endif 192 283 int error = 0; 193 284 194 285 if (acpi_disabled) ··· 196 293 if (error) 197 294 printk(KERN_WARNING PREFIX 198 295 "Failed to create genetlink family for ACPI event\n"); 199 - 200 - #ifdef CONFIG_ACPI_PROC_EVENT 201 - /* 'event' [R] */ 202 - entry = proc_create("event", S_IRUSR, acpi_root_dir, 203 - &acpi_system_event_ops); 204 - if (!entry) 205 - return -ENODEV; 206 - #endif 207 - 208 296 return 0; 209 297 } 210 298
-4
drivers/acpi/processor_driver.c
··· 91 91 acpi_processor_ppc_has_changed(pr, 1); 92 92 if (saved == pr->performance_platform_limit) 93 93 break; 94 - acpi_bus_generate_proc_event(device, event, 95 - pr->performance_platform_limit); 96 94 acpi_bus_generate_netlink_event(device->pnp.device_class, 97 95 dev_name(&device->dev), event, 98 96 pr->performance_platform_limit); 99 97 break; 100 98 case ACPI_PROCESSOR_NOTIFY_POWER: 101 99 acpi_processor_cst_has_changed(pr); 102 - acpi_bus_generate_proc_event(device, event, 0); 103 100 acpi_bus_generate_netlink_event(device->pnp.device_class, 104 101 dev_name(&device->dev), event, 0); 105 102 break; 106 103 case ACPI_PROCESSOR_NOTIFY_THROTTLING: 107 104 acpi_processor_tstate_has_changed(pr); 108 - acpi_bus_generate_proc_event(device, event, 0); 109 105 acpi_bus_generate_netlink_event(device->pnp.device_class, 110 106 dev_name(&device->dev), event, 0); 111 107 break;
+2 -13
drivers/acpi/sbs.c
··· 873 873 u8 saved_charger_state = sbs->charger_present; 874 874 u8 saved_battery_state; 875 875 acpi_ac_get_present(sbs); 876 - if (sbs->charger_present != saved_charger_state) { 877 - #ifdef CONFIG_ACPI_PROC_EVENT 878 - acpi_bus_generate_proc_event4(ACPI_AC_CLASS, ACPI_AC_DIR_NAME, 879 - ACPI_SBS_NOTIFY_STATUS, 880 - sbs->charger_present); 881 - #endif 876 + if (sbs->charger_present != saved_charger_state) 882 877 kobject_uevent(&sbs->charger.dev->kobj, KOBJ_CHANGE); 883 - } 878 + 884 879 if (sbs->manager_present) { 885 880 for (id = 0; id < MAX_SBS_BAT; ++id) { 886 881 if (!(sbs->batteries_supported & (1 << id))) ··· 885 890 acpi_battery_read(bat); 886 891 if (saved_battery_state == bat->present) 887 892 continue; 888 - #ifdef CONFIG_ACPI_PROC_EVENT 889 - acpi_bus_generate_proc_event4(ACPI_BATTERY_CLASS, 890 - bat->name, 891 - ACPI_SBS_NOTIFY_STATUS, 892 - bat->present); 893 - #endif 894 893 kobject_uevent(&bat->bat.dev->kobj, KOBJ_CHANGE); 895 894 } 896 895 }
-3
drivers/acpi/thermal.c
··· 769 769 else 770 770 return 0; 771 771 772 - acpi_bus_generate_proc_event(tz->device, type, 1); 773 772 acpi_bus_generate_netlink_event(tz->device->pnp.device_class, 774 773 dev_name(&tz->device->dev), type, 1); 775 774 ··· 979 980 case ACPI_THERMAL_NOTIFY_THRESHOLDS: 980 981 acpi_thermal_trips_update(tz, ACPI_TRIPS_REFRESH_THRESHOLDS); 981 982 acpi_thermal_check(tz); 982 - acpi_bus_generate_proc_event(device, event, 0); 983 983 acpi_bus_generate_netlink_event(device->pnp.device_class, 984 984 dev_name(&device->dev), event, 0); 985 985 break; 986 986 case ACPI_THERMAL_NOTIFY_DEVICES: 987 987 acpi_thermal_trips_update(tz, ACPI_TRIPS_REFRESH_DEVICES); 988 988 acpi_thermal_check(tz); 989 - acpi_bus_generate_proc_event(device, event, 0); 990 989 acpi_bus_generate_netlink_event(device->pnp.device_class, 991 990 dev_name(&device->dev), event, 0); 992 991 break;
-10
drivers/acpi/video.c
··· 1556 1556 switch (event) { 1557 1557 case ACPI_VIDEO_NOTIFY_SWITCH: /* User requested a switch, 1558 1558 * most likely via hotkey. */ 1559 - acpi_bus_generate_proc_event(device, event, 0); 1560 1559 keycode = KEY_SWITCHVIDEOMODE; 1561 1560 break; 1562 1561 ··· 1563 1564 * connector. */ 1564 1565 acpi_video_device_enumerate(video); 1565 1566 acpi_video_device_rebind(video); 1566 - acpi_bus_generate_proc_event(device, event, 0); 1567 1567 keycode = KEY_SWITCHVIDEOMODE; 1568 1568 break; 1569 1569 1570 1570 case ACPI_VIDEO_NOTIFY_CYCLE: /* Cycle Display output hotkey pressed. */ 1571 - acpi_bus_generate_proc_event(device, event, 0); 1572 1571 keycode = KEY_SWITCHVIDEOMODE; 1573 1572 break; 1574 1573 case ACPI_VIDEO_NOTIFY_NEXT_OUTPUT: /* Next Display output hotkey pressed. */ 1575 - acpi_bus_generate_proc_event(device, event, 0); 1576 1574 keycode = KEY_VIDEO_NEXT; 1577 1575 break; 1578 1576 case ACPI_VIDEO_NOTIFY_PREV_OUTPUT: /* previous Display output hotkey pressed. */ 1579 - acpi_bus_generate_proc_event(device, event, 0); 1580 1577 keycode = KEY_VIDEO_PREV; 1581 1578 break; 1582 1579 ··· 1615 1620 case ACPI_VIDEO_NOTIFY_CYCLE_BRIGHTNESS: /* Cycle brightness */ 1616 1621 if (brightness_switch_enabled) 1617 1622 acpi_video_switch_brightness(video_device, event); 1618 - acpi_bus_generate_proc_event(device, event, 0); 1619 1623 keycode = KEY_BRIGHTNESS_CYCLE; 1620 1624 break; 1621 1625 case ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS: /* Increase brightness */ 1622 1626 if (brightness_switch_enabled) 1623 1627 acpi_video_switch_brightness(video_device, event); 1624 - acpi_bus_generate_proc_event(device, event, 0); 1625 1628 keycode = KEY_BRIGHTNESSUP; 1626 1629 break; 1627 1630 case ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS: /* Decrease brightness */ 1628 1631 if (brightness_switch_enabled) 1629 1632 acpi_video_switch_brightness(video_device, event); 1630 - acpi_bus_generate_proc_event(device, event, 0); 1631 1633 keycode = KEY_BRIGHTNESSDOWN; 1632 1634 break; 1633 1635 case ACPI_VIDEO_NOTIFY_ZERO_BRIGHTNESS: /* zero brightness */ 1634 1636 if (brightness_switch_enabled) 1635 1637 acpi_video_switch_brightness(video_device, event); 1636 - acpi_bus_generate_proc_event(device, event, 0); 1637 1638 keycode = KEY_BRIGHTNESS_ZERO; 1638 1639 break; 1639 1640 case ACPI_VIDEO_NOTIFY_DISPLAY_OFF: /* display device off */ 1640 1641 if (brightness_switch_enabled) 1641 1642 acpi_video_switch_brightness(video_device, event); 1642 - acpi_bus_generate_proc_event(device, event, 0); 1643 1643 keycode = KEY_DISPLAY_OFF; 1644 1644 break; 1645 1645 default:
-5
drivers/char/sonypi.c
··· 876 876 if (useinput) 877 877 sonypi_report_input_event(event); 878 878 879 - #ifdef CONFIG_ACPI 880 - if (sonypi_acpi_device) 881 - acpi_bus_generate_proc_event(sonypi_acpi_device, 1, event); 882 - #endif 883 - 884 879 kfifo_in_locked(&sonypi_device.fifo, (unsigned char *)&event, 885 880 sizeof(event), &sonypi_device.fifo_lock); 886 881 kill_fasync(&sonypi_device.fifo_async, SIGIO, POLL_IN);
-1
drivers/pci/hotplug/acpiphp_ibm.c
··· 270 270 271 271 if (subevent == 0x80) { 272 272 dbg("%s: generationg bus event\n", __func__); 273 - acpi_bus_generate_proc_event(note->device, note->event, detail); 274 273 acpi_bus_generate_netlink_event(note->device->pnp.device_class, 275 274 dev_name(&note->device->dev), 276 275 note->event, detail);
-1
drivers/platform/x86/asus-laptop.c
··· 1543 1543 1544 1544 /* TODO Find a better way to handle events count. */ 1545 1545 count = asus->event_count[event % 128]++; 1546 - acpi_bus_generate_proc_event(asus->device, event, count); 1547 1546 acpi_bus_generate_netlink_event(asus->device->pnp.device_class, 1548 1547 dev_name(&asus->device->dev), event, 1549 1548 count);
-1
drivers/platform/x86/eeepc-laptop.c
··· 1269 1269 if (event > ACPI_MAX_SYS_NOTIFY) 1270 1270 return; 1271 1271 count = eeepc->event_count[event % 128]++; 1272 - acpi_bus_generate_proc_event(device, event, count); 1273 1272 acpi_bus_generate_netlink_event(device->pnp.device_class, 1274 1273 dev_name(&device->dev), event, 1275 1274 count);
-4
drivers/platform/x86/fujitsu-laptop.c
··· 773 773 else 774 774 set_lcd_level(newb); 775 775 } 776 - acpi_bus_generate_proc_event(fujitsu->dev, 777 - ACPI_VIDEO_NOTIFY_INC_BRIGHTNESS, 0); 778 776 keycode = KEY_BRIGHTNESSUP; 779 777 } else if (oldb > newb) { 780 778 if (disable_brightness_adjust != 1) { ··· 781 783 else 782 784 set_lcd_level(newb); 783 785 } 784 - acpi_bus_generate_proc_event(fujitsu->dev, 785 - ACPI_VIDEO_NOTIFY_DEC_BRIGHTNESS, 0); 786 786 keycode = KEY_BRIGHTNESSDOWN; 787 787 } 788 788 break;
-3
drivers/platform/x86/panasonic-laptop.c
··· 464 464 "error getting hotkey status\n")); 465 465 return; 466 466 } 467 - 468 - acpi_bus_generate_proc_event(pcc->device, HKEY_NOTIFY, result); 469 - 470 467 if (!sparse_keymap_report_event(hotk_input_dev, 471 468 result & 0xf, result & 0x80, false)) 472 469 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
-4
drivers/platform/x86/sony-laptop.c
··· 1275 1275 ev_type = HOTKEY; 1276 1276 sony_laptop_report_input_event(real_ev); 1277 1277 } 1278 - 1279 - acpi_bus_generate_proc_event(sony_nc_acpi_device, ev_type, real_ev); 1280 - 1281 1278 acpi_bus_generate_netlink_event(sony_nc_acpi_device->pnp.device_class, 1282 1279 dev_name(&sony_nc_acpi_device->dev), ev_type, real_ev); 1283 1280 } ··· 4240 4243 4241 4244 found: 4242 4245 sony_laptop_report_input_event(device_event); 4243 - acpi_bus_generate_proc_event(dev->acpi_dev, 1, device_event); 4244 4246 sonypi_compat_report_event(device_event); 4245 4247 return IRQ_HANDLED; 4246 4248 }
-11
drivers/platform/x86/thinkpad_acpi.c
··· 2282 2282 static void tpacpi_hotkey_send_key(unsigned int scancode) 2283 2283 { 2284 2284 tpacpi_input_send_key_masked(scancode); 2285 - if (hotkey_report_mode < 2) { 2286 - acpi_bus_generate_proc_event(ibm_hotkey_acpidriver.device, 2287 - 0x80, TP_HKEY_EV_HOTKEY_BASE + scancode); 2288 - } 2289 2285 } 2290 2286 2291 2287 static void hotkey_read_nvram(struct tp_nvram_state *n, const u32 m) ··· 3731 3735 pr_notice("unhandled HKEY event 0x%04x\n", hkey); 3732 3736 pr_notice("please report the conditions when this " 3733 3737 "event happened to %s\n", TPACPI_MAIL); 3734 - } 3735 - 3736 - /* Legacy events */ 3737 - if (!ignore_acpi_ev && 3738 - (send_acpi_ev || hotkey_report_mode < 2)) { 3739 - acpi_bus_generate_proc_event(ibm->acpi->device, 3740 - event, hkey); 3741 3738 } 3742 3739 3743 3740 /* netlink events */
-9
include/acpi/acpi_bus.h
··· 383 383 static inline bool acpi_bus_can_wakeup(acpi_handle handle) { return false; } 384 384 #endif 385 385 386 - #ifdef CONFIG_ACPI_PROC_EVENT 387 - int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data); 388 - int acpi_bus_generate_proc_event4(const char *class, const char *bid, u8 type, int data); 389 - int acpi_bus_receive_event(struct acpi_bus_event *event); 390 - #else 391 - static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 type, int data) 392 - { return 0; } 393 - #endif 394 - 395 386 void acpi_scan_lock_acquire(void); 396 387 void acpi_scan_lock_release(void); 397 388 int acpi_scan_add_handler(struct acpi_scan_handler *handler);