mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.2 KiB
43 lines
1.2 KiB
// SPDX-License-Identifier: GPL-2.0-or-later |
|
#include <linux/module.h> |
|
#include <linux/sched/signal.h> |
|
#include <linux/acpi.h> |
|
#include <acpi/button.h> |
|
|
|
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_acpi_driver(acpi_tiny_power_button_driver);
|
|
|