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

leds: trigger: Introduce a kernel panic LED trigger

This commit introduces a new LED trigger which allows to configure
a LED to blink on a kernel panic (through panic_blink).

Notice that currently the Openmoko FreeRunner (GTA02) mach code
sets panic_blink to blink a hard-coded LED. The new trigger is
meant to introduce a generic mechanism to achieve this.

Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>

authored by

Ezequiel Garcia and committed by
Jacek Anaszewski
916fe619 f55532a0

+38
+7
drivers/leds/trigger/Kconfig
··· 108 108 This enables direct flash/torch on/off by the driver, kernel space. 109 109 If unsure, say Y. 110 110 111 + config LEDS_TRIGGER_PANIC 112 + bool "LED Panic Trigger" 113 + depends on LEDS_TRIGGERS 114 + help 115 + This allows LEDs to be configured to blink on a kernel panic. 116 + If unsure, say Y. 117 + 111 118 endif # LEDS_TRIGGERS
+1
drivers/leds/trigger/Makefile
··· 8 8 obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o 9 9 obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o 10 10 obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o 11 + obj-$(CONFIG_LEDS_TRIGGER_PANIC) += ledtrig-panic.o
+30
drivers/leds/trigger/ledtrig-panic.c
··· 1 + /* 2 + * Kernel Panic LED Trigger 3 + * 4 + * Copyright 2016 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> 5 + * 6 + * This program is free software; you can redistribute it and/or modify 7 + * it under the terms of the GNU General Public License version 2 as 8 + * published by the Free Software Foundation. 9 + * 10 + */ 11 + 12 + #include <linux/kernel.h> 13 + #include <linux/init.h> 14 + #include <linux/leds.h> 15 + 16 + static struct led_trigger *trigger; 17 + 18 + static long led_panic_blink(int state) 19 + { 20 + led_trigger_event(trigger, state ? LED_FULL : LED_OFF); 21 + return 0; 22 + } 23 + 24 + static int __init ledtrig_panic_init(void) 25 + { 26 + led_trigger_register_simple("panic", &trigger); 27 + panic_blink = led_panic_blink; 28 + return 0; 29 + } 30 + device_initcall(ledtrig_panic_init);