From: Jacek Anaszewski <jacek.anaszewski@gmail.com>
To: Gene Chen <gene.chen.richtek@gmail.com>
Cc: linux-arm Mailing List <linux-arm-kernel@lists.infradead.org>,
devicetree <devicetree@vger.kernel.org>,
cy_huang@richtek.com,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Gene Chen <gene_chen@richtek.com>,
benjamin.chao@mediatek.com, Rob Herring <robh+dt@kernel.org>,
"moderated list:ARM/Mediatek SoC support"
<linux-mediatek@lists.infradead.org>, Dan Murphy <dmurphy@ti.com>,
Pavel Machek <pavel@ucw.cz>,
Matthias Brugger <matthias.bgg@gmail.com>,
Wilma.Wu@mediatek.com,
Linux LED Subsystem <linux-leds@vger.kernel.org>,
shufan_lee@richtek.com
Subject: Re: [PATCH v5 2/2] leds: mt6360: Add LED driver for MT6360
Date: Fri, 30 Oct 2020 23:34:37 +0100 [thread overview]
Message-ID: <af17141f-23ae-063d-ade2-42dfdf611d81@gmail.com> (raw)
In-Reply-To: <CAE+NS35z7_ZUdm6gRNw2z7Ozs+1A8_Vtj_9x-F65RLd4QqDFDA@mail.gmail.com>
On 10/30/20 9:51 AM, Gene Chen wrote:
> Jacek Anaszewski <jacek.anaszewski@gmail.com> 於 2020年10月28日 週三 上午1:28寫道:
>>
>> On 10/27/20 10:28 AM, Gene Chen wrote:
>>> Jacek Anaszewski <jacek.anaszewski@gmail.com> 於 2020年10月21日 週三 上午5:47寫道:
>>>>
>>>> On 10/20/20 8:44 AM, Gene Chen wrote:
>>>>> Jacek Anaszewski <jacek.anaszewski@gmail.com> 於 2020年10月9日 週五 上午5:51寫道:
>>>>>>
>>>>>> Hi Gene,
>>>>>>
>>>>>> On 10/7/20 3:42 AM, Gene Chen wrote:
>>>>>>> From: Gene Chen <gene_chen@richtek.com>
>>>>>>>
>>>>>>> Add MT6360 LED driver include 2-channel Flash LED with torch/strobe mode,
>>>>>>> 3-channel RGB LED support Register/Flash/Breath Mode, and 1-channel for
>>>>>>> moonlight LED.
>>>>>>>
>>>>>>> Signed-off-by: Gene Chen <gene_chen@richtek.com>
>>>>>>> ---
>>>>>>> drivers/leds/Kconfig | 12 +
>>>>>>> drivers/leds/Makefile | 1 +
>>>>>>> drivers/leds/leds-mt6360.c | 783 +++++++++++++++++++++++++++++++++++++++++++++
>>>>>>> 3 files changed, 796 insertions(+)
>>>>>>> create mode 100644 drivers/leds/leds-mt6360.c
>>>>>>>
>>>>>>> diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
>>>>>>> index 1c181df..c7192dd 100644
>>>>>>> --- a/drivers/leds/Kconfig
>>>>>>> +++ b/drivers/leds/Kconfig
>>>>>>> @@ -271,6 +271,18 @@ config LEDS_MT6323
>>>>>>> This option enables support for on-chip LED drivers found on
>>>>>>> Mediatek MT6323 PMIC.
>>>>>>>
>>>>>>> +config LEDS_MT6360
>>>>>>> + tristate "LED Support for Mediatek MT6360 PMIC"
>>>>>>> + depends on LEDS_CLASS_FLASH && OF
>>>>>>> + depends on LEDS_CLASS_MULTICOLOR
>>>>>>
>>>>>> Since CONFIG_LED_CLASS_MULTICOLOR can be turned off you need to have
>>>>>> below instead:
>>>>>>
>>>>>> depends on LEDS_CLASS_MULTICOLOR || !!LEDS_CLASS_MULTICOLOR
>>
>> My typo here, should be one "!":
>>
>> depends on LEDS_CLASS_MULTICOLOR || !LEDS_CLASS_MULTICOLOR
>>
>> And you should also have
>>
>> depends on LEDS_CLASS_FLASH || !LEDS_CLASS_FLASH
>>
>> But to make it work correctly you would have to add registration
>> stubs to include/linux/led-class-flash.h similarly to LED mc stubs
>> in include/linux/led-class-multicolor.h.
>>
>>>>>>
>>>>>> Unless you want to prevent enabling the driver without RGB LED,
>>>>>> but that does not seem to be reasonable at first glance.
>>>>>>
>>>>>
>>>>> May I change to "select LEDS_CLASS_MULTICOLOR"?
>>>>> I suppose RGB always use multicolor mode.
>>>>
>>>> You will also have moonlight LED that will not need multicolor
>>>> framework. Is it somehow troublesome to keep "depends on"?
>>>>
>>>
>>> If only use ML LED and FLED, DTSI will only define ML LED and FLED.
>>> Therefore, the drivers probe will not register rgb multicolor device.
>>
>> Please test your use case again with my fixed "depends on".
>>
>> In case when there is only ML LED and FLED in the DT it should
>> register both devices if LEDS_CLASS_FLASH is turned on.
>> Multicolor framework has nothing to do in this case.
>>
>> But if you additionally had MC LED node, then it should
>> be registered only if LEDS_CLASS_MULTICOLOR is enabled.
>>
>> Similarly, when FLED node is present, but LEDS_CLASS_FLASH
>> is off, and LEDS_CLASS_MULTICOLOR is on, the driver should still
>> compile, but register only LED MC device (if its node is present).
>>
>
> I think this case only register LED device, not LED "MC" device.
> Because our FLASH is not a multicolor device.
No, here I was describing following setup:
- DT FLED node is present, CONFIG_LEDS_CLASS_FLASH is off
- DT MC node is present, CONFIG_LEDS_CLASS_MULTICOLOR is on
ML LED presence in DT is irrelevant in this case.
It should be always registered if there is corresponding DT node
and LEDS_CLASS is on.
>
>> Possible should be also the case when both LEDS_CLASS_FLASH
>> and LEDS_CLASS_MULTICOLOR are off. Then only LED class device
>> for ML LED will be registered (provided there is ML DT node).
>> But to make it possible you should have also "depends on LEDS_CLASS"
>> in the Kconfig entry.
>>
>
> According to your suggestion,
> depends on LED_CLASS && LEDS_CLASS_FLASH && OF
s/LED_CLASS/LEDS_CLASS/
And you have to remove LEDS_CLASS_FLASH from above line.
> depends on LEDS_CLASS_MULTICOLOR || !!LEDS_CLASS_MULTICOLOR
s/!!LEDS_CLASS_MULTICOLOR/!LEDS_CLASS_MULTICOLOR/
> depends on LEDS_CLASS_FLASH || !LEDS_CLASS_FLASH
> depends on MFD_MT6360
You will need V4L2_FLASH_LED_CLASS dependency as well, to avoid
build break, when it is set to 'm'.
To recap, following block of dependencies is required:
depends on LEDS_CLASS && OF
depends on LEDS_CLASS_MULTICOLOR || !LEDS_CLASS_MULTICOLOR
depends on LEDS_CLASS_FLASH || !LEDS_CLASS_FLASH
depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
depends on MFD_MT6360
>
> and source code add constraint
>
> #if IS_ENABLED(CONFIG_LEDS_CLASS_MULTICOLOR)
> ret = devm_led_classdev_multicolor_register_ext(parent, &led->rgb,
> init_data);
> #endif
>
> #if IS_ENABLED(CONFIG_LEDS_CLASS_FLASH)
> ret = devm_led_classdev_flash_register_ext(parent, &led->flash, init_data);
> #endif
No, the guards should be in headers. That's why I recommended adding
no ops for LED flash class registration functions in previous email.
Please compare include/linux/led-class-multicolor.h and do similar
changes in include/linux/led-class-flash.h.
> =============
>
> Or Should I seperate two drivers?
> one for RGB LED, one for ML LED and FLED
This would incur unnecessary code duplication.
--
Best regards,
Jacek Anaszewski
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
next prev parent reply other threads:[~2020-10-30 22:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-07 1:42 [PATCH v5 0/2] leds: mt6360: Add LED driver for MT6360 Gene Chen
2020-10-07 1:42 ` [PATCH v5 1/2] dt-bindings: leds: Add bindings for MT6360 LED Gene Chen
2020-10-07 13:50 ` Rob Herring
2020-10-08 21:42 ` Jacek Anaszewski
2020-10-07 1:42 ` [PATCH v5 2/2] leds: mt6360: Add LED driver for MT6360 Gene Chen
2020-10-07 5:11 ` kernel test robot
2020-10-08 21:51 ` Jacek Anaszewski
2020-10-20 6:44 ` Gene Chen
2020-10-20 21:46 ` Jacek Anaszewski
2020-10-27 9:28 ` Gene Chen
2020-10-27 17:28 ` Jacek Anaszewski
2020-10-30 8:51 ` Gene Chen
2020-10-30 22:34 ` Jacek Anaszewski [this message]
2020-11-16 10:01 ` Gene Chen
2020-11-16 18:25 ` Jacek Anaszewski
2020-11-17 9:54 ` Gene Chen
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=af17141f-23ae-063d-ade2-42dfdf611d81@gmail.com \
--to=jacek.anaszewski@gmail.com \
--cc=Wilma.Wu@mediatek.com \
--cc=benjamin.chao@mediatek.com \
--cc=cy_huang@richtek.com \
--cc=devicetree@vger.kernel.org \
--cc=dmurphy@ti.com \
--cc=gene.chen.richtek@gmail.com \
--cc=gene_chen@richtek.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-leds@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=pavel@ucw.cz \
--cc=robh+dt@kernel.org \
--cc=shufan_lee@richtek.com \
/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).