// SPDX-License-Identifier: GPL-2.0-or-later #include #include #include #include ACPI_MODULE_NAME("tiny-power-button"); MODULE_AUTHOR("Josh Triplett"); MODULE_DESCRIPTION("ACPI Tiny Power Button Driver"); MODULE_LICENSE("GPL"); static int power_signal __read_mostly = CONFIG_ACPI_TINY_POWER_BUTTON_SIGNAL; module_param(power_signal, int, 0644); MODULE_PARM_DESC(power_signal, "Power button sends this signal to init"); static const struct acpi_device_id tiny_power_button_device_ids[] = { { ACPI_BUTTON_HID_POWER, 0 }, { ACPI_BUTTON_HID_POWERF, 0 }, { "", 0 }, }; MODULE_DEVICE_TABLE(acpi, tiny_power_button_device_ids); static int acpi_noop_add_remove(struct acpi_device *device) { return 0; } static void acpi_tiny_power_button_notify(struct acpi_device *device, u32 event) { kill_cad_pid(power_signal, 1); } static struct acpi_driver acpi_tiny_power_button_driver = { .name = "tiny-power-button", .class = "tiny-power-button", .ids = tiny_power_button_device_ids, .ops = { .add = acpi_noop_add_remove, .remove = acpi_noop_add_remove, .notify = acpi_tiny_power_button_notify, }, }; module_driver(acpi_tiny_power_button_driver, acpi_bus_register_driver, acpi_bus_unregister_driver);