This series adds support for gpio-leds "default-state" property. The
cover This series adds support for gpio-leds "default-state" property. The
From: Patrick Bruenn <[email protected]>
main usecase in mind are LEDs which indicate a state like "power on". With this patchset applied, all you have to do is:
Add a gpio-led node with 'default-state = "on";' property to your device tree. And the LED will automatically light up during U-Boot startup.
Patrick Bruenn (2):
dm: led: Support "default-state" property
dm: led: auto probe() LEDs with "default-state"
drivers/led/led_gpio.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-)
Signature · 1 line
2.11.0
PATCH 1/2 dm: led: Support "default-state" property
From: Patrick Bruenn <[email protected]>
Add support for the device tree property "default-state". This feature might be useful for LEDs indicating "power on" or similar states.
Note: Even with this commit gpio-leds remain in reset state. That's because the led_gpio is not probed until DM_FLAG_ACTIVATED is set.
---
drivers/led/led_gpio.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
drivers/led/led_gpio.c +15 -1
@@ -60,11 +60,25 @@ static int led_gpio_probe(struct udevice *dev) {struct led_uc_plat *uc_plat =dev_get_uclass_platdata (dev);struct led_gpio_priv *priv =dev_get_priv (dev); +const char *default_state; +int ret;/* Ignore the top-level LED node */ if (!uc_plat->label)return 0 ; -return gpio_request_by_name (dev,"gpios" ,0 , &priv->gpio,GPIOD_IS_OUT ); + + ret =gpio_request_by_name (dev,"gpios" ,0 , &priv->gpio,GPIOD_IS_OUT ); +if (ret) +return ret; + + default_state =dev_read_string (dev,"default-state" ); +if (default_state) { +if (!strncmp (default_state,"on" ,2 )) +gpio_led_set_state (dev,LEDST_ON ); +else if (!strncmp (default_state,"off" ,3 )) +gpio_led_set_state (dev,LEDST_OFF ); + } +return 0 ; }static int led_gpio_remove (struct udevice *dev)
Signature · 1 line
2.11.0
PATCH 2/2 dm: led: auto probe() LEDs with "default-state"
In reply to linux-kernel-dev at beckhoff.comFrom: Patrick Bruenn <[email protected]>
To avoid board specificy LED activation code, automatically activate gpio-leds with "default-state" property during bind().
---
drivers/led/led_gpio.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/led/led_gpio.c +9 -0
@@ -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 ;
Signature · 1 line
2.11.0
PATCH 1/2 dm: led: Support "default-state" property
In reply to linux-kernel-dev at beckhoff.comHi Patrick,
Quoted 8 lines · On 7 March 2018 at 17:48, <[email protected]> wrote:
From: Patrick Bruenn <[email protected]>
Add support for the device tree property "default-state". This feature might be useful for LEDs indicating "power on" or similar states.
Note: Even with this commit gpio-leds remain in reset state. That's because the
led_gpiois not probed untilDM_FLAG_ACTIVATEDis set.
This looks OK, but please add a test to test/dm/led.c as well.
Quoted 6 lines
Signed-off-by Patrick Bruenn <[email protected]>---
drivers/led/led_gpio.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
Regards,
Simon