Re: [PATCH] leds: leds-gpio: Fix multiple instances registration when 'label' property is absent

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

 



On Wed, Dec 3, 2014 at 5:34 PM, Fabio Estevam <festevam@xxxxxxxxx> wrote:
> From: Fabio Estevam <fabio.estevam@xxxxxxxxxxxxx>
>
> Since commit a43f2cbbb009f96 ("leds: leds-gpio: Make use of device property
> API") it is no longer possible to register multiple gpio leds without passing
> the 'label' property.
>
> According to Documentation/devicetree/bindings/leds/common.txt:
>
> "Optional properties for child nodes:
> - label : The label for this LED.  If omitted, the label is
>   taken from the node name (excluding the unit address)."
>
> So retrieve the node name when the 'label' property is absent to keep the old
> behaviour and fix this regression.
>
> Reported-by: Jean-Michel Hautbois <jean-michel.hautbois@xxxxxxxxxxx>
> Signed-off-by: Fabio Estevam <fabio.estevam@xxxxxxxxxxxxx>
> ---
>  drivers/leds/leds-gpio.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
> index fd53968..a635330 100644
> --- a/drivers/leds/leds-gpio.c
> +++ b/drivers/leds/leds-gpio.c
> @@ -170,6 +170,7 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
>         struct fwnode_handle *child;
>         struct gpio_leds_priv *priv;
>         int count, ret;
> +       struct device_node *np;
>
>         count = device_get_child_node_count(dev);
>         if (!count)
> @@ -189,7 +190,12 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
>                         goto err;
>                 }
>
> -               fwnode_property_read_string(child, "label", &led.name);
> +               np = of_node(child);
> +
> +               if (fwnode_property_present(child, "label"))
> +                       fwnode_property_read_string(child, "label", &led.name);
> +               else
> +                       led.name = np->name;

np will be NULL when ACPI is used and that will break this driver.
Instead you need to use the construct:
                 fwnode_property_read_string(child, "label", &led.name);
                 if (IS_ENABLED(CONFIG_OF) && !led.name && np)
                         led.name = np->name;
                 if (!led.name)
                         error;

>                 fwnode_property_read_string(child, "linux,default-trigger",
>                                             &led.default_trigger);
>
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-leds" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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