From: Marek Behun <kabel@blackhole.sk>
To: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Cc: linux-leds@vger.kernel.org, Pavel Machek <pavel@ucw.cz>
Subject: Re: turris omnia leds again: question
Date: Thu, 19 Mar 2020 05:34:47 +0100 [thread overview]
Message-ID: <20200319053447.2c96cb1f@blackhole.sk> (raw)
In-Reply-To: <325ae880-2325-e002-77e9-d853b84c6393@gmail.com>
On Wed, 11 Mar 2020 11:59:07 +0100
Jacek Anaszewski <jacek.anaszewski@gmail.com> wrote:
> On 3/10/20 11:23 PM, Marek Behun wrote:
> > On Tue, 10 Mar 2020 22:48:09 +0100
> > Jacek Anaszewski <jacek.anaszewski@gmail.com> wrote:
> >
> >> Hi Marek,
> >>
> >> On 3/10/20 6:38 PM, Marek Behun wrote:
> >>> Hi,
> >>>
> >>> I am going to try to send driver for Omnia LEDs again. The last time
> >>> there was a problem: on 05/01/2019 Jacek wrote:
> >>>
> >>>> I wonder if we're doing right merging this driver in this form.
> >>>> We break the rule one-led-class-device-per-one-channel. We don't
> >>>> have LED multi color support yet, so this should support RGB LEDs
> >>>> in the old manner. Or switch to using LED multi color class.
> >>>
> >>>> Once we will have LED multi color class, we will be able to add the
> >>>> support for it to the driver and make the driver configurable to be
> >>>> able to expose old interface or the LED multi color one.
> >>>
> >>>> Moreover, the bindings should use led-sources property for grouping
> >>>> three channels under single LED class device. This is certainly to be
> >>>> fixed.
> >>>
> >>> So I am going to try to modify the driver so that each channel creates
> >>> one LED class device. Do I understand this correctly then, that this
> >>> way when there are three channels (RGB) on one LED, all the 3 device
> >>> tree nodes for should have the same reg property, but different
> >>> led-sources property? Eg:
> >>>
> >>> led@0,0 {
> >>> reg = <0>;
> >>> led-sources = <0>;
> >>> label = "omnia::heartbeat::red";
> >>> };
> >>>
> >>> led@0,1 {
> >>> reg = <0>;
> >>> led-sources = <1>;
> >>> label = "omnia::heartbeat::green";
> >>> };
> >>>
> >>> led@0,2 {
> >>> reg = <0>;
> >>> led-sources = <2>;
> >>> label = "omnia::heartbeat::blue";
> >>> };
> >>>
> >>> Or did I misinterpret the led-sources property?
> >>
> >> This is what I proposed back then, strangely that message wasn't
> >> archived by bots, or maybe it resides only in my outbox...
> >>
> >> --------------
> >>
> >> LED sub-node properties:
> >> - reg : Must be from 0x0 to 0xb, since there are 12 RGB
> >> LEDs on this
> >> controller.
> >> - label : (optional)
> >> see Documentation/devicetree/bindings/leds/common.txt
> >> - linux,default-trigger : (optional)
> >> see Documentation/devicetree/bindings/leds/common.txt
> >> - led-sources : Each child node should describe RGB LED it controls,
> >> by listing corresponding iout identifiers:
> >> 0 - RGB LED 0: red
> >> 1 - RGB LED 0: green
> >> 2 - RGB LED 0: blue
> >> 3 - RGB LED 1: red
> >> 4 - RGB LED 1: green
> >> 5 - RGB LED 1: blue
> >> 6 - RGB LED 2: red
> >> 7 - RGB LED 2: green
> >> 8 - RGB LED 2: blue
> >> 9 - RGB LED 3: red
> >> 10 - RGB LED 3: green
> >> 11 - RGB LED 3: blue
> >> ... and list all the iouts, maybe other names will be more
> >> appropriate for this device, feel free to propose something
> >>
> >>
> >>
> >> Example:
> >>
> >> led-controller@2b {
> >> compatible = "cznic,turris-omnia-leds";
> >> reg = <0x2b>;
> >> #address-cells = <1>;
> >> #size-cells = <0>;
> >>
> >> led@0 {
> >> reg = <0x0>;
> >> label = "userB";
> >> linux,default-trigger = "heartbeat";
> >> led-sources = <0 1 2>;
> >> };
> >>
> >> led@1 {
> >> reg = <0x1>;
> >> label = "userA";
> >> led-sources = <3 4 5>;
> >> };
> >>
> >> led@2 {
> >> reg = <0x2>;
> >> label = "pci3";
> >> led-sources = <6 7 8>;
> >> };
> >>
> >> led@3 {
> >> reg = <0x3>;
> >> label = "pci2";
> >> led-sources = <9 10 11>;
> >> };
> >> ...
> >> --------------
> >>
> >>
> >> Of course now label should be replaced with color and function
> >> properties. I've just reviewed that patch set and realized that
> >> we agreed upon setting max_brightness to 1 for all LEDs, right?
> >>
> >
> > No, there were subsequent patches which added support for
> > max_brightness = 255.
>
> Right.
>
> > So the driver will register one LED class device per node, with color
> > ID = WHITE. Once RGB LED class is merged, the driver can be remade, but
> > the device tree won't need to be changed.
>
> Device Tree will need to be changed to LED mc specific bindings,
> which at current state introduces one more level or nesting
> and LED_COLOR_ID_MULTI for the top level DT node.
>
> And the driver will need to still support this approach as well
> as the new LED mc class.
>
Hi Jacek,
I have used the led-sources in such a way that the user can either set
led-sources = <0 1 2>;
color = <LED_COLOR_ID_WHITE>;
in which case all three channels will be grouped into one led cdev,
or the user can use just one led-source, for example
led-sources = <0>;
color = <LED_COLOR_ID_RED>;
and in this case they can have one led cdev per channel.
Is this acceptable? Or should I just go with the WHITE approach?
In case that this is acceptable I wonder what should be the suggested
device-tree node naming and reg property, when using one led cdev per
channel, for example:
led@1,0 {
reg = <1>;
led-sources = <3>;
color = <LED_COLOR_ID_RED>;
};
led@1,1 {
reg = <1>;
led-sources = <4>;
color = <LED_COLOR_ID_GREEN>;
};
led@1,2 {
reg = <1>;
led-sources = <5>;
color = <LED_COLOR_ID_BLUE>;
};
I don't think different nodes should have the same reg property. Should
in this case the reg property have two values?
Marek
next prev parent reply other threads:[~2020-03-19 4:34 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-10 17:38 turris omnia leds again: question Marek Behun
2020-03-10 21:48 ` Jacek Anaszewski
2020-03-10 22:23 ` Marek Behun
2020-03-11 10:59 ` Jacek Anaszewski
2020-03-19 4:34 ` Marek Behun [this message]
2020-03-19 15:27 ` Marek Behun
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=20200319053447.2c96cb1f@blackhole.sk \
--to=kabel@blackhole.sk \
--cc=jacek.anaszewski@gmail.com \
--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