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@ucw.cz
Cc: linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v14 13/19] leds: lp55xx: Add multicolor framework support to lp55xx
Date: Thu, 24 Oct 2019 23:02:40 +0200	[thread overview]
Message-ID: <0bdb9d2c-601f-9b5e-5ca2-6bd97ffacde5@gmail.com> (raw)
In-Reply-To: <44796209-104e-66f1-e1e0-2f3dfe3d7cd7@ti.com>

Dan,

On 10/23/19 2:22 PM, Dan Murphy wrote:
> Jacek
> 
> On 10/18/19 4:48 PM, Jacek Anaszewski wrote:
>> Dan,
>>
>> On 10/18/19 2:25 PM, Dan Murphy wrote:
>>> Add multicolor framework support for the lp55xx family.
>>>
>>> Signed-off-by: Dan Murphy <dmurphy@ti.com>
>>> ---
>>>   drivers/leds/Kconfig                      |   1 +
>>>   drivers/leds/leds-lp55xx-common.c         | 185 +++++++++++++++++++---
>>>   drivers/leds/leds-lp55xx-common.h         |   9 ++
>>>   include/linux/platform_data/leds-lp55xx.h |   7 +
>>>   4 files changed, 179 insertions(+), 23 deletions(-)
>>>
>>> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
>>> index fb614a6b9afa..5706bf8d8bd1 100644
>>> --- a/drivers/leds/Kconfig
>>> +++ b/drivers/leds/Kconfig
>>> @@ -377,6 +377,7 @@ config LEDS_LP50XX
>>>   config LEDS_LP55XX_COMMON
>>>       tristate "Common Driver for TI/National
>>> LP5521/5523/55231/5562/8501"
>>>       depends on LEDS_LP5521 || LEDS_LP5523 || LEDS_LP5562 ||
>>> LEDS_LP8501
>>> +    depends on OF
>>>       select FW_LOADER
>>>       select FW_LOADER_USER_HELPER
>>>       help
>>> diff --git a/drivers/leds/leds-lp55xx-common.c
>>> b/drivers/leds/leds-lp55xx-common.c
>>> index 882ef39e4965..197b87ca5ca2 100644
>>> --- a/drivers/leds/leds-lp55xx-common.c
>>> +++ b/drivers/leds/leds-lp55xx-common.c
>>> @@ -131,14 +131,62 @@ static struct attribute *lp55xx_led_attrs[] = {
>>>   };
>>>   ATTRIBUTE_GROUPS(lp55xx_led);
>>>   +#if IS_ENABLED(CONFIG_LEDS_CLASS_MULTI_COLOR)
>>> +static int lp55xx_map_channel(struct lp55xx_led *led, int color_id,
>>> +                  enum led_brightness brightness)
>> If you changed the type of the first parameter to
>> struct led_mc_color_conversion* then you could make this function local
>> in LED mc class and call it in led_mc_calc_color_components() after
>> calculating brightness components.
> 
> I prefer to leave this here and if this code is ever integrated we can
> see if there is a common need for the MC class to expose a mapping API.
> 
>>
>>> +{
>>> +    int i;
>>> +
>>> +    for (i = 0; i < led->mc_cdev.num_leds; i++) {
>>> +        if (led->color_components[i].color_id == color_id) {
>>> +            led->color_components[i].brightness = brightness;
>>> +            return 0;
>>> +        }
>>> +    }
>>> +
>>> +    return -EINVAL;
>>> +}
>>> +#endif
>>> +
>>> +static int lp55xx_set_mc_brightness(struct lp55xx_led *led,
>>> +                    struct lp55xx_device_config *cfg,
>>> +                     enum led_brightness brightness)
>>> +{
>>> +    int ret = -EINVAL;
>>> +#if IS_ENABLED(CONFIG_LEDS_CLASS_MULTI_COLOR)
>>> +    struct led_mc_color_conversion
>>> color_components[LP55XX_MAX_GROUPED_CHAN];
>> You wouldn't need this local variable then.
> 
>>> +    int i;
>>> +
>>> +    if (!cfg->multicolor_brightness_fn)
>>> +        return -EINVAL;
>>> +
>>> +    led_mc_calc_color_components(&led->mc_cdev, brightness,
>>> +                     color_components);
>> Because you could pass what you already have in the struct lp55xx_led:
>>
>> led_mc_calc_color_components(&led->mc_cdev, brightness,
>>                               led->color_components);
> 
> Well that is not entirely accurate the led->color_components is the data
> that we have from the DT that should not be changed. Passing this into
> the MC calc function would mean that the framework would have to map the
> output to the color_id.  As I indicated above for now I don't think the
> MC class should do any mapping of color_id to the output.

I proposed to use color_components because it is already there
and has required data in place. You could always copy
that data to some other local structure but it would be unnecessary
overhead.

Anyway, all what I proposed here are just nice-to-have details,
that can be covered in the future.

-- 
Best regards,
Jacek Anaszewski

  reply	other threads:[~2019-10-24 21:02 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-18 12:25 [PATCH v14 00/19] MultiColor Framework v14 Dan Murphy
2019-10-18 12:25 ` [PATCH v14 01/19] dt: bindings: Add multicolor class dt bindings documention Dan Murphy
2019-10-18 12:25 ` [PATCH v14 02/19] dt-bindings: leds: Add multicolor ID to the color ID list Dan Murphy
2019-10-18 12:25 ` [PATCH v14 03/19] " Dan Murphy
2019-10-18 12:25 ` [PATCH v14 04/19] leds: multicolor: Introduce a multicolor class definition Dan Murphy
2019-10-18 21:44   ` Jacek Anaszewski
2019-10-23 12:23     ` Dan Murphy
2019-10-18 12:25 ` [PATCH v14 05/19] dt: bindings: lp50xx: Introduce the lp50xx family of RGB drivers Dan Murphy
2019-10-18 12:25 ` [PATCH v14 06/19] leds: lp50xx: Add the LP50XX family of the RGB LED driver Dan Murphy
2019-10-18 12:25 ` [PATCH v14 07/19] dt: bindings: lp55xx: Be consistent in the document with LED acronym Dan Murphy
2019-10-18 12:25 ` [PATCH v14 08/19] dt: bindings: lp55xx: Update binding for Multicolor Framework Dan Murphy
2019-10-18 12:25 ` [PATCH v14 09/19] ARM: dts: n900: Add reg property to the LP5523 channel node Dan Murphy
2019-10-18 12:25 ` [PATCH v14 10/19] ARM: dts: imx6dl-yapp4: Add reg property to the lp5562 " Dan Murphy
2019-10-18 12:25 ` [PATCH v14 11/19] ARM: dts: ste-href: Add reg property to the LP5521 channel nodes Dan Murphy
2019-10-18 12:25 ` [PATCH v14 12/19] leds: lp55xx: Convert LED class registration to devm_* Dan Murphy
2019-10-18 18:02   ` Jacek Anaszewski
2019-10-18 18:02   ` Jacek Anaszewski
2019-10-18 20:27     ` Dan Murphy
2019-10-18 12:25 ` [PATCH v14 13/19] leds: lp55xx: Add multicolor framework support to lp55xx Dan Murphy
2019-10-18 21:48   ` Jacek Anaszewski
2019-10-18 21:56     ` Jacek Anaszewski
2019-10-22 16:37       ` Dan Murphy
2019-10-22 17:41         ` Jacek Anaszewski
2019-10-25 17:57           ` Dan Murphy
2019-10-25 18:13             ` Jacek Anaszewski
2019-10-25 18:18               ` Dan Murphy
2019-10-25 18:56                 ` Jacek Anaszewski
2019-10-25 20:07                   ` Dan Murphy
2019-10-23 12:22     ` Dan Murphy
2019-10-24 21:02       ` Jacek Anaszewski [this message]
2019-10-18 22:02   ` Jacek Anaszewski
2019-10-23 12:25     ` Dan Murphy
2019-10-18 12:25 ` [PATCH v14 14/19] leds: lp5523: Update the lp5523 code to add multicolor brightness function Dan Murphy
2019-10-18 12:25 ` [PATCH v14 15/19] leds: lp5521: Add multicolor framework multicolor brightness support Dan Murphy
2019-10-18 12:25 ` [PATCH v14 16/19] leds: lp55xx: Fix checkpatch file permissions issues Dan Murphy
2019-10-18 12:25 ` [PATCH v14 17/19] leds: lp5523: Fix checkpatch issues in the code Dan Murphy
2019-10-18 12:25 ` [PATCH v14 18/19] dt: bindings: Update lp55xx binding to recommended LED naming Dan Murphy
2019-10-18 12:25 ` [PATCH v14 19/19] leds: lp55xx-common: Remove extern from lp55xx-common header Dan Murphy

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=0bdb9d2c-601f-9b5e-5ca2-6bd97ffacde5@gmail.com \
    --to=jacek.anaszewski@gmail.com \
    --cc=dmurphy@ti.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@ucw.cz \
    /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).