diff mbox series

[v4,3/3] dt-bindings: leds: Convert pwm to yaml

Message ID 20200911154004.28354-4-post@lespocky.de
State Superseded
Headers show
Series leds: pwm: Make automatic labels work | expand

Checks

Context Check Description
robh/dt-meta-schema success
robh/checkpatch warning total: 0 errors, 2 warnings, 85 lines checked

Commit Message

Alexander Dahl Sept. 11, 2020, 3:40 p.m. UTC
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

Comments

Rob Herring Sept. 15, 2020, 8:37 p.m. UTC | #1
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.

What about a single child case?

> +    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.

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

> +
> +      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.

> +
> +      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.

> +
> +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>;
> +        };
> +    };
> +
> +...
> -- 
> 2.20.1
>
Alexander Dahl Sept. 18, 2020, 3:03 p.m. UTC | #2
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>;
> > +        };
> > +    };
> > +
> > +...
Rob Herring Sept. 18, 2020, 3:35 p.m. UTC | #3
On Fri, Sep 18, 2020 at 9:12 AM Alexander Dahl <ada@thorsis.com> wrote:
>
> 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.

For the single child case, you need to allow for just 'led' then. So
this I think: '^led(-[0-9a-f]+)?$'

> > > +    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?

Yes.

>
> > 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.

$ref: /schemas/types.yaml#/definitions/uint32

>
> >
> > > +
> > > +      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, …

So you can do this to allow any child node name:

additonalProperties:
  type: object
  $ref: common.yaml#

  ... everything you have under pwm-led-*

Or how gpio-keys.yaml was done also works.

Rob
diff mbox series

Patch

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])$":
+    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>;"
+
+      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"
+
+      max-brightness:
+        description:
+          Maximum brightness possible for the LED
+
+      active-low:
+        description:
+          For PWMs where the LED is wired to supply rather than ground.
+
+    required:
+      - pwms
+      - max-brightness
+
+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>;
+        };
+    };
+
+...