diff options
author | Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> | 2016-04-12 16:46:40 -0400 |
---|---|---|
committer | Jacek Anaszewski <j.anaszewski@samsung.com> | 2016-04-13 04:23:14 -0400 |
commit | 4b721174c7976f26300e39aa42714fb5a54bebb5 (patch) | |
tree | 9d5df9d97b9acafc7634025c33aba36e31ff9100 | |
parent | 0c034fe37718990e0ffdd9622bd6cc5b4f93111f (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/Kconfig | 8 | ||||
-rw-r--r-- | drivers/leds/trigger/Makefile | 1 | ||||
-rw-r--r-- | drivers/leds/trigger/ledtrig-mtd.c | 45 | ||||
-rw-r--r-- | include/linux/leds.h | 6 |
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 | ||
44 | config 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 | |||
44 | config LEDS_TRIGGER_HEARTBEAT | 52 | config 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 @@ | |||
1 | obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o | 1 | obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o |
2 | obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o | 2 | obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o |
3 | obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o | 3 | obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o |
4 | obj-$(CONFIG_LEDS_TRIGGER_MTD) += ledtrig-mtd.o | ||
4 | obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o | 5 | obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o |
5 | obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o | 6 | obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o |
6 | obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o | 7 | obj-$(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 | |||
24 | DEFINE_LED_TRIGGER(ledtrig_mtd); | ||
25 | DEFINE_LED_TRIGGER(ledtrig_nand); | ||
26 | |||
27 | void 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 | } | ||
36 | EXPORT_SYMBOL(ledtrig_mtd_activity); | ||
37 | |||
38 | static 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 | } | ||
45 | device_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); | |||
329 | static inline void ledtrig_ide_activity(void) {} | 329 | static inline void ledtrig_ide_activity(void) {} |
330 | #endif | 330 | #endif |
331 | 331 | ||
332 | #ifdef CONFIG_LEDS_TRIGGER_MTD | ||
333 | extern void ledtrig_mtd_activity(void); | ||
334 | #else | ||
335 | static 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) |
333 | extern void ledtrig_flash_ctrl(bool on); | 339 | extern void ledtrig_flash_ctrl(bool on); |
334 | extern void ledtrig_torch_ctrl(bool on); | 340 | extern void ledtrig_torch_ctrl(bool on); |