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

Commit 4b721174 authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Jacek Anaszewski
Browse files

leds: trigger: Introduce a MTD (NAND/NOR) trigger



This commit introduces a MTD trigger for flash (NAND/NOR) device
activity. The implementation is copied from IDE disk.

This trigger deprecates the "nand-disk" LED trigger, but for backwards
compatibility, we still keep the "nand-disk" trigger around.

The motivation for deprecating the "nand-disk" LED trigger is that
it only works for NAND drivers, whereas the "mtd" LED trigger
is more generic (in fact, "nand-disk" currently only works for
certain NAND drivers).

Signed-off-by: default avatarEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
Acked-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: default avatarJacek Anaszewski <j.anaszewski@samsung.com>
parent 0c034fe3
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -41,6 +41,14 @@ config LEDS_TRIGGER_IDE_DISK
	  This allows LEDs to be controlled by IDE disk activity.
	  This allows LEDs to be controlled by IDE disk activity.
	  If unsure, say Y.
	  If unsure, say Y.


config LEDS_TRIGGER_MTD
	bool "LED MTD (NAND/NOR) Trigger"
	depends on MTD
	depends on LEDS_TRIGGERS
	help
	  This allows LEDs to be controlled by MTD activity.
	  If unsure, say N.

config LEDS_TRIGGER_HEARTBEAT
config LEDS_TRIGGER_HEARTBEAT
	tristate "LED Heartbeat Trigger"
	tristate "LED Heartbeat Trigger"
	depends on LEDS_TRIGGERS
	depends on LEDS_TRIGGERS
+1 −0
Original line number Original line Diff line number Diff line
obj-$(CONFIG_LEDS_TRIGGER_TIMER)	+= ledtrig-timer.o
obj-$(CONFIG_LEDS_TRIGGER_TIMER)	+= ledtrig-timer.o
obj-$(CONFIG_LEDS_TRIGGER_ONESHOT)	+= ledtrig-oneshot.o
obj-$(CONFIG_LEDS_TRIGGER_ONESHOT)	+= ledtrig-oneshot.o
obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK)	+= ledtrig-ide-disk.o
obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK)	+= ledtrig-ide-disk.o
obj-$(CONFIG_LEDS_TRIGGER_MTD)		+= ledtrig-mtd.o
obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT)	+= ledtrig-heartbeat.o
obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT)	+= ledtrig-heartbeat.o
obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT)	+= ledtrig-backlight.o
obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT)	+= ledtrig-backlight.o
obj-$(CONFIG_LEDS_TRIGGER_GPIO)		+= ledtrig-gpio.o
obj-$(CONFIG_LEDS_TRIGGER_GPIO)		+= ledtrig-gpio.o
+45 −0
Original line number Original line Diff line number Diff line
/*
 * LED MTD trigger
 *
 * Copyright 2016 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
 *
 * Based on LED IDE-Disk Activity Trigger
 *
 * Copyright 2006 Openedhand Ltd.
 *
 * Author: Richard Purdie <rpurdie@openedhand.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 */

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/leds.h>

#define BLINK_DELAY 30

DEFINE_LED_TRIGGER(ledtrig_mtd);
DEFINE_LED_TRIGGER(ledtrig_nand);

void ledtrig_mtd_activity(void)
{
	unsigned long blink_delay = BLINK_DELAY;

	led_trigger_blink_oneshot(ledtrig_mtd,
				  &blink_delay, &blink_delay, 0);
	led_trigger_blink_oneshot(ledtrig_nand,
				  &blink_delay, &blink_delay, 0);
}
EXPORT_SYMBOL(ledtrig_mtd_activity);

static int __init ledtrig_mtd_init(void)
{
	led_trigger_register_simple("mtd", &ledtrig_mtd);
	led_trigger_register_simple("nand-disk", &ledtrig_nand);

	return 0;
}
device_initcall(ledtrig_mtd_init);
+6 −0
Original line number Original line Diff line number Diff line
@@ -329,6 +329,12 @@ extern void ledtrig_ide_activity(void);
static inline void ledtrig_ide_activity(void) {}
static inline void ledtrig_ide_activity(void) {}
#endif
#endif


#ifdef CONFIG_LEDS_TRIGGER_MTD
extern void ledtrig_mtd_activity(void);
#else
static inline void ledtrig_mtd_activity(void) {}
#endif

#if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE)
#if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE)
extern void ledtrig_flash_ctrl(bool on);
extern void ledtrig_flash_ctrl(bool on);
extern void ledtrig_torch_ctrl(bool on);
extern void ledtrig_torch_ctrl(bool on);