Linux-LEDs Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v5 0/2] Multicolor Documentation update
@ 2019-07-01 20:46 Dan Murphy
  2019-07-01 20:46 ` [PATCH v5 1/2] leds: multicolor: Add sysfs interface definition Dan Murphy
  2019-07-01 20:46 ` [PATCH v5 2/2] documention: leds: Add multicolor class documentation Dan Murphy
  0 siblings, 2 replies; 6+ messages in thread
From: Dan Murphy @ 2019-07-01 20:46 UTC (permalink / raw)
  To: jacek.anaszewski, pavel; +Cc: linux-leds, linux-kernel, Dan Murphy

Hello

After some off line conversations with the LED maintainers I update the
documentation for the multicolor framework with what I hope to be a good
compromise.

I have add the "color_mix" (name is not set but could not think of a better one)
file for writing the monochrome LEDs as a group.  Also I have added a "color_id"
file for each monochrome LED as read only so that the LED indexes in the array 
are known when writing to the color_mix file.  This will help in determining the
order of the LEDs in the array.

I am not carrying any RoB/SoB in this patchset as these interfaces are changing.

Dan

Dan Murphy (2):
  leds: multicolor: Add sysfs interface definition
  documention: leds: Add multicolor class documentation

 .../ABI/testing/sysfs-class-led-multicolor    |  67 ++++++++
 Documentation/leds/leds-class-multicolor.txt  | 145 ++++++++++++++++++
 2 files changed, 212 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-class-led-multicolor
 create mode 100644 Documentation/leds/leds-class-multicolor.txt

-- 
2.22.0.214.g8dca754b1e

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v5 1/2] leds: multicolor: Add sysfs interface definition
  2019-07-01 20:46 [PATCH v5 0/2] Multicolor Documentation update Dan Murphy
@ 2019-07-01 20:46 ` Dan Murphy
  2019-07-01 20:46 ` [PATCH v5 2/2] documention: leds: Add multicolor class documentation Dan Murphy
  1 sibling, 0 replies; 6+ messages in thread
From: Dan Murphy @ 2019-07-01 20:46 UTC (permalink / raw)
  To: jacek.anaszewski, pavel; +Cc: linux-leds, linux-kernel, Dan Murphy

Add a documentation of LED Multicolor LED class specific
sysfs attributes.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 .../ABI/testing/sysfs-class-led-multicolor    | 67 +++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-class-led-multicolor

diff --git a/Documentation/ABI/testing/sysfs-class-led-multicolor b/Documentation/ABI/testing/sysfs-class-led-multicolor
new file mode 100644
index 000000000000..59839f0eae76
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-class-led-multicolor
@@ -0,0 +1,67 @@
+What:		/sys/class/leds/<led>/brightness
+Date:		Sept 2019
+KernelVersion:	TBD
+Contact:	Dan Murphy <dmurphy@ti.com>
+Description:	read/write
+		The multicolor class will redirect the device drivers call back
+		function for brightness control to the multicolor class
+		brightness control function.
+
+		Writing to this file will update all LEDs within the group to a
+		calculated percentage of what each color LED in the group is set
+		to.  Please refer to the leds-class-multicolor.txt in the
+		Documentation directory for a complete description.
+
+		The value of the color is from 0 to
+		/sys/class/leds/<led>/max_brightness.
+
+What:		/sys/class/leds/<led>/colors/color_mix
+Date:		Sept 2019
+KernelVersion:	TBD
+Contact:	Dan Murphy <dmurphy@ti.com>
+Description:	read/write
+		The color_mix file allows writing all registered multicolor LEDs
+		virtually at the same time.  The value(s) written to this file
+		contain the intensity values for each multicolor LED within
+		the colors directory.  The color indexes are reported in the
+		color_id file as defined in this document.
+		Please refer to the leds-class-multicolor.txt in the
+		Documentation directory for a complete description.
+
+What:		/sys/class/leds/<led>/colors/<led_color>/color_id
+Date:		Sept 2019
+KernelVersion:	TBD
+Contact:	Dan Murphy <dmurphy@ti.com>
+Description:	read only
+		This file when read will return the index of the color in the
+		color_mix.
+		Please refer to the leds-class-multicolor.txt in the
+		Documentation directory for a complete description.
+
+What:		/sys/class/leds/<led>/colors/<led_color>/intensity
+Date:		Sept 2019
+KernelVersion:	TBD
+Contact:	Dan Murphy <dmurphy@ti.com>
+Description:	read/write
+		The led_color directory is dynamically created based on the
+		colors defined by the registrar of the class.
+		The led_color can be but not limited to red, green, blue,
+		white, amber, yellow and violet.  Drivers can also declare a
+		LED color for presentation.  There is one directory per color
+		presented.  The brightness file is created under each
+		led_color directory and controls the individual LED color
+		setting.
+
+		The value of the color is from 0 to
+		/sys/class/leds/<led>/colors/<led_color>/max_intensity.
+
+What:		/sys/class/leds/<led>/colors/<led_color>/max_intensity
+Date:		Sept 2019
+KernelVersion:	TBD
+Contact:	Dan Murphy <dmurphy@ti.com>
+Description:	read only
+		Maximum intensity level for the LED color, default is
+		255 (LED_FULL).
+
+		If the LED does not support different intensity levels, this
+		should be 1.
-- 
2.22.0.214.g8dca754b1e

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v5 2/2] documention: leds: Add multicolor class documentation
  2019-07-01 20:46 [PATCH v5 0/2] Multicolor Documentation update Dan Murphy
  2019-07-01 20:46 ` [PATCH v5 1/2] leds: multicolor: Add sysfs interface definition Dan Murphy
@ 2019-07-01 20:46 ` Dan Murphy
  2019-07-16 19:18   ` Jacek Anaszewski
  1 sibling, 1 reply; 6+ messages in thread
From: Dan Murphy @ 2019-07-01 20:46 UTC (permalink / raw)
  To: jacek.anaszewski, pavel; +Cc: linux-leds, linux-kernel, Dan Murphy

Add the support documentation on the multicolor LED framework.
This document defines the directores and file generated by the
multicolor framework.  It also documents usage.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
---
 Documentation/leds/leds-class-multicolor.txt | 152 +++++++++++++++++++
 1 file changed, 152 insertions(+)
 create mode 100644 Documentation/leds/leds-class-multicolor.txt

diff --git a/Documentation/leds/leds-class-multicolor.txt b/Documentation/leds/leds-class-multicolor.txt
new file mode 100644
index 000000000000..01175288502e
--- /dev/null
+++ b/Documentation/leds/leds-class-multicolor.txt
@@ -0,0 +1,152 @@
+
+Multi Color LED handling under Linux
+=================================================
+
+Author: Dan Murphy <dmurphy@ti.com>
+
+Description
+-----------
+There are varying monochrome LED colors available for application.  These
+LEDs can be used as a single use case LED or can be mixed with other color
+LEDs to produce the full spectrum of color.  Color LEDs that are grouped
+can be presented under a single LED node with individual color control.
+The multicolor class groups these LEDs and allows dynamically setting the value
+of a single LED or setting the intensity values of the LEDs in the group and
+updating the LEDs virtually simultaneously.
+
+Multicolor Class Control
+-------------------------
+The multicolor class presents the LED groups under a directory called "colors".
+This directory is a child under the LED parent node created by the led_class
+framework.  The led_class framework is documented in led-class.txt within this
+documentation directory.
+
+Each colored LED is given its own directory.  These directories can be, but not
+limited to red, green, blue, white, amber, yellow and violet.  Under these
+directories the intensity and max_intensity files are presented for each LED.
+
+
+Directory Layout Example
+------------------------
+root:/sys/class/leds/rgb:grouped_leds# ls -lR colors/
+colors/:
+drwxr-xr-x    2 root     root             0 Jun 28 20:21 blue
+drwxr-xr-x    2 root     root             0 Jun 28 20:21 green
+drwxr-xr-x    2 root     root             0 Jun 28 20:21 red
+-rw-------    1 root     root          4096 Jun 28 20:21 color_mix
+
+colors/blue:
+-rw-------    1 root     root          4096 Jun 28 20:21 intensity
+-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
+-r--------    1 root     root          4096 Jun 28 20:21 color_id
+
+colors/green:
+-rw-------    1 root     root          4096 Jun 28 20:22 intensity
+-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
+-r--------    1 root     root          4096 Jun 28 20:21 color_id
+
+colors/red:
+-rw-------    1 root     root          4096 Jun 28 20:21 intensity
+-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
+-r--------    1 root     root          4096 Jun 28 20:21 color_id
+
+Multicolor Color Mixing
+-----------------------
+Multicolor monochrome LEDs intensity can be modified and mixed to produce a
+varying array of colors.  The color_mix file gives the user the ability to write
+all the monochrome LEDs registered in the directory with a single call.
+To create a specific color from monochrome LEDs the color_mix file needs to be
+written with each color's intensity.  The order in which the monochrome LEDs
+should be written is based on the colors color_id.
+
+For example:
+cat /sys/class/leds/rgb:grouped_leds/red/color_id
+0
+cat /sys/class/leds/rgb:grouped_leds/green/color_id
+1
+cat /sys/class/leds/rgb:grouped_leds/blue/color_id
+2
+
+red - color_id = 0
+green - color_id = 1
+blue - color_id = 2
+
+These id's are the order in which to write the color_mix file.
+
+echo "<red> <green> <blue>" > color_mix
+
+echo "0x80 0x00 0x80" > color_mix
+
+The order of the monochrome LEDs are determined during multicolor class
+registration and will not change unless unregistered and re-registered.
+
+Other example with amber monochrome LED:
+blue - color_id = 0
+amber - color_id = 1
+
+In this exampe blue is at ID 0 and amber ID is 1 so the user would write
+echo "<blue> <amber>" > color_mix
+
+echo "0x38 0x80" > color_mix
+
+If a single monochrome LED needs to be modified then the user would write the
+colors/<color>/intensity file.
+
+
+Multicolor Class Brightness Control
+-----------------------------------
+The multiclor class framework will calculate each monochrome LEDs intensity.
+
+The brightness level for each LED is calculated based on the color LED
+intensity setting divided by the color LED max intensity setting multiplied by
+the requested value.
+
+led_brightness = requested_value*(led_color_intensity/led_color_max_intensity)
+
+Example:
+Three LEDs are present in the group as defined in "Directory Layout Example"
+within this document.
+
+A user first writes the color LED brightness file with the brightness level that
+is neccesary to achieve a blueish violet output from the RGB LED group.
+
+echo 138 > /sys/class/leds/rgb:grouped_leds/red/intensity
+echo 43 > /sys/class/leds/rgb:grouped_leds/green/intensity
+echo 226 > /sys/class/leds/rgb:grouped_leds/blue/intensity
+
+red -
+	intensity = 138
+	max_intensity = 255
+green -
+	intensity = 43
+	max_intensity = 255
+blue -
+	intensity = 226
+	max_intensity = 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
+
+cat /sys/class/leds/rgb:grouped_leds/max_brightness
+255
+echo 128 > /sys/class/leds/rgb:grouped_leds/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/rgb:grouped_leds/max_brightness
+255
+
+echo 128 > /sys/class/leds/rgb:grouped_leds/brightness
+
+cat /sys/class/leds/rgb:grouped_leds/max_brightness
+128
+
+
-- 
2.22.0.214.g8dca754b1e

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v5 2/2] documention: leds: Add multicolor class documentation
  2019-07-01 20:46 ` [PATCH v5 2/2] documention: leds: Add multicolor class documentation Dan Murphy
@ 2019-07-16 19:18   ` Jacek Anaszewski
  2019-07-16 19:27     ` Dan Murphy
  0 siblings, 1 reply; 6+ messages in thread
From: Jacek Anaszewski @ 2019-07-16 19:18 UTC (permalink / raw)
  To: Dan Murphy, pavel; +Cc: linux-leds, linux-kernel

Hi Dan,

Thanks for the update. I have some nits below, please take a look.

On 7/1/19 10:46 PM, Dan Murphy wrote:
> Add the support documentation on the multicolor LED framework.
> This document defines the directores and file generated by the
> multicolor framework.  It also documents usage.
> 
> Signed-off-by: Dan Murphy <dmurphy@ti.com>
> ---
>  Documentation/leds/leds-class-multicolor.txt | 152 +++++++++++++++++++
>  1 file changed, 152 insertions(+)
>  create mode 100644 Documentation/leds/leds-class-multicolor.txt
> 
> diff --git a/Documentation/leds/leds-class-multicolor.txt b/Documentation/leds/leds-class-multicolor.txt
> new file mode 100644
> index 000000000000..01175288502e
> --- /dev/null
> +++ b/Documentation/leds/leds-class-multicolor.txt
> @@ -0,0 +1,152 @@
> +
> +Multi Color LED handling under Linux
> +=================================================
> +
> +Author: Dan Murphy <dmurphy@ti.com>
> +
> +Description
> +-----------
> +There are varying monochrome LED colors available for application.  These
> +LEDs can be used as a single use case LED or can be mixed with other color
> +LEDs to produce the full spectrum of color.  Color LEDs that are grouped
> +can be presented under a single LED node with individual color control.
> +The multicolor class groups these LEDs and allows dynamically setting the value
> +of a single LED or setting the intensity values of the LEDs in the group and
> +updating the LEDs virtually simultaneously.
> +
> +Multicolor Class Control
> +-------------------------
> +The multicolor class presents the LED groups under a directory called "colors".
> +This directory is a child under the LED parent node created by the led_class
> +framework.  The led_class framework is documented in led-class.txt within this
> +documentation directory.
> +
> +Each colored LED is given its own directory.  These directories can be, but not
> +limited to red, green, blue, white, amber, yellow and violet.  Under these
> +directories the intensity and max_intensity files are presented for each LED.
> +
> +
> +Directory Layout Example
> +------------------------
> +root:/sys/class/leds/rgb:grouped_leds# ls -lR colors/
> +colors/:
> +drwxr-xr-x    2 root     root             0 Jun 28 20:21 blue
> +drwxr-xr-x    2 root     root             0 Jun 28 20:21 green
> +drwxr-xr-x    2 root     root             0 Jun 28 20:21 red
> +-rw-------    1 root     root          4096 Jun 28 20:21 color_mix
> +
> +colors/blue:
> +-rw-------    1 root     root          4096 Jun 28 20:21 intensity
> +-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
> +-r--------    1 root     root          4096 Jun 28 20:21 color_id
> +
> +colors/green:
> +-rw-------    1 root     root          4096 Jun 28 20:22 intensity
> +-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
> +-r--------    1 root     root          4096 Jun 28 20:21 color_id
> +
> +colors/red:
> +-rw-------    1 root     root          4096 Jun 28 20:21 intensity
> +-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
> +-r--------    1 root     root          4096 Jun 28 20:21 color_id
> +
> +Multicolor Color Mixing
> +-----------------------
> +Multicolor monochrome LEDs intensity can be modified and mixed to produce a
> +varying array of colors.  The color_mix file gives the user the ability to write
> +all the monochrome LEDs registered in the directory with a single call.
> +To create a specific color from monochrome LEDs the color_mix file needs to be
> +written with each color's intensity.  The order in which the monochrome LEDs
> +should be written is based on the colors color_id.
> +
> +For example:
> +cat /sys/class/leds/rgb:grouped_leds/red/color_id
> +0
> +cat /sys/class/leds/rgb:grouped_leds/green/color_id
> +1
> +cat /sys/class/leds/rgb:grouped_leds/blue/color_id
> +2
> +
> +red - color_id = 0
> +green - color_id = 1
> +blue - color_id = 2
> +
> +These id's are the order in which to write the color_mix file.
> +
> +echo "<red> <green> <blue>" > color_mix
> +
> +echo "0x80 0x00 0x80" > color_mix
> +
> +The order of the monochrome LEDs are determined during multicolor class
> +registration and will not change unless unregistered and re-registered.
> +
> +Other example with amber monochrome LED:
> +blue - color_id = 0
> +amber - color_id = 1
> +
> +In this exampe blue is at ID 0 and amber ID is 1 so the user would write
> +echo "<blue> <amber>" > color_mix
> +
> +echo "0x38 0x80" > color_mix
> +
> +If a single monochrome LED needs to be modified then the user would write the
> +colors/<color>/intensity file.
> +
> +
> +Multicolor Class Brightness Control
> +-----------------------------------
> +The multiclor class framework will calculate each monochrome LEDs intensity.
> +
> +The brightness level for each LED is calculated based on the color LED
> +intensity setting divided by the color LED max intensity setting multiplied by
> +the requested value.
> +
> +led_brightness = requested_value*(led_color_intensity/led_color_max_intensity)

Please drop parentheses here as pointed out before in the code review.

> +
> +Example:
> +Three LEDs are present in the group as defined in "Directory Layout Example"
> +within this document.
> +
> +A user first writes the color LED brightness file with the brightness level that
> +is neccesary to achieve a blueish violet output from the RGB LED group.
> +
> +echo 138 > /sys/class/leds/rgb:grouped_leds/red/intensity
> +echo 43 > /sys/class/leds/rgb:grouped_leds/green/intensity
> +echo 226 > /sys/class/leds/rgb:grouped_leds/blue/intensity
> +
> +red -
> +	intensity = 138
> +	max_intensity = 255
> +green -
> +	intensity = 43
> +	max_intensity = 255
> +blue -
> +	intensity = 226
> +	max_intensity = 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

We probably need to state here that any amendment to color intensity
values resets brightness to its max value.

> +cat /sys/class/leds/rgb:grouped_leds/max_brightness
> +255
> +echo 128 > /sys/class/leds/rgb:grouped_leds/brightness
> +
> +adjusted_red_value = 128 * (138/255) = 69
> +adjusted_green_value = 128 * (43/255) = 21
> +adjusted_blue_value = 128 * (226/255) = 113

Drop parentheses.

> +
> +Reading the parent brightness file will return the current brightness value of
> +the color LED group.
> +
> +cat /sys/class/leds/rgb:grouped_leds/max_brightness
> +255
> +
> +echo 128 > /sys/class/leds/rgb:grouped_leds/brightness
> +
> +cat /sys/class/leds/rgb:grouped_leds/max_brightness
> +128
> +
> +
> 

-- 
Best regards,
Jacek Anaszewski

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v5 2/2] documention: leds: Add multicolor class documentation
  2019-07-16 19:18   ` Jacek Anaszewski
@ 2019-07-16 19:27     ` Dan Murphy
  2019-07-16 20:37       ` Jacek Anaszewski
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Murphy @ 2019-07-16 19:27 UTC (permalink / raw)
  To: Jacek Anaszewski, pavel; +Cc: linux-leds, linux-kernel

Jacek

On 7/16/19 2:18 PM, Jacek Anaszewski wrote:
> Hi Dan,
>
> Thanks for the update. I have some nits below, please take a look.
>
> On 7/1/19 10:46 PM, Dan Murphy wrote:
>> Add the support documentation on the multicolor LED framework.
>> This document defines the directores and file generated by the
>> multicolor framework.  It also documents usage.
>>
>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>> ---
>>   Documentation/leds/leds-class-multicolor.txt | 152 +++++++++++++++++++
>>   1 file changed, 152 insertions(+)
>>   create mode 100644 Documentation/leds/leds-class-multicolor.txt
>>
>> diff --git a/Documentation/leds/leds-class-multicolor.txt b/Documentation/leds/leds-class-multicolor.txt
>> new file mode 100644
>> index 000000000000..01175288502e
>> --- /dev/null
>> +++ b/Documentation/leds/leds-class-multicolor.txt
>> @@ -0,0 +1,152 @@
>> +
>> +Multi Color LED handling under Linux
>> +=================================================
>> +
>> +Author: Dan Murphy <dmurphy@ti.com>
>> +
>> +Description
>> +-----------
>> +There are varying monochrome LED colors available for application.  These
>> +LEDs can be used as a single use case LED or can be mixed with other color
>> +LEDs to produce the full spectrum of color.  Color LEDs that are grouped
>> +can be presented under a single LED node with individual color control.
>> +The multicolor class groups these LEDs and allows dynamically setting the value
>> +of a single LED or setting the intensity values of the LEDs in the group and
>> +updating the LEDs virtually simultaneously.
>> +
>> +Multicolor Class Control
>> +-------------------------
>> +The multicolor class presents the LED groups under a directory called "colors".
>> +This directory is a child under the LED parent node created by the led_class
>> +framework.  The led_class framework is documented in led-class.txt within this
>> +documentation directory.
>> +
>> +Each colored LED is given its own directory.  These directories can be, but not
>> +limited to red, green, blue, white, amber, yellow and violet.  Under these
>> +directories the intensity and max_intensity files are presented for each LED.
>> +
>> +
>> +Directory Layout Example
>> +------------------------
>> +root:/sys/class/leds/rgb:grouped_leds# ls -lR colors/
>> +colors/:
>> +drwxr-xr-x    2 root     root             0 Jun 28 20:21 blue
>> +drwxr-xr-x    2 root     root             0 Jun 28 20:21 green
>> +drwxr-xr-x    2 root     root             0 Jun 28 20:21 red
>> +-rw-------    1 root     root          4096 Jun 28 20:21 color_mix
>> +
>> +colors/blue:
>> +-rw-------    1 root     root          4096 Jun 28 20:21 intensity
>> +-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
>> +-r--------    1 root     root          4096 Jun 28 20:21 color_id
>> +
>> +colors/green:
>> +-rw-------    1 root     root          4096 Jun 28 20:22 intensity
>> +-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
>> +-r--------    1 root     root          4096 Jun 28 20:21 color_id
>> +
>> +colors/red:
>> +-rw-------    1 root     root          4096 Jun 28 20:21 intensity
>> +-r--------    1 root     root          4096 Jun 28 20:27 max_intensity
>> +-r--------    1 root     root          4096 Jun 28 20:21 color_id
>> +
>> +Multicolor Color Mixing
>> +-----------------------
>> +Multicolor monochrome LEDs intensity can be modified and mixed to produce a
>> +varying array of colors.  The color_mix file gives the user the ability to write
>> +all the monochrome LEDs registered in the directory with a single call.
>> +To create a specific color from monochrome LEDs the color_mix file needs to be
>> +written with each color's intensity.  The order in which the monochrome LEDs
>> +should be written is based on the colors color_id.
>> +
>> +For example:
>> +cat /sys/class/leds/rgb:grouped_leds/red/color_id
>> +0
>> +cat /sys/class/leds/rgb:grouped_leds/green/color_id
>> +1
>> +cat /sys/class/leds/rgb:grouped_leds/blue/color_id
>> +2
>> +
>> +red - color_id = 0
>> +green - color_id = 1
>> +blue - color_id = 2
>> +
>> +These id's are the order in which to write the color_mix file.
>> +
>> +echo "<red> <green> <blue>" > color_mix
>> +
>> +echo "0x80 0x00 0x80" > color_mix
>> +
>> +The order of the monochrome LEDs are determined during multicolor class
>> +registration and will not change unless unregistered and re-registered.
>> +
>> +Other example with amber monochrome LED:
>> +blue - color_id = 0
>> +amber - color_id = 1
>> +
>> +In this exampe blue is at ID 0 and amber ID is 1 so the user would write
>> +echo "<blue> <amber>" > color_mix
>> +
>> +echo "0x38 0x80" > color_mix
>> +
>> +If a single monochrome LED needs to be modified then the user would write the
>> +colors/<color>/intensity file.
>> +
>> +
>> +Multicolor Class Brightness Control
>> +-----------------------------------
>> +The multiclor class framework will calculate each monochrome LEDs intensity.
>> +
>> +The brightness level for each LED is calculated based on the color LED
>> +intensity setting divided by the color LED max intensity setting multiplied by
>> +the requested value.
>> +
>> +led_brightness = requested_value*(led_color_intensity/led_color_max_intensity)
> Please drop parentheses here as pointed out before in the code review.

Ack


>> +
>> +Example:
>> +Three LEDs are present in the group as defined in "Directory Layout Example"
>> +within this document.
>> +
>> +A user first writes the color LED brightness file with the brightness level that
>> +is neccesary to achieve a blueish violet output from the RGB LED group.
>> +
>> +echo 138 > /sys/class/leds/rgb:grouped_leds/red/intensity
>> +echo 43 > /sys/class/leds/rgb:grouped_leds/green/intensity
>> +echo 226 > /sys/class/leds/rgb:grouped_leds/blue/intensity
>> +
>> +red -
>> +	intensity = 138
>> +	max_intensity = 255
>> +green -
>> +	intensity = 43
>> +	max_intensity = 255
>> +blue -
>> +	intensity = 226
>> +	max_intensity = 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
> We probably need to state here that any amendment to color intensity
> values resets brightness to its max value.

Well that is not true.  Intensity and brightness are two different spaces.

Brightness is for cluster control and intensity is for monochrome LED 
control.

There only relationship is when setting cluster brightness.

>
>> +cat /sys/class/leds/rgb:grouped_leds/max_brightness
>> +255
>> +echo 128 > /sys/class/leds/rgb:grouped_leds/brightness
>> +
>> +adjusted_red_value = 128 * (138/255) = 69
>> +adjusted_green_value = 128 * (43/255) = 21
>> +adjusted_blue_value = 128 * (226/255) = 113
> Drop parentheses.

Ack

I have working code now.  Just need to clean it up and test it.

Should be submitted by EOW.

Dan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v5 2/2] documention: leds: Add multicolor class documentation
  2019-07-16 19:27     ` Dan Murphy
@ 2019-07-16 20:37       ` Jacek Anaszewski
  0 siblings, 0 replies; 6+ messages in thread
From: Jacek Anaszewski @ 2019-07-16 20:37 UTC (permalink / raw)
  To: Dan Murphy, pavel; +Cc: linux-leds, linux-kernel

Dan,

On 7/16/19 9:27 PM, Dan Murphy wrote:
> Jacek
> 
> On 7/16/19 2:18 PM, Jacek Anaszewski wrote:
>> Hi Dan,
>>
>> Thanks for the update. I have some nits below, please take a look.
>>
>> On 7/1/19 10:46 PM, Dan Murphy wrote:
[...]

>>> +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
>> We probably need to state here that any amendment to color intensity
>> values resets brightness to its max value.
> 
> Well that is not true.  Intensity and brightness are two different spaces.

OK, I had to go through the sequence of steps I had on mind.
I had to work it out that colors set under colors directory don't
reflect the iout colors, but are only used for calculating them,
basing on the brightness and max_intensity values.

Effectively, after changing the colors/<color>/intensity the brightness
value will be still valid, since iout color will be recalculated basing
on the currently set brightness and the new color intensity.

> Brightness is for cluster control and intensity is for monochrome LED
> control.
> 
> There only relationship is when setting cluster brightness.


-- 
Best regards,
Jacek Anaszewski

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-01 20:46 [PATCH v5 0/2] Multicolor Documentation update Dan Murphy
2019-07-01 20:46 ` [PATCH v5 1/2] leds: multicolor: Add sysfs interface definition Dan Murphy
2019-07-01 20:46 ` [PATCH v5 2/2] documention: leds: Add multicolor class documentation Dan Murphy
2019-07-16 19:18   ` Jacek Anaszewski
2019-07-16 19:27     ` Dan Murphy
2019-07-16 20:37       ` Jacek Anaszewski

Linux-LEDs Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-leds/0 linux-leds/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-leds linux-leds/ https://lore.kernel.org/linux-leds \
		linux-leds@vger.kernel.org linux-leds@archiver.kernel.org
	public-inbox-index linux-leds


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-leds


AGPL code for this site: git clone https://public-inbox.org/ public-inbox