From: Jacek Anaszewski <j.anaszewski@samsung.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Richard Purdie <rpurdie@rpsys.net>,
linux-leds@vger.kernel.org, linux-pm@vger.kernel.org,
Ulf Hansson <ulf.hansson@linaro.org>
Subject: Re: [PATCH] leds: handle suspend/resume in heartbeat trigger
Date: Fri, 03 Jun 2016 10:41:08 +0200 [thread overview]
Message-ID: <575142A4.5030603@samsung.com> (raw)
In-Reply-To: <1464874906-13120-1-git-send-email-linus.walleij@linaro.org>
Hi Linus,
Thanks for the patch, applied.
Best regards,
Jacek Anaszewski
On 06/02/2016 03:41 PM, Linus Walleij wrote:
> The following phenomena was observed: when suspending the
> system, sometimes the heartbeat LED was left on, glowing and
> wasting power while the rest of the system is asleep, also
> disturbing power dissapation measures on the odd suspend
> cycle when it's left on.
>
> Clearly this is not how we want the heartbeat trigger to
> work: it should turn off and leave the LED off during
> system suspend.
>
> This removes the heartbeat trigger when preparing suspend and
> restores it during resume. The trigger code will make sure all
> LEDs are left in OFF state after removing the trigger, and
> will re-enable the trigger on all LEDs after resuming.
>
> Cc: linux-pm@vger.kernel.org
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> drivers/leds/trigger/ledtrig-heartbeat.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/drivers/leds/trigger/ledtrig-heartbeat.c b/drivers/leds/trigger/ledtrig-heartbeat.c
> index 410c39c62dc7..c80e91152b6b 100644
> --- a/drivers/leds/trigger/ledtrig-heartbeat.c
> +++ b/drivers/leds/trigger/ledtrig-heartbeat.c
> @@ -19,6 +19,7 @@
> #include <linux/sched.h>
> #include <linux/leds.h>
> #include <linux/reboot.h>
> +#include <linux/suspend.h>
> #include "../leds.h"
>
> static int panic_heartbeats;
> @@ -154,6 +155,26 @@ static struct led_trigger heartbeat_led_trigger = {
> .deactivate = heartbeat_trig_deactivate,
> };
>
> +static int heartbeat_pm_notifier(struct notifier_block *nb,
> + unsigned long pm_event, void *unused)
> +{
> + int rc;
> +
> + switch (pm_event) {
> + case PM_SUSPEND_PREPARE:
> + led_trigger_unregister(&heartbeat_led_trigger);
> + break;
> + case PM_POST_SUSPEND:
> + rc = led_trigger_register(&heartbeat_led_trigger);
> + if (rc)
> + pr_err("could not re-register heartbeat trigger\n");
> + break;
> + default:
> + break;
> + }
> + return NOTIFY_DONE;
> +}
> +
> static int heartbeat_reboot_notifier(struct notifier_block *nb,
> unsigned long code, void *unused)
> {
> @@ -168,6 +189,10 @@ static int heartbeat_panic_notifier(struct notifier_block *nb,
> return NOTIFY_DONE;
> }
>
> +static struct notifier_block heartbeat_pm_nb = {
> + .notifier_call = heartbeat_pm_notifier,
> +};
> +
> static struct notifier_block heartbeat_reboot_nb = {
> .notifier_call = heartbeat_reboot_notifier,
> };
> @@ -184,12 +209,14 @@ static int __init heartbeat_trig_init(void)
> atomic_notifier_chain_register(&panic_notifier_list,
> &heartbeat_panic_nb);
> register_reboot_notifier(&heartbeat_reboot_nb);
> + register_pm_notifier(&heartbeat_pm_nb);
> }
> return rc;
> }
>
> static void __exit heartbeat_trig_exit(void)
> {
> + unregister_pm_notifier(&heartbeat_pm_nb);
> unregister_reboot_notifier(&heartbeat_reboot_nb);
> atomic_notifier_chain_unregister(&panic_notifier_list,
> &heartbeat_panic_nb);
>
next prev parent reply other threads:[~2016-06-03 8:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-02 13:41 [PATCH] leds: handle suspend/resume in heartbeat trigger Linus Walleij
2016-06-03 8:41 ` Jacek Anaszewski [this message]
2016-06-03 9:32 ` Ulf Hansson
2016-06-03 10:04 ` Jacek Anaszewski
2016-06-08 8:28 ` Linus Walleij
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=575142A4.5030603@samsung.com \
--to=j.anaszewski@samsung.com \
--cc=linus.walleij@linaro.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rpurdie@rpsys.net \
--cc=ulf.hansson@linaro.org \
/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