diff mbox series

[U-Boot,v2,2/3] dm: led: auto probe() LEDs with "default-state"

Message ID 20180403073157.16836-3-linux-kernel-dev@beckhoff.com
State Superseded
Delegated to: Tom Rini
Headers show
Series This series adds support for gpio-leds "default-state" property. The | expand

Commit Message

linux-kernel-dev April 3, 2018, 7:31 a.m. UTC
From: Patrick Bruenn <p.bruenn@beckhoff.com>

To avoid board specificy LED activation code, automatically
activate gpio-leds with "default-state" property during bind().

Signed-off-by: Patrick Bruenn <p.bruenn@beckhoff.com>
---

Changes in v2: None

 drivers/led/led_gpio.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Simon Glass April 3, 2018, 5:52 p.m. UTC | #1
On 3 April 2018 at 15:31,  <linux-kernel-dev@beckhoff.com> wrote:
> From: Patrick Bruenn <p.bruenn@beckhoff.com>
>
> To avoid board specificy LED activation code, automatically
> activate gpio-leds with "default-state" property during bind().
>
> Signed-off-by: Patrick Bruenn <p.bruenn@beckhoff.com>
> ---
>
> Changes in v2: None
>
>  drivers/led/led_gpio.c | 9 +++++++++
>  1 file changed, 9 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

But please see below.

>
> diff --git a/drivers/led/led_gpio.c b/drivers/led/led_gpio.c
> index e68d8d3864..d2fe3d5ad5 100644
> --- a/drivers/led/led_gpio.c
> +++ b/drivers/led/led_gpio.c
> @@ -11,6 +11,7 @@
>  #include <led.h>
>  #include <asm/gpio.h>
>  #include <dm/lists.h>
> +#include <dm/uclass-internal.h>
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> @@ -120,6 +121,14 @@ static int led_gpio_bind(struct udevice *parent)
>                         return ret;
>                 uc_plat = dev_get_uclass_platdata(dev);
>                 uc_plat->label = label;
> +
> +               if (ofnode_read_string(node, "default-state")) {

Here I think you mean ofnode_read_boot() ?

> +                       struct udevice *devp;
> +
> +                       ret = uclass_get_device_tail(dev, 0, &devp);
> +                       if (ret)
> +                               return ret;
> +               }
>         }
>
>         return 0;
> --
> 2.11.0
>
>

Regards,
Simon
Patrick Brünn April 4, 2018, 6:17 a.m. UTC | #2
>From: sjg@google.com [mailto:sjg@google.com] On Behalf Of Simon Glass
>Sent: Dienstag, 3. April 2018 19:53
>To: linux-kernel-dev <linux-kernel-dev@beckhoff.com>
>Cc: U-Boot Mailing List <u-boot@lists.denx.de>; Patrick Brünn
><P.Bruenn@beckhoff.com>; Ziping Chen <techping.chan@gmail.com>
>Subject: Re: [PATCH v2 2/3] dm: led: auto probe() LEDs with "default-state"
>
>On 3 April 2018 at 15:31,  <linux-kernel-dev@beckhoff.com> wrote:
>> From: Patrick Bruenn <p.bruenn@beckhoff.com>
>>
...
>>
>> diff --git a/drivers/led/led_gpio.c b/drivers/led/led_gpio.c
>> index e68d8d3864..d2fe3d5ad5 100644
>> --- a/drivers/led/led_gpio.c
>> +++ b/drivers/led/led_gpio.c
>> @@ -11,6 +11,7 @@
>>  #include <led.h>
>>  #include <asm/gpio.h>
>>  #include <dm/lists.h>
>> +#include <dm/uclass-internal.h>
>>
>>  DECLARE_GLOBAL_DATA_PTR;
>>
>> @@ -120,6 +121,14 @@ static int led_gpio_bind(struct udevice *parent)
>>                         return ret;
>>                 uc_plat = dev_get_uclass_platdata(dev);
>>                 uc_plat->label = label;
>> +
>> +               if (ofnode_read_string(node, "default-state")) {
>
>Here I think you mean ofnode_read_boot() ?
>
Yes, you are right I will resend a v3 with ofnode_read_bool().

It took me quite a while to understand that "read_bool" means "has_property".

Thanks for your help!
Patrick
Beckhoff Automation GmbH & Co. KG | Managing Director: Dipl. Phys. Hans Beckhoff
Registered office: Verl, Germany | Register court: Guetersloh HRA 7075
diff mbox series

Patch

diff --git a/drivers/led/led_gpio.c b/drivers/led/led_gpio.c
index e68d8d3864..d2fe3d5ad5 100644
--- a/drivers/led/led_gpio.c
+++ b/drivers/led/led_gpio.c
@@ -11,6 +11,7 @@ 
 #include <led.h>
 #include <asm/gpio.h>
 #include <dm/lists.h>
+#include <dm/uclass-internal.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -120,6 +121,14 @@  static int led_gpio_bind(struct udevice *parent)
 			return ret;
 		uc_plat = dev_get_uclass_platdata(dev);
 		uc_plat->label = label;
+
+		if (ofnode_read_string(node, "default-state")) {
+			struct udevice *devp;
+
+			ret = uclass_get_device_tail(dev, 0, &devp);
+			if (ret)
+				return ret;
+		}
 	}
 
 	return 0;