| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- .. SPDX-License-Identifier: GPL-2.0
- ====================================
- Multicolor LED handling under Linux
- ====================================
- Description
- ===========
- The multicolor class groups monochrome LEDs and allows controlling two
- aspects of the final combined color: hue and lightness. The former is
- controlled via the multi_intensity array file and the latter is controlled
- via brightness file.
- Multicolor Class Control
- ========================
- The multicolor class presents files that groups the colors as indexes in an
- array. These files are children under the LED parent node created by the
- led_class framework. The led_class framework is documented in led-class.rst
- within this documentation directory.
- Each colored LED will be indexed under the multi_* files. The order of the
- colors will be arbitrary. The multi_index file can be read to determine the
- color name to indexed value.
- The multi_index file is an array that contains the string list of the colors as
- they are defined in each multi_* array file.
- The multi_intensity is an array that can be read or written to for the
- individual color intensities. All elements within this array must be written in
- order for the color LED intensities to be updated.
- Directory Layout Example
- ========================
- root:/sys/class/leds/multicolor:status# ls -lR
- -rw-r--r-- 1 root root 4096 Oct 19 16:16 brightness
- -r--r--r-- 1 root root 4096 Oct 19 16:16 max_brightness
- -r--r--r-- 1 root root 4096 Oct 19 16:16 multi_index
- -rw-r--r-- 1 root root 4096 Oct 19 16:16 multi_intensity
- Multicolor Class Brightness Control
- ===================================
- The brightness level for each LED is calculated based on the color LED
- intensity setting divided by the global max_brightness setting multiplied by
- the requested brightness.
- led_brightness = brightness * multi_intensity/max_brightness
- Example:
- A user first writes the multi_intensity file with the brightness levels
- for each LED that are necessary to achieve a certain color output from a
- multicolor LED group.
- cat /sys/class/leds/multicolor:status/multi_index
- green blue red
- echo 43 226 138 > /sys/class/leds/multicolor:status/multi_intensity
- red -
- intensity = 138
- max_brightness = 255
- green -
- intensity = 43
- max_brightness = 255
- blue -
- intensity = 226
- max_brightness = 255
- The user can control the brightness of that multicolor LED group by writing the
- global 'brightness' control. Assuming a max_brightness of 255 the user
- may want to dim the LED color group to half. The user would write a value of
- 128 to the global brightness file then the values written to each LED will be
- adjusted base on this value.
- cat /sys/class/leds/multicolor:status/max_brightness
- 255
- echo 128 > /sys/class/leds/multicolor:status/brightness
- adjusted_red_value = 128 * 138/255 = 69
- adjusted_green_value = 128 * 43/255 = 21
- adjusted_blue_value = 128 * 226/255 = 113
- Reading the global brightness file will return the current brightness value of
- the color LED group.
- cat /sys/class/leds/multicolor:status/brightness
- 128
|