summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/leds/common.rst3
-rw-r--r--drivers/led/core.c11
2 files changed, 11 insertions, 3 deletions
diff --git a/Documentation/devicetree/bindings/leds/common.rst b/Documentation/devicetree/bindings/leds/common.rst
index 5a592d67d0..911a55f4f6 100644
--- a/Documentation/devicetree/bindings/leds/common.rst
+++ b/Documentation/devicetree/bindings/leds/common.rst
@@ -12,3 +12,6 @@ Common leds properties
* ``label``: The label for this LED. If omitted, the label is taken
from the node name (excluding the unit address).
+
+* ``panic-indicator`` - This property specifies that the LED should be used as a
+ panic indicator.
diff --git a/drivers/led/core.c b/drivers/led/core.c
index 4bf19abcc9..e727148a24 100644
--- a/drivers/led/core.c
+++ b/drivers/led/core.c
@@ -286,11 +286,16 @@ enum led_trigger trigger_by_name(const char *name)
void led_of_parse_trigger(struct led *led, struct device_node *np)
{
- enum led_trigger trg;
+ enum led_trigger trg = LED_TRIGGER_MAX;
const char *trigger;
- trigger = of_get_property(np, "linux,default-trigger", NULL);
- trg = trigger_by_name(trigger);
+ if (of_property_read_bool(np, "panic-indicator"))
+ trg = LED_TRIGGER_PANIC;
+
+ if (trg == LED_TRIGGER_MAX) {
+ trigger = of_get_property(np, "linux,default-trigger", NULL);
+ trg = trigger_by_name(trigger);
+ }
if (trg == LED_TRIGGER_MAX) {
trigger = of_get_property(np, "barebox,default-trigger", NULL);