mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: duhuanpeng <iu87m888m@qq.com>
To: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: barebox@lists.infradead.org, Oleksij Rempel <o.rempel@pengutronix.de>
Subject: Re: [PATCH] input: add handler for reset and power key input events
Date: Thu, 29 Aug 2019 19:26:26 +0800	[thread overview]
Message-ID: <20190829112626.GA10723@router.tkernel.org> (raw)
In-Reply-To: <20190829052808.25624-1-a.fatoum@pengutronix.de>

Hello, I merged this patch to my barebox. and test on my own board.

1. Abort barebox booting and enter the console.
   the board reboots immediately when I press the button without release.
   here is my .dts about this button:

                net {
                        label = "board:LED1:system";
                        gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
                        default-state = "off";
                        barebox,default-trigger = "net";
                };

2. Panic.
   type 'go 888' make barebox panic. now I really need a 'reset' key.
   I press and releaes the key, and try to hold this key several seconds.
   no reaction.

Is the 'reset' key designed for reset the board when something goes wrong?

Regards,
duhuanpeng


On Thu, Aug 29, 2019 at 07:28:08AM +0200, Ahmad Fatoum wrote:
> Kernel device trees may indicate linux,code = KEY_POWER or KEY_RESTART,
> mostly for gpio-keys. Make barebox able to act on them by registering an
> appropriate input notifier.
> 
> Suggested-by: Oleksij Rempel <o.rempel@pengutronix.de>
> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> ---
>  drivers/input/Kconfig       |  6 ++++++
>  drivers/input/Makefile      |  1 +
>  drivers/input/specialkeys.c | 36 ++++++++++++++++++++++++++++++++++++
>  3 files changed, 43 insertions(+)
>  create mode 100644 drivers/input/specialkeys.c
> 
> diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig
> index 1f89ae3892dc..be061683fb0a 100644
> --- a/drivers/input/Kconfig
> +++ b/drivers/input/Kconfig
> @@ -64,4 +64,10 @@ config KEYBOARD_USB
>  	help
>  	  This driver implements support for usb keyboard.
>  
> +config INPUT_SPECIALKEYS
> +	bool "Special keys handler"
> +	select INPUT
> +	help
> +	  Say Y here to handle key events like KEY_RESTART and KEY_POWER.
> +
>  endmenu
> diff --git a/drivers/input/Makefile b/drivers/input/Makefile
> index e694a98d1087..36a4204d5308 100644
> --- a/drivers/input/Makefile
> +++ b/drivers/input/Makefile
> @@ -5,3 +5,4 @@ obj-$(CONFIG_KEYBOARD_GPIO) += gpio_keys.o
>  obj-$(CONFIG_KEYBOARD_TWL6030) += twl6030_pwrbtn.o
>  obj-$(CONFIG_KEYBOARD_IMX_KEYPAD) += imx_keypad.o
>  obj-$(CONFIG_KEYBOARD_QT1070) += qt1070.o
> +obj-$(CONFIG_INPUT_SPECIALKEYS)	+= specialkeys.o
> diff --git a/drivers/input/specialkeys.c b/drivers/input/specialkeys.c
> new file mode 100644
> index 000000000000..51ee43218192
> --- /dev/null
> +++ b/drivers/input/specialkeys.c
> @@ -0,0 +1,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_debug("code: %d. Triggering reset.\n", ev->code);
> +		restart_machine();
> +		break;
> +
> +	case KEY_POWER:
> +		pr_debug("code: %d. Triggering poweroff.\n", ev->code);
> +		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(&notifier);
> +}
> +late_initcall(input_specialkeys_init);
> -- 
> 2.23.0
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 



_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2019-08-29 11:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-29  5:28 Ahmad Fatoum
2019-08-29  6:41 ` Oleksij Rempel
2019-08-30  9:41   ` Ahmad Fatoum
2019-08-29 11:26 ` duhuanpeng [this message]
2019-08-30  9:02   ` Ahmad Fatoum
2019-08-30  9:33     ` Oleksij Rempel
2019-09-02  7:24       ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190829112626.GA10723@router.tkernel.org \
    --to=iu87m888m@qq.com \
    --cc=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=o.rempel@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox