> Hello,
> 
> On 12/21/2013 05:32 AM, Alexander Shiyan wrote:
> > This patch adds devicetree support for the MC13XXX LED driver.
> > 
> > Signed-off-by: Alexander Shiyan <[email protected]>
> > ---
> >  Documentation/devicetree/bindings/mfd/mc13xxx.txt |  47 ++++++++
> >  drivers/leds/leds-mc13783.c                       | 134 
> > +++++++++++++++++++---
> >  2 files changed, 162 insertions(+), 19 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/mfd/mc13xxx.txt 
> > b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
> > index abd9e3c..1413f39 100644
> > --- a/Documentation/devicetree/bindings/mfd/mc13xxx.txt
> > +++ b/Documentation/devicetree/bindings/mfd/mc13xxx.txt
> > @@ -10,9 +10,44 @@ Optional properties:
> >  - fsl,mc13xxx-uses-touch : Indicate the touchscreen controller is being 
> > used
> >  
> >  Sub-nodes:
> > +- leds : Contain the led nodes and initial register values in property
> > +  "led-control". Number of register depends of used IC, for MC13783 is 6,
> > +  for MC13892 is 4, for MC34708 is 1. See datasheet for bits definitions of
> > +  these registers.
> > +  - #address-cells: Must be 1.
> > +  - #size-cells: Must be 0.
> > +  Each led node should contain "reg", which used as LED ID (described 
> > below).
> > +  Optional properties "label" and "linux,default-trigger" is described in
> > +  Documentation/devicetree/bindings/leds/common.txt.
> >  - regulators : Contain the regulator nodes. The regulators are bound using
> >    their names as listed below with their registers and bits for enabling.
> >  
> > +MC13783 LED IDs:
> > +    0  : Main display
> > +    1  : AUX display
> > +    2  : Keypad
> > +    3  : Red 1
> > +    4  : Green 1
> > +    5  : Blue 1
> > +    6  : Red 2
> > +    7  : Green 2
> > +    8  : Blue 2
> > +    9  : Red 3
> > +    10 : Green 3
> > +    11 : Blue 3
> > +
> > +MC13892 LED IDs:
> > +    0  : Main display
> > +    1  : AUX display
> > +    2  : Keypad
> > +    3  : Red
> > +    4  : Green
> > +    5  : Blue
> > +
> > +MC34708 LED IDs:
> > +    0  : Charger Red
> > +    1  : Charger Green
> > +
> >  MC13783 regulators:
> >      sw1a      : regulator SW1A      (register 24, bit 0)
> >      sw1b      : regulator SW1B      (register 25, bit 0)
> > @@ -89,6 +124,18 @@ ecspi@70010000 { /* ECSPI1 */
> >             interrupt-parent = <&gpio0>;
> >             interrupts = <8>;
> >  
> > +           leds {
> 
> compatible string?

Not need. This is a child for PMIC and it is probed from PMIC core.

...
> > +#ifdef CONFIG_OF
> > +static int __init mc13xxx_led_probe_dt(struct platform_device *pdev)
> > +{
> > +   struct mc13xxx_leds *leds = platform_get_drvdata(pdev);
> > +   struct mc13xxx *mcdev = leds->master;
> > +   struct device_node *parent, *child;
> > +   struct device *dev = &pdev->dev;
> > +   u32 *ctrls, init_led = 0;
> > +   int i, ret;
> > +
> > +   ctrls = devm_kzalloc(dev, leds->devtype->num_regs * sizeof(*ctrls),
> > +                        GFP_KERNEL);
> > +   if (!ctrls)
> > +           return -ENOMEM;
> > +
> > +   of_node_get(dev->parent->of_node);
> > +   parent = of_find_node_by_name(dev->parent->of_node, "leds");
> > +   if (!parent) {
> > +           ret = -ENODATA;
> > +           goto out_node_put;
> > +   }
> > +
> > +   ret = of_property_read_u32_array(parent, "led-control", ctrls,
> > +                                    leds->devtype->num_regs);
> > +   if (ret)
> > +           goto out_node_put;
> > +
> > +   for (i = 0; i < leds->devtype->num_regs; i++) {
> > +           ret = mc13xxx_reg_write(mcdev, leds->devtype->ledctrl_base + i,
> > +                                   ctrls[i]);
> 
> Code duplicated from the regular probe.

Yes. This was done based on the comments to the previous version:
http://www.spinics.net/lists/devicetree/msg14933.html

Thanks.

---

Reply via email to