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

Commit 3740e49c authored by Fabio Baltieri's avatar Fabio Baltieri Committed by Bryan Wu
Browse files

ledtrig-ide-disk: use generic one-shot blink api



Convert ledtrig-ide-disk code to use the generic API for one-shot LED
blinking.

This patch changes slightly the behaviour of the trigger, as while the
original version kept the LED on under heavy activity, the new one keeps
a constant on-off blink at 1 / (2 * BLINK_DELAY) Hz.

(bryan.wu@canonical.com: remove 2 useless included header files)

Signed-off-by: default avatarFabio Baltieri <fabio.baltieri@gmail.com>
Signed-off-by: default avatarBryan Wu <bryan.wu@canonical.com>
parent 5bb629c5
Loading
Loading
Loading
Loading
+4 −21
Original line number Diff line number Diff line
@@ -12,39 +12,22 @@
 */

#include <linux/module.h>
#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/timer.h>
#include <linux/leds.h>

static void ledtrig_ide_timerfunc(unsigned long data);
#define BLINK_DELAY 30

DEFINE_LED_TRIGGER(ledtrig_ide);
static DEFINE_TIMER(ledtrig_ide_timer, ledtrig_ide_timerfunc, 0, 0);
static int ide_activity;
static int ide_lastactivity;
static unsigned long ide_blink_delay = BLINK_DELAY;

void ledtrig_ide_activity(void)
{
	ide_activity++;
	if (!timer_pending(&ledtrig_ide_timer))
		mod_timer(&ledtrig_ide_timer, jiffies + msecs_to_jiffies(10));
	led_trigger_blink_oneshot(ledtrig_ide,
				  &ide_blink_delay, &ide_blink_delay, 0);
}
EXPORT_SYMBOL(ledtrig_ide_activity);

static void ledtrig_ide_timerfunc(unsigned long data)
{
	if (ide_lastactivity != ide_activity) {
		ide_lastactivity = ide_activity;
		/* INT_MAX will set each LED to its maximum brightness */
		led_trigger_event(ledtrig_ide, INT_MAX);
		mod_timer(&ledtrig_ide_timer, jiffies + msecs_to_jiffies(10));
	} else {
		led_trigger_event(ledtrig_ide, LED_OFF);
	}
}

static int __init ledtrig_ide_init(void)
{
	led_trigger_register_simple("ide-disk", &ledtrig_ide);