Messages in this thread | | | Subject | Re: [PATCH v19 04/18] leds: multicolor: Introduce a multicolor class definition | From | Dan Murphy <> | Date | Fri, 3 Apr 2020 09:39:43 -0500 |
| |
Randy
Thanks for the review
On 4/2/20 10:47 PM, Randy Dunlap wrote: > Hi, > Here are a few changes for you to consider: > > On 4/2/20 1:42 PM, Dan Murphy wrote: >> Introduce a multicolor class that groups colored LEDs >> within a LED node. >> >> The multi color class groups monochrome LEDs and allows controlling two > multicolor Ack > >> aspects of the final combined color: hue and lightness. The former is >> controlled via <color>_intensity files and the latter is controlled >> via brightness file. >> >> Signed-off-by: Dan Murphy <dmurphy@ti.com> >> --- > >> diff --git a/Documentation/leds/leds-class-multicolor.rst b/Documentation/leds/leds-class-multicolor.rst >> new file mode 100644 >> index 000000000000..5bb004999248 >> --- /dev/null >> +++ b/Documentation/leds/leds-class-multicolor.rst >> @@ -0,0 +1,95 @@ >> +==================================== >> +Multi Color LED handling under Linux > Multicolor Ack > >> +==================================== >> + >> +Description >> +=========== >> +The multi color class groups monochrome LEDs and allows controlling two > multicolor Ack > >> +aspects of the final combined color: hue and lightness. The former is >> +controlled via the color_intensity array file and the latter is controlled >> +via brightness file. >> + >> +For more details on hue and lightness notions please refer to >> +https://en.wikipedia.org/wiki/CIECAM02. >> + >> +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 color_* files. The order of the >> +colors are arbitrary the color_index file can be read to determine the color >> +to index value. >> + >> +The color_index file is an array that contains the string list of the colors as >> +they are defined in each color_* array file. >> + >> +The color_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. >> + >> +The color_max_intensity is an array that can be read to indicate each color LED >> +maximum intensity value. >> + >> +The num_color_leds file returns the total number of color LEDs that are >> +presented in each color_* array. >> + >> +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 color_index >> +-rw-r--r-- 1 root root 4096 Oct 19 16:16 color_intensity >> +-r--r--r-- 1 root root 4096 Oct 19 16:16 num_color_leds >> + >> +Multicolor Class Brightness Control >> +=================================== >> +The multiclor class framework will calculate each monochrome LEDs intensity. > multicolor Ack > >> + >> +The brightness level for each LED is calculated based on the color LED >> +intensity setting divided by the parent max_brightness setting multiplied by >> +the requested brightness. >> + >> +led_brightness = brightness * color_intensity/max_brightness >> + >> +Example: >> +A user first writes the color_intensity file with the brightness levels >> +that for each LED that is necessary to achieve a blueish violet output from a > drop first "that". Ack > that are necessary from an Ack and NACK the "from an". It is from a since R is a consonant >> +RGB LED group. >> + >> +cat /sys/class/leds/multicolor:status/color_index >> +green blue red >> + >> +echo 43 226 138 > /sys/class/leds/multicolor:status/color_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 RGB group by writing the parent >> +'brightness' control. Assuming a parent 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 >> +parent brightness file then the values written to each LED will be adjusted >> +base on this value > value. Ack > >> + >> +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 parent brightness file will return the current brightness value of >> +the color LED group. >> + >> +cat /sys/class/leds/multicolor:status/brightness >> +128 >> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig >> index d82f1dea3711..2e4611b25054 100644 >> --- a/drivers/leds/Kconfig >> +++ b/drivers/leds/Kconfig >> @@ -30,6 +30,16 @@ config LEDS_CLASS_FLASH >> for the flash related features of a LED device. It can be built >> as a module. >> >> +config LEDS_CLASS_MULTI_COLOR >> + tristate "LED Multi Color LED Class Support" > Multicolor
Ack
Dan
| |