Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Ezequiel Garcia and committed by
Jacek Anaszewski
4b721174 0c034fe3

+60
+8
drivers/leds/trigger/Kconfig
··· 41 41 This allows LEDs to be controlled by IDE disk activity. 42 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 52 config LEDS_TRIGGER_HEARTBEAT 45 53 tristate "LED Heartbeat Trigger" 46 54 depends on LEDS_TRIGGERS
+1
drivers/leds/trigger/Makefile
··· 1 1 obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o 2 2 obj-$(CONFIG_LEDS_TRIGGER_ONESHOT) += ledtrig-oneshot.o 3 3 obj-$(CONFIG_LEDS_TRIGGER_IDE_DISK) += ledtrig-ide-disk.o 4 + obj-$(CONFIG_LEDS_TRIGGER_MTD) += ledtrig-mtd.o 4 5 obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) += ledtrig-heartbeat.o 5 6 obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o 6 7 obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
+45
drivers/leds/trigger/ledtrig-mtd.c
··· 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);
+6
include/linux/leds.h
··· 329 329 static inline void ledtrig_ide_activity(void) {} 330 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 338 #if defined(CONFIG_LEDS_TRIGGER_CAMERA) || defined(CONFIG_LEDS_TRIGGER_CAMERA_MODULE) 333 339 extern void ledtrig_flash_ctrl(bool on); 334 340 extern void ledtrig_torch_ctrl(bool on);