* [PATCH v2] ARM: highbank: handle soft poweroff and reset key events
@ 2013-12-04 17:05 Rob Herring
2013-12-04 17:29 ` Olof Johansson
0 siblings, 1 reply; 2+ messages in thread
From: Rob Herring @ 2013-12-04 17:05 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <rob.herring@calxeda.com>
Graceful reboot and poweroff via IPMI commands to the management
processor don't work. Power and reset keys are events from the
management processor which are generated via IPC messages. Passing
the keys to userspace does not work as neither acpid nor a desktop
environment are present.
This adds a notifier handler for the IPC messages so the kernel can
handle the key events directly and IPMI graceful shutdown will work.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
---
v2: Re-word the commit msg to give better description of the issue.
arch/arm/mach-highbank/highbank.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
index b3d7e56..bd3bf66 100644
--- a/arch/arm/mach-highbank/highbank.c
+++ b/arch/arm/mach-highbank/highbank.c
@@ -17,12 +17,15 @@
#include <linux/clkdev.h>
#include <linux/clocksource.h>
#include <linux/dma-mapping.h>
+#include <linux/input.h>
#include <linux/io.h>
#include <linux/irqchip.h>
+#include <linux/mailbox.h>
#include <linux/of.h>
#include <linux/of_irq.h>
#include <linux/of_platform.h>
#include <linux/of_address.h>
+#include <linux/reboot.h>
#include <linux/amba/bus.h>
#include <linux/platform_device.h>
@@ -130,6 +133,24 @@ static struct platform_device highbank_cpuidle_device = {
.name = "cpuidle-calxeda",
};
+static int hb_keys_notifier(struct notifier_block *nb, unsigned long event, void *data)
+{
+ u32 key = *(u32 *)data;
+
+ if (event != 0x1000)
+ return 0;
+
+ if (key == KEY_POWER)
+ orderly_poweroff(false);
+ else if (key == 0xffff)
+ ctrl_alt_del();
+
+ return 0;
+}
+static struct notifier_block hb_keys_nb = {
+ .notifier_call = hb_keys_notifier,
+};
+
static void __init highbank_init(void)
{
struct device_node *np;
@@ -145,6 +166,8 @@ static void __init highbank_init(void)
bus_register_notifier(&platform_bus_type, &highbank_platform_nb);
bus_register_notifier(&amba_bustype, &highbank_amba_nb);
+ pl320_ipc_register_notifier(&hb_keys_nb);
+
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
if (psci_ops.cpu_suspend)
--
1.8.3.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH v2] ARM: highbank: handle soft poweroff and reset key events
2013-12-04 17:05 [PATCH v2] ARM: highbank: handle soft poweroff and reset key events Rob Herring
@ 2013-12-04 17:29 ` Olof Johansson
0 siblings, 0 replies; 2+ messages in thread
From: Olof Johansson @ 2013-12-04 17:29 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Dec 04, 2013 at 11:05:17AM -0600, Rob Herring wrote:
> From: Rob Herring <rob.herring@calxeda.com>
>
> Graceful reboot and poweroff via IPMI commands to the management
> processor don't work. Power and reset keys are events from the
> management processor which are generated via IPC messages. Passing
> the keys to userspace does not work as neither acpid nor a desktop
> environment are present.
>
> This adds a notifier handler for the IPC messages so the kernel can
> handle the key events directly and IPMI graceful shutdown will work.
>
> Signed-off-by: Rob Herring <rob.herring@calxeda.com>
> ---
> v2: Re-word the commit msg to give better description of the issue.
Applied, and cc:d stable in the commit message. Thanks for rewording and
explaining why it's considered a bugfix.
-Olof
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-12-04 17:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-04 17:05 [PATCH v2] ARM: highbank: handle soft poweroff and reset key events Rob Herring
2013-12-04 17:29 ` Olof Johansson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox