Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24eee627 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull leds fix from Bryan Wu:
 "Fix for heartbeat led trigger driver"

* 'fixes-for-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
  leds: heartbeat: fix bug on panic
parents 5eecb9cc fb31fbeb
Loading
Loading
Loading
Loading
+15 −1
Original line number Original line Diff line number Diff line
@@ -21,6 +21,8 @@
#include <linux/reboot.h>
#include <linux/reboot.h>
#include "leds.h"
#include "leds.h"


static int panic_heartbeats;

struct heartbeat_trig_data {
struct heartbeat_trig_data {
	unsigned int phase;
	unsigned int phase;
	unsigned int period;
	unsigned int period;
@@ -34,6 +36,11 @@ static void led_heartbeat_function(unsigned long data)
	unsigned long brightness = LED_OFF;
	unsigned long brightness = LED_OFF;
	unsigned long delay = 0;
	unsigned long delay = 0;


	if (unlikely(panic_heartbeats)) {
		led_set_brightness(led_cdev, LED_OFF);
		return;
	}

	/* acts like an actual heart beat -- ie thump-thump-pause... */
	/* acts like an actual heart beat -- ie thump-thump-pause... */
	switch (heartbeat_data->phase) {
	switch (heartbeat_data->phase) {
	case 0:
	case 0:
@@ -111,12 +118,19 @@ static int heartbeat_reboot_notifier(struct notifier_block *nb,
	return NOTIFY_DONE;
	return NOTIFY_DONE;
}
}


static int heartbeat_panic_notifier(struct notifier_block *nb,
				     unsigned long code, void *unused)
{
	panic_heartbeats = 1;
	return NOTIFY_DONE;
}

static struct notifier_block heartbeat_reboot_nb = {
static struct notifier_block heartbeat_reboot_nb = {
	.notifier_call = heartbeat_reboot_notifier,
	.notifier_call = heartbeat_reboot_notifier,
};
};


static struct notifier_block heartbeat_panic_nb = {
static struct notifier_block heartbeat_panic_nb = {
	.notifier_call = heartbeat_reboot_notifier,
	.notifier_call = heartbeat_panic_notifier,
};
};


static int __init heartbeat_trig_init(void)
static int __init heartbeat_trig_init(void)