blob: a3f2bf4e4f48418143d587713d1497b36e39f854 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2019 Ahmad Fatoum, Pengutronix
#include <common.h>
#include <restart.h>
#include <poweroff.h>
#include <init.h>
#include <input/input.h>
#include <dt-bindings/input/linux-event-codes.h>
static void input_specialkeys_notify(struct input_notifier *in,
struct input_event *ev)
{
switch (ev->code) {
case KEY_RESTART:
pr_info("Triggering reset due to special key.\n");
restart_machine();
break;
case KEY_POWER:
pr_info("Triggering poweroff due to special key.\n");
poweroff_machine();
break;
}
pr_debug("ignoring code: %d\n", ev->code);
}
static struct input_notifier notifier;
static int input_specialkeys_init(void)
{
notifier.notify = input_specialkeys_notify;
return input_register_notfier(¬ifier);
}
late_initcall(input_specialkeys_init);
|