linux-leds.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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: Thu, 20 Dec 2018 21:31:00 +0100	[thread overview]
Message-ID: <71d3ac12-5beb-0a26-71e1-5eae798e7b9f@gmail.com> (raw)
In-Reply-To: <cd90f179-6c16-823f-496f-27f141e9c322@ti.com>

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.

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.

-- 
Best regards,
Jacek Anaszewski

  parent reply	other threads:[~2018-12-20 20:31 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 [this message]
2018-12-21  7:32                 ` Jacek Anaszewski
2018-12-21 13:05                   ` Dan Murphy
2018-12-29 18:28                     ` Jacek Anaszewski
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=71d3ac12-5beb-0a26-71e1-5eae798e7b9f@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).