From: Jacek Anaszewski <jacek.anaszewski@gmail.com>
To: Dan Murphy <dmurphy@ti.com>, Pavel Machek <pavel@ucw.cz>
Cc: robh+dt@kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-leds@vger.kernel.org
Subject: Re: [PATCH 2/2] leds: lp5024: Add the LP5024/18 RGB LED driver
Date: Sat, 29 Dec 2018 19:28:04 +0100 [thread overview]
Message-ID: <b7c69135-1641-48cb-1770-c4c77a989efe@gmail.com> (raw)
In-Reply-To: <45ce01f0-af6e-1cc6-5126-fb557c7d2a82@ti.com>
On 12/21/18 2:05 PM, Dan Murphy wrote:
> On 12/21/2018 01:32 AM, Jacek Anaszewski wrote:
>> On 12/20/18 9:31 PM, Jacek Anaszewski wrote:
>>> On 12/19/18 10:50 PM, Dan Murphy wrote:
>>>> On 12/19/2018 03:36 PM, Jacek Anaszewski wrote:
>>>>> Hi Dan and Pavel,
>>>>>
>>>>> On 12/19/18 9:41 PM, Dan Murphy wrote:
>>>>>> Pavel
>>>>>>
>>>>>> On 12/19/2018 02:10 PM, Pavel Machek wrote:
>>>>>>> On Wed 2018-12-19 13:41:18, Dan Murphy wrote:
>>>>>>>> Pavel
>>>>>>>>
>>>>>>>> Thanks for the review.
>>>>>>>>
>>>>>>>> On 12/19/2018 01:34 PM, Pavel Machek wrote:
>>>>>>>>> Hi!
>>>>>>>>>
>>>>>>>>>> +static DEVICE_ATTR_WO(ctrl_bank_a_mix);
>>>>>>>>>> +static DEVICE_ATTR_WO(ctrl_bank_b_mix);
>>>>>>>>>> +static DEVICE_ATTR_WO(ctrl_bank_c_mix);
>>>>>>>>>> +
>>>>>>>>>> +static struct attribute *lp5024_ctrl_bank_attrs[] = {
>>>>>>>>>> + &dev_attr_ctrl_bank_a_mix.attr,
>>>>>>>>>> + &dev_attr_ctrl_bank_b_mix.attr,
>>>>>>>>>> + &dev_attr_ctrl_bank_c_mix.attr,
>>>>>>>>>> + NULL
>>>>>>>>>> +};
>>>>>>>>>> +ATTRIBUTE_GROUPS(lp5024_ctrl_bank);
>>>>>>>>>
>>>>>>>>> ...
>>>>>>>>>> +
>>>>>>>>>> +static DEVICE_ATTR_WO(led1_mix);
>>>>>>>>>> +static DEVICE_ATTR_WO(led2_mix);
>>>>>>>>>> +static DEVICE_ATTR_WO(led3_mix);
>>>>>>>>>> +
>>>>>>>>>> +static struct attribute *lp5024_led_independent_attrs[] = {
>>>>>>>>>> + &dev_attr_led1_mix.attr,
>>>>>>>>>> + &dev_attr_led2_mix.attr,
>>>>>>>>>> + &dev_attr_led3_mix.attr,
>>>>>>>>>> + NULL
>>>>>>>>>> +};
>>>>>>>>>> +ATTRIBUTE_GROUPS(lp5024_led_independent);
>>>>>>>>>
>>>>>>>>> Ok, so you are adding new sysfs files. Are they _really_ neccessary?
>>>>>>>>> We'd like to have uniform interfaces for the leds.
>>>>>>>>
>>>>>>>> Yes I am adding these for this driver.
>>>>>>>> They adjust the individual brightness of each LED connected (what the HW guys called mixing).
>>>>>>>>
>>>>>>>> The standard brightness sysfs adjusts all 3 LEDs simultaneously so that all 3 LEDs brightness are
>>>>>>>> uniform.
>>>>>>>
>>>>>>> 1 LED, 1 brightness file... that's what we do. Why should this one be different?
>>>>>>>
>>>>>>
>>>>>> Yes I understand this and 1 DT child node per LED out but...
>>>>>>
>>>>>> This device has a single register to control 3 LEDs brightness as a group and individual brightness
>>>>>> registers to control the LEDs independently to mix the LEDs to a specific color.
>>>>>>
>>>>>> There needs to be a way to control both so that developers can mix and adjust the individual RGB and
>>>>>> then control the brightness of the group during run time without touching the "mixing" value.
>>>>>>
>>>>>> I don't think a user needs nor would want to have 24 different LED nodes with 24 different brightness files.
>>>>>> Or with the LP5036 that would have 36 LED nodes.
>>>>>>
>>>>>> Table 1 in the data sheet shows how the outputs map to the control banks to the LED registers.
>>>>>
>>>>> Some time ago we had discussion with Vesa Jääskeläinen about possible
>>>>> approaches to RGB LEDs [0]. What seemed to be the most suitable
>>>>> variation of the discussed out-of-tree approach was the "color" property
>>>>> and array of color triplets defined in Device Tree per each color.
>>>>>
>>>>
>>>> Why does Device tree define the color?
>>>>
>>>> Rob indicated that Device tree is supposed to define the hardware.
>>>> This thread seems to be defining the operation.
>>>
>>> Perceived colors produced by LEDs from different manufacturers may
>>> differ and this alone should be deemed a sufficient argument for having
>>> board specific color definitions.
>>>
>>>> Shouldn't the color be done via user space and not dt?
>>>
>>> I think that we should keep the userspace interface as simple
>>> as possible and backwards compatible with monochrome LEDs.
>>>
>>> I also propose to avoid the introduction of a color sysfs
>>> property in favor of creating separate LED class devices
>>> for different "color ranges". The devices would drive the same
>>> LED but using different preset color levels.
>>
>> On the other hand, scattering the control over the hardware
>> among multiple LED class devices would complicate extension
>> of pattern trigger with the support for RGB LEDs.
>>
>> I looks like we will need the "color" sysfs file anyway.
>>
>>> We don't have to expose all device knobs to the userspace,
>>> but instead provide some predefined configurations. It would
>>> improve user experience by keeping LED class devices simple
>>> in use. It would be Device Tree designer's responsibility to
>>> provide color definitions that make sense for given RGB LED
>>> controller and RGB LED element configuration.
>>>
>>> Registering color palette with devm_rgb_register() you proposed
>>> is also an option, but with one LED class device per color palette
>>> it would mean allowing for creation/destruction of LED class
>>> devices by any user having access to given LED's sysfs interface,
>>> which is really bad solution.
>>
>> With the "color" sysfs file it will make more sense to allow for user
>> defined color palettes.
>>
>
> I think defining these values in the device tree or acpi severely limits the devices
> capabilities. Especially in development phases. If the knobs were exposed then the user space
> can create new experiences. The color definition should be an absolute color defined in the dt and
> either the framework or user space needs to mix these appropriately. IMO user space should set the policy
> of the user experience and the dt/acpi needs to set the capabilities.
>
> I do like Pavels idea on defining the more standard binding pattern to "group" leds into a single group.
>
> Maybe the framework could take these groups and combine/group them into a single node with the groups colors.
There is still HSV approach [0] in store. One problem with proposed
implementation is fixed algorithm of RGB <-> HSV color space conversion.
Maybe allowing for some board specific adjustments in DT would add
more flexibility.
[0] https://lkml.org/lkml/2017/8/31/255
--
Best regards,
Jacek Anaszewski
next prev parent reply other threads:[~2018-12-29 18:28 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-19 16:26 [PATCH 0/2] LP5024/18 LED introduction Dan Murphy
2018-12-19 16:26 ` [PATCH 1/2] dt: bindings: lp5024: Introduce the lp5024 and lp5018 RGB driver Dan Murphy
2018-12-28 23:53 ` Rob Herring
2018-12-31 18:54 ` Dan Murphy
2019-01-08 20:33 ` Jacek Anaszewski
2019-01-08 20:53 ` Dan Murphy
2019-01-08 21:16 ` Jacek Anaszewski
2019-01-08 21:22 ` Dan Murphy
2019-01-09 20:12 ` Jacek Anaszewski
2019-01-09 21:12 ` Dan Murphy
2019-01-09 21:28 ` Jacek Anaszewski
2019-01-09 21:31 ` Dan Murphy
2019-01-10 18:44 ` Jacek Anaszewski
2019-01-10 19:22 ` Dan Murphy
2019-01-10 19:57 ` Jacek Anaszewski
2019-01-10 20:43 ` Dan Murphy
2019-01-10 22:03 ` Jacek Anaszewski
2019-01-10 23:51 ` Dan Murphy
2019-01-11 12:38 ` Dan Murphy
2019-01-11 21:52 ` Jacek Anaszewski
2019-01-12 17:09 ` Dan Murphy
2019-01-12 19:48 ` Jacek Anaszewski
2019-01-14 12:27 ` Dan Murphy
2019-01-14 20:11 ` Jacek Anaszewski
2019-01-14 20:14 ` Dan Murphy
2019-01-14 20:28 ` Jacek Anaszewski
2019-01-14 20:29 ` Dan Murphy
2018-12-19 16:26 ` [PATCH 2/2] leds: lp5024: Add the LP5024/18 RGB LED driver Dan Murphy
2018-12-19 19:04 ` Dan Murphy
2018-12-19 19:34 ` Pavel Machek
2018-12-19 19:41 ` Dan Murphy
2018-12-19 20:10 ` Pavel Machek
2018-12-19 20:41 ` Dan Murphy
2018-12-19 21:36 ` Jacek Anaszewski
2018-12-19 21:50 ` Dan Murphy
2018-12-20 12:40 ` Vesa Jääskeläinen
2018-12-20 13:56 ` Dan Murphy
2019-01-01 13:45 ` Vesa Jääskeläinen
2019-01-03 22:05 ` Jacek Anaszewski
2019-01-03 23:19 ` Vesa Jääskeläinen
2019-01-03 23:34 ` Pavel Machek
2019-01-04 19:49 ` Vesa Jääskeläinen
2019-01-04 20:43 ` Pavel Machek
2019-01-04 19:12 ` Jacek Anaszewski
2019-01-04 20:12 ` Pavel Machek
2019-01-04 21:37 ` Jacek Anaszewski
2019-01-04 22:07 ` Pavel Machek
2019-01-05 12:16 ` Jacek Anaszewski
2019-01-05 12:31 ` Pavel Machek
2019-01-05 13:16 ` Jacek Anaszewski
2019-01-05 22:12 ` Generic RGB LED support was " Pavel Machek
2019-01-06 15:52 ` Jacek Anaszewski
2019-01-07 19:13 ` Jacek Anaszewski
2019-01-07 19:36 ` Dan Murphy
2019-01-07 20:59 ` Jacek Anaszewski
2019-01-07 21:14 ` Dan Murphy
2019-01-08 21:18 ` Jacek Anaszewski
2019-01-08 21:25 ` Dan Murphy
2019-01-10 12:46 ` Dan Murphy
2019-01-10 19:23 ` Jacek Anaszewski
2019-01-10 19:58 ` Dan Murphy
2019-01-10 21:02 ` Jacek Anaszewski
2019-01-10 21:07 ` Dan Murphy
2019-01-08 22:59 ` Pavel Machek
2019-01-09 7:11 ` Vesa Jääskeläinen
2019-01-13 16:37 ` Jacek Anaszewski
2019-01-05 0:39 ` Vesa Jääskeläinen
2019-01-07 19:34 ` Dan Murphy
2019-01-09 6:20 ` Vesa Jääskeläinen
2019-01-07 21:13 ` Jacek Anaszewski
2019-01-07 21:15 ` Dan Murphy
2019-01-09 6:46 ` Vesa Jääskeläinen
2019-01-13 16:36 ` Jacek Anaszewski
2018-12-20 20:31 ` Jacek Anaszewski
2018-12-21 7:32 ` Jacek Anaszewski
2018-12-21 13:05 ` Dan Murphy
2018-12-29 18:28 ` Jacek Anaszewski [this message]
2018-12-29 19:07 ` Pavel Machek
2018-12-30 17:09 ` Jacek Anaszewski
2018-12-30 17:35 ` Pavel Machek
2018-12-31 15:43 ` Jacek Anaszewski
2018-12-31 15:47 ` Jacek Anaszewski
2018-12-31 19:15 ` Dan Murphy
2019-01-01 14:42 ` Jacek Anaszewski
2019-01-01 18:11 ` Dan Murphy
2019-01-01 22:06 ` Jacek Anaszewski
2018-12-31 16:28 ` Pavel Machek
2019-01-01 14:26 ` Jacek Anaszewski
2018-12-19 22:03 ` Pavel Machek
2018-12-19 22:08 ` Dan Murphy
2018-12-19 22:27 ` Pavel Machek
2018-12-20 1:31 ` Dan Murphy
2018-12-20 9:06 ` Pavel Machek
2018-12-20 14:03 ` Dan Murphy
2019-01-08 21:10 ` Jacek Anaszewski
2019-01-08 21:17 ` Dan Murphy
2019-07-22 20:59 ` Backlight in motorola Droid 4 Pavel Machek
2019-07-23 15:53 ` Dan Murphy
2019-07-24 8:22 ` Pavel Machek
2019-07-24 12:45 ` Pavel Machek
2019-07-24 15:10 ` Dan Murphy
2019-07-24 15:22 ` Dan Murphy
2019-07-26 14:38 ` Dan Murphy
2019-07-29 22:00 ` Pavel Machek
2019-07-30 18:21 ` Dan Murphy
2019-07-30 21:52 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b7c69135-1641-48cb-1770-c4c77a989efe@gmail.com \
--to=jacek.anaszewski@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=dmurphy@ti.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).