From c9e0749440730232b570d178446d6079fa186ad4 Mon Sep 17 00:00:00 2001 From: Alexander Holler Date: Tue, 29 May 2012 15:07:29 -0700 Subject: [PATCH] --- yaml --- r: 308975 b: refs/heads/master c: 49dca5aebfdeadd4bf27b6cb4c60392147dc35a4 h: refs/heads/master i: 308973: 709810451a3620808d448e96ea73277e8aba5881 308971: a1a610cbd756da6948f493baddfce8b0e2d23faf 308967: dc80438afac942966889e537e5dcf11b1c13cca8 308959: 9537140b2b7db392b8b13848b146bac8825975e5 v: v3 --- [refs] | 2 +- trunk/drivers/leds/ledtrig-heartbeat.c | 28 +++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 836c57e25f7c..f136492620bd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6335f8fa974bc284da0f55877935538e1d7b55eb +refs/heads/master: 49dca5aebfdeadd4bf27b6cb4c60392147dc35a4 diff --git a/trunk/drivers/leds/ledtrig-heartbeat.c b/trunk/drivers/leds/ledtrig-heartbeat.c index 1aacf4c6c3e4..41dc76db4311 100644 --- a/trunk/drivers/leds/ledtrig-heartbeat.c +++ b/trunk/drivers/leds/ledtrig-heartbeat.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "leds.h" struct heartbeat_trig_data { @@ -103,13 +104,38 @@ static struct led_trigger heartbeat_led_trigger = { .deactivate = heartbeat_trig_deactivate, }; +static int heartbeat_reboot_notifier(struct notifier_block *nb, + unsigned long code, void *unused) +{ + led_trigger_unregister(&heartbeat_led_trigger); + return NOTIFY_DONE; +} + +static struct notifier_block heartbeat_reboot_nb = { + .notifier_call = heartbeat_reboot_notifier, +}; + +static struct notifier_block heartbeat_panic_nb = { + .notifier_call = heartbeat_reboot_notifier, +}; + static int __init heartbeat_trig_init(void) { - return led_trigger_register(&heartbeat_led_trigger); + int rc = led_trigger_register(&heartbeat_led_trigger); + + if (!rc) { + atomic_notifier_chain_register(&panic_notifier_list, + &heartbeat_panic_nb); + register_reboot_notifier(&heartbeat_reboot_nb); + } + return rc; } static void __exit heartbeat_trig_exit(void) { + unregister_reboot_notifier(&heartbeat_reboot_nb); + atomic_notifier_chain_unregister(&panic_notifier_list, + &heartbeat_panic_nb); led_trigger_unregister(&heartbeat_led_trigger); }