Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1dd70937 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Jacek Anaszewski
Browse files

dt-bindings: leds: Add pattern initialization from Device Tree



Document new led-pattern property for initialization of LED triggers.
The property format is trigger-specific (except being array of
integers).  For pattern trigger, the explanation of pattern format was
moved to a common file shared with sysfs ABI.

Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Acked-by: default avatarPavel Machek <pavel@ucw.cz>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarJacek Anaszewski <jacek.anaszewski@gmail.com>
parent bfeffd15
Loading
Loading
Loading
Loading
+3 −48
Original line number Diff line number Diff line
@@ -7,55 +7,10 @@ Description:
		timer. It can do gradual dimming and step change of brightness.

		The pattern is given by a series of tuples, of brightness and
		duration (ms). The LED is expected to traverse the series and
		each brightness value for the specified duration. Duration of
		0 means brightness should immediately change to new value, and
		writing malformed pattern deactivates any active one.
		duration (ms).

		1. For gradual dimming, the dimming interval now is set as 50
		milliseconds. So the tuple with duration less than dimming
		interval (50ms) is treated as a step change of brightness,
		i.e. the subsequent brightness will be applied without adding
		intervening dimming intervals.

		The gradual dimming format of the software pattern values should be:
		"brightness_1 duration_1 brightness_2 duration_2 brightness_3
		duration_3 ...". For example:

		echo 0 1000 255 2000 > pattern

		It will make the LED go gradually from zero-intensity to max (255)
		intensity in 1000 milliseconds, then back to zero intensity in 2000
		milliseconds:

		LED brightness
		    ^
		255-|       / \            / \            /
		    |      /    \         /    \         /
		    |     /       \      /       \      /
		    |    /          \   /          \   /
		  0-|   /             \/             \/
		    +---0----1----2----3----4----5----6------------> time (s)

		2. To make the LED go instantly from one brightness value to another,
		we should use zero-time lengths (the brightness must be same as
		the previous tuple's). So the format should be:
		"brightness_1 duration_1 brightness_1 0 brightness_2 duration_2
		brightness_2 0 ...". For example:

		echo 0 1000 0 0 255 2000 255 0 > pattern

		It will make the LED stay off for one second, then stay at max brightness
		for two seconds:

		LED brightness
		    ^
		255-|        +---------+    +---------+
		    |        |         |    |         |
		    |        |         |    |         |
		    |        |         |    |         |
		  0-|   -----+         +----+         +----
		    +---0----1----2----3----4----5----6------------> time (s)
		The exact format is described in:
		Documentation/devicetree/bindings/leds/leds-trigger-pattern.txt

What:		/sys/class/leds/<led>/hw_pattern
Date:		September 2018
+12 −0
Original line number Diff line number Diff line
@@ -37,6 +37,18 @@ Optional properties for child nodes:
     "ide-disk" - LED indicates IDE disk activity (deprecated),
                  in new implementations use "disk-activity"
     "timer" - LED flashes at a fixed, configurable rate
     "pattern" - LED alters the brightness for the specified duration with one
                 software timer (requires "led-pattern" property)

- led-pattern : Array of integers with default pattern for certain triggers.
                Each trigger may parse this property differently:
                - one-shot : two numbers specifying delay on and delay off (in ms),
                - timer : two numbers specifying delay on and delay off (in ms),
                - pattern : the pattern is given by a series of tuples, of
                  brightness and duration (in ms).  The exact format is
                  described in:
                  Documentation/devicetree/bindings/leds/leds-trigger-pattern.txt


- led-max-microamp : Maximum LED supply current in microamperes. This property
                     can be made mandatory for the board configurations
+49 −0
Original line number Diff line number Diff line
* Pattern format for LED pattern trigger

The pattern is given by a series of tuples, of brightness and duration (ms).
The LED is expected to traverse the series and each brightness value for the
specified duration. Duration of 0 means brightness should immediately change to
new value, and writing malformed pattern deactivates any active one.

1. For gradual dimming, the dimming interval now is set as 50 milliseconds. So
the tuple with duration less than dimming interval (50ms) is treated as a step
change of brightness, i.e. the subsequent brightness will be applied without
adding intervening dimming intervals.

The gradual dimming format of the software pattern values should be:
"brightness_1 duration_1 brightness_2 duration_2 brightness_3 duration_3 ...".
For example (using sysfs interface):

echo 0 1000 255 2000 > pattern

It will make the LED go gradually from zero-intensity to max (255) intensity in
1000 milliseconds, then back to zero intensity in 2000 milliseconds:

LED brightness
    ^
255-|       / \            / \            /
    |      /    \         /    \         /
    |     /       \      /       \      /
    |    /          \   /          \   /
  0-|   /             \/             \/
    +---0----1----2----3----4----5----6------------> time (s)

2. To make the LED go instantly from one brightness value to another, we should
use zero-time lengths (the brightness must be same as the previous tuple's). So
the format should be: "brightness_1 duration_1 brightness_1 0 brightness_2
duration_2 brightness_2 0 ...".
For example (using sysfs interface):

echo 0 1000 0 0 255 2000 255 0 > pattern

It will make the LED stay off for one second, then stay at max brightness for
two seconds:

LED brightness
    ^
255-|        +---------+    +---------+
    |        |         |    |         |
    |        |         |    |         |
    |        |         |    |         |
  0-|   -----+         +----+         +----
    +---0----1----2----3----4----5----6------------> time (s)