at v6.2-rc2 47 lines 1.2 kB view raw
1// SPDX-License-Identifier: GPL-2.0-or-later 2#include <linux/module.h> 3#include <linux/sched/signal.h> 4#include <linux/acpi.h> 5#include <acpi/button.h> 6 7MODULE_AUTHOR("Josh Triplett"); 8MODULE_DESCRIPTION("ACPI Tiny Power Button Driver"); 9MODULE_LICENSE("GPL"); 10 11static int power_signal __read_mostly = CONFIG_ACPI_TINY_POWER_BUTTON_SIGNAL; 12module_param(power_signal, int, 0644); 13MODULE_PARM_DESC(power_signal, "Power button sends this signal to init"); 14 15static const struct acpi_device_id tiny_power_button_device_ids[] = { 16 { ACPI_BUTTON_HID_POWER, 0 }, 17 { ACPI_BUTTON_HID_POWERF, 0 }, 18 { "", 0 }, 19}; 20MODULE_DEVICE_TABLE(acpi, tiny_power_button_device_ids); 21 22static int acpi_noop_add(struct acpi_device *device) 23{ 24 return 0; 25} 26 27static void acpi_noop_remove(struct acpi_device *device) 28{ 29} 30 31static void acpi_tiny_power_button_notify(struct acpi_device *device, u32 event) 32{ 33 kill_cad_pid(power_signal, 1); 34} 35 36static struct acpi_driver acpi_tiny_power_button_driver = { 37 .name = "tiny-power-button", 38 .class = "tiny-power-button", 39 .ids = tiny_power_button_device_ids, 40 .ops = { 41 .add = acpi_noop_add, 42 .remove = acpi_noop_remove, 43 .notify = acpi_tiny_power_button_notify, 44 }, 45}; 46 47module_acpi_driver(acpi_tiny_power_button_driver);