devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Dahl <ada@thorsis.com>
To: linux-leds@vger.kernel.org
Cc: Rob Herring <robh@kernel.org>, Alexander Dahl <post@lespocky.de>,
	devicetree@vger.kernel.org,
	Jacek Anaszewski <jacek.anaszewski@gmail.com>,
	Pavel Machek <pavel@ucw.cz>, Dan Murphy <dmurphy@ti.com>,
	linux-kernel@vger.kernel.org,
	Peter Ujfalusi <peter.ujfalusi@ti.com>
Subject: Re: [PATCH v4 3/3] dt-bindings: leds: Convert pwm to yaml
Date: Fri, 18 Sep 2020 17:03:08 +0200	[thread overview]
Message-ID: <4676987.BC07iakZNo@ada> (raw)
In-Reply-To: <20200915203735.GB2453633@bogus>

Hello Rob,

thanks for your feedback. I have some questions/remarks on this new yaml 
binding stuff before sending v5 (which will also replace patch 1/3 with a 
different approach btw).

Am Dienstag, 15. September 2020, 22:37:35 CEST schrieb Rob Herring:
> On Fri, Sep 11, 2020 at 05:40:04PM +0200, Alexander Dahl wrote:
> > The example was adapted slightly to make use of the 'function' and
> > 'color' properties.  License discussed with the original author.
> > 
> > Suggested-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
> > Signed-off-by: Alexander Dahl <post@lespocky.de>
> > Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
> > Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
> > ---
> > 
> > Notes:
> >     v3 -> v4:
> >       * added Cc to original author of the binding
> >     
> >     v2 -> v3:
> >       * changed license identifier to recommended one
> >       * added Acked-by
> >     
> >     v2:
> >       * added this patch to series (Suggested-by: Jacek Anaszewski)
> >  
> >  .../devicetree/bindings/leds/leds-pwm.txt     | 50 -----------
> >  .../devicetree/bindings/leds/leds-pwm.yaml    | 85 +++++++++++++++++++
> >  2 files changed, 85 insertions(+), 50 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/leds/leds-pwm.txt
> >  create mode 100644 Documentation/devicetree/bindings/leds/leds-pwm.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/leds/leds-pwm.txt
> > b/Documentation/devicetree/bindings/leds/leds-pwm.txt deleted file mode
> > 100644
> > index 6c6583c35f2f..000000000000
> > --- a/Documentation/devicetree/bindings/leds/leds-pwm.txt
> > +++ /dev/null
> > @@ -1,50 +0,0 @@
> > -LED connected to PWM
> > -
> > -Required properties:
> > -- compatible : should be "pwm-leds".
> > -
> > -Each LED is represented as a sub-node of the pwm-leds device.  Each
> > -node's name represents the name of the corresponding LED.
> > -
> > -LED sub-node properties:
> > -- pwms : PWM property to point to the PWM device (phandle)/port (id) and
> > to -  specify the period time to be used: <&phandle id period_ns>;
> > -- pwm-names : (optional) Name to be used by the PWM subsystem for the PWM
> > device -  For the pwms and pwm-names property please refer to:
> > -  Documentation/devicetree/bindings/pwm/pwm.txt
> > -- max-brightness : Maximum brightness possible for the LED
> > -- active-low : (optional) For PWMs where the LED is wired to supply
> > -  rather than ground.
> > -- label :  (optional)
> > -  see Documentation/devicetree/bindings/leds/common.txt
> > -- linux,default-trigger :  (optional)
> > -  see Documentation/devicetree/bindings/leds/common.txt
> > -
> > -Example:
> > -
> > -twl_pwm: pwm {
> > -	/* provides two PWMs (id 0, 1 for PWM1 and PWM2) */
> > -	compatible = "ti,twl6030-pwm";
> > -	#pwm-cells = <2>;
> > -};
> > -
> > -twl_pwmled: pwmled {
> > -	/* provides one PWM (id 0 for Charing indicator LED) */
> > -	compatible = "ti,twl6030-pwmled";
> > -	#pwm-cells = <2>;
> > -};
> > -
> > -pwmleds {
> > -	compatible = "pwm-leds";
> > -	kpad {
> > -		label = "omap4::keypad";
> > -		pwms = <&twl_pwm 0 7812500>;
> > -		max-brightness = <127>;
> > -	};
> > -
> > -	charging {
> > -		label = "omap4:green:chrg";
> > -		pwms = <&twl_pwmled 0 7812500>;
> > -		max-brightness = <255>;
> > -	};
> > -};
> > diff --git a/Documentation/devicetree/bindings/leds/leds-pwm.yaml
> > b/Documentation/devicetree/bindings/leds/leds-pwm.yaml new file mode
> > 100644
> > index 000000000000..c74867492424
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/leds/leds-pwm.yaml
> > @@ -0,0 +1,85 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/leds/leds-pwm.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: LEDs connected to PWM
> > +
> > +maintainers:
> > +  - Pavel Machek <pavel@ucw.cz>
> > +
> > +description:
> > +  Each LED is represented as a sub-node of the pwm-leds device.  Each
> > +  node's name represents the name of the corresponding LED.
> > +
> > +properties:
> > +  compatible:
> > +    const: pwm-leds
> > +
> > +patternProperties:
> 
> > +  "^pwm-led-([0-9a-f])$":
> '^led-([0-9a-f])' would be my preference. A bit more on that below.

Fine for me.

> What about a single child case?

One child or multiple childs.  I found .dts files with one to four sub-nodes 
of the pwm-leds device in current master.

> > +    type: object
> > +
> > +    $ref: common.yaml#
> > +
> > +    properties:
> > +      pwms:
> > +        description:
> > +          "PWM property to point to the PWM device (phandle)/port (id)
> > +          and to specify the period time to be used:
> > +          <&phandle id period_ns>;"
> 
> No need to redefine a common property.

Should this look like in 'Documentation/devicetree/bindings/leds/backlight/
pwm-backlight.yaml' then?

> What is needed is how many pwms? I'd assume 1 only: 'maxItems: 1'

Yes, one pwm channel per LED.

> > +
> > +      pwm-names:
> > +        description:
> > +          "Name to be used by the PWM subsystem for the PWM device For
> > +          the pwms and pwm-names property please refer to:
> > +          Documentation/devicetree/bindings/pwm/pwm.txt"
> 
> Same here.
> 
> > +
> > +      max-brightness:
> > +        description:
> > +          Maximum brightness possible for the LED
> 
> Needs a type $ref.

fwnode_property_read_u32() is used to read this.

> 
> > +
> > +      active-low:
> > +        description:
> > +          For PWMs where the LED is wired to supply rather than ground.
> 
> type: boolean
> 
> > +
> > +    required:
> > +      - pwms
> > +      - max-brightness
> 
> additionalProperties: false
> 
> That will cause errors if child node names were not consistent (no one
> checked, so they won't be). We could just allow anything, but I prefer
> to move things to be consistent yet try to capture any existing pattern.

Child node names follow no scheme at all currently as far as I could see, 
examples from real current .dts files:

  panel, led-red, blueled, kpad, front, green, pwm_blue, ds1, network_red, 
alarm-brightness, pmu_stat, overo, heartbeat, power, …

Greets
Alex

> 
> > +
> > +examples:
> > +  - |
> > +
> > +    #include <dt-bindings/leds/common.h>
> > +
> > +    twl_pwm: pwm {
> > +        /* provides two PWMs (id 0, 1 for PWM1 and PWM2) */
> > +        compatible = "ti,twl6030-pwm";
> > +        #pwm-cells = <2>;
> > +    };
> > +
> > +    twl_pwmled: pwmled {
> > +        /* provides one PWM (id 0 for Charing indicator LED) */
> > +        compatible = "ti,twl6030-pwmled";
> > +        #pwm-cells = <2>;
> > +    };
> > +
> > +    pwm_leds {
> > +        compatible = "pwm-leds";
> > +
> > +        pwm-led-1 {
> > +            label = "omap4::keypad";
> > +            pwms = <&twl_pwm 0 7812500>;
> > +            max-brightness = <127>;
> > +        };
> > +
> > +        pwm-led-2 {
> > +            color = <LED_COLOR_ID_GREEN>;
> > +            function = LED_FUNCTION_CHARGING;
> > +            pwms = <&twl_pwmled 0 7812500>;
> > +            max-brightness = <255>;
> > +        };
> > +    };
> > +
> > +...





  reply	other threads:[~2020-09-18 15:12 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-11 15:40 [PATCH v4 0/3] leds: pwm: Make automatic labels work Alexander Dahl
2020-09-11 15:40 ` [PATCH v4 1/3] leds: Require valid fwnode pointer for composing name Alexander Dahl
2020-09-11 21:26   ` Jacek Anaszewski
2020-09-15  9:14     ` Alexander Dahl
2020-09-15 21:14       ` Jacek Anaszewski
2020-09-11 15:40 ` [PATCH v4 2/3] leds: pwm: Allow automatic labels for DT based devices Alexander Dahl
2020-09-11 15:40 ` [PATCH v4 3/3] dt-bindings: leds: Convert pwm to yaml Alexander Dahl
2020-09-15 20:37   ` Rob Herring
2020-09-18 15:03     ` Alexander Dahl [this message]
2020-09-18 15:35       ` Rob Herring

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=4676987.BC07iakZNo@ada \
    --to=ada@thorsis.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmurphy@ti.com \
    --cc=jacek.anaszewski@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=peter.ujfalusi@ti.com \
    --cc=post@lespocky.de \
    --cc=robh@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).