aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEzequiel Garcia <ezequiel@vanguardiasur.com.ar>2016-04-12 16:46:40 -0400
committerJacek Anaszewski <j.anaszewski@samsung.com>2016-04-13 04:23:14 -0400
commit4b721174c7976f26300e39aa42714fb5a54bebb5 (patch)
tree9d5df9d97b9acafc7634025c33aba36e31ff9100
parent0c034fe37718990e0ffdd9622bd6cc5b4f93111f (diff)
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: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com> Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
-rw-r--r--drivers/leds/trigger/Kconfig8
-rw-r--r--drivers/leds/trigger/Makefile1
-rw-r--r--drivers/leds/trigger/ledtrig-mtd.c45
-rw-r--r--include/linux/leds.h6
4 files changed, 60 insertions, 0 deletions
diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig
index 554f5bfbeced..beac8c31c51b 100644
--- a/drivers/leds/trigger/Kconfig
+++ b/drivers/leds/trigger/Kconfig
@@ -41,6 +41,14 @@ config LEDS_TRIGGER_IDE_DISK
41 This allows LEDs to be controlled by IDE disk activity. 41 This allows LEDs to be controlled by IDE disk activity.
42 If unsure, say Y. 42 If unsure, say Y.
43 43
44config LEDS_TRIGGER_MTD
45 bool "LED MTD (NAND/NOR) Trigger"
46 depends on MTD
47 depends on LEDS_TRIGGERS
48 help
49 This allows LEDs to be controlled by MTD activity.
50 If unsure, say N.
51
44config LEDS_TRIGGER_HEARTBEAT 52config LEDS_TRIGGER_HEARTBEAT
45 tristate "LED Heartbeat Trigger" 53 tristate "LED Heartbeat Trigger"
46 depends on LEDS_TRIGGERS 54 depends on LEDS_TRIGGERS
diff --git a/drivers/leds/trigger/Makefile b/drivers/leds/trigger/Makefile
index 547bf5c80e52..8cc64a4f4e25 100644
--- a/drivers/leds/trigger/Makefile
+++ b/drivers/leds/trigger/Makefile
@@ -1,6 +1,7 @@
1obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o 1obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
2obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o 2obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o
3obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o 3obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o
4obj-$(CONFIG_LEDS_TRIGGER_MTD) += ledtrig-mtd.o
4obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o 5obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o
5obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o 6obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o
6obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o 7obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
diff --git a/drivers/leds/trigger/ledtrig-mtd.c b/drivers/leds/trigger/ledtrig-mtd.c
new file mode 100644
index 000000000000..99b5b0a4d826
--- /dev/null
+++ b/drivers/leds/trigger/ledtrig-mtd.c
@@ -0,0 +1,45 @@
1/*
2 * LED MTD trigger
3 *
4 * Copyright 2016 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
5 *
6 * Based on LED IDE-Disk Activity Trigger
7 *
8 * Copyright 2006 Openedhand Ltd.
9 *
10 * Author: Richard Purdie <rpurdie@openedhand.com>
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as
14 * published by the Free Software Foundation.
15 *
16 */
17
18#include <linux/kernel.h>
19#include <linux/init.h>
20#include <linux/leds.h>
21
22#define BLINK_DELAY 30
23
24DEFINE_LED_TRIGGER(ledtrig_mtd);
25DEFINE_LED_TRIGGER(ledtrig_nand);
26
27void ledtrig_mtd_activity(void)
28{
29 unsigned long blink_delay = BLINK_DELAY;
30
31 led_trigger_blink_oneshot(ledtrig_mtd,
32 &blink_delay, &blink_delay, 0);
33 led_trigger_blink_oneshot(ledtrig_nand,
34 &blink_delay, &blink_delay, 0);
35}
36EXPORT_SYMBOL(ledtrig_mtd_activity);
37
38static int __init ledtrig_mtd_init(void)
39{
40 led_trigger_register_simple("mtd", &ledtrig_mtd);
41 led_trigger_register_simple("nand-disk", &ledtrig_nand);
42
43 return 0;
44}
45device_initcall(ledtrig_mtd_init);
diff --git a/include/linux/leds.h b/include/linux/leds.h
index f203a8f89d30..19eb10278bea 100644
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -329,6 +329,12 @@ extern void ledtrig_ide_activity(void);
329static inline void ledtrig_ide_activity(void) {} 329static inline void ledtrig_ide_activity(void) {}
330#endif 330#endif
331 331
332#ifdef CONFIG_LEDS_TRIGGER_MTD
333extern void ledtrig_mtd_activity(void);
334#else
335static inline void ledtrig_mtd_activity(void) {}
336#endif
337
332#if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE) 338#if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE)
333extern void ledtrig_flash_ctrl(bool on); 339extern void ledtrig_flash_ctrl(bool on);
334extern void ledtrig_torch_ctrl(bool on); 340extern void ledtrig_torch_ctrl(bool on);