Re: turris omnia leds again: question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 11 Mar 2020 11:59:07 +0100
Jacek Anaszewski <jacek.anaszewski@xxxxxxxxx> wrote:

> On 3/10/20 11:23 PM, Marek Behun wrote:
> > On Tue, 10 Mar 2020 22:48:09 +0100
> > Jacek Anaszewski <jacek.anaszewski@xxxxxxxxx> 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



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux