This series adds support for gpio-leds "default-state" property. The
v3 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.
Changes in v3:
- use ofnode_read_bool() instead of ofnode_read_string() to determine if LED node has the default-state property
Changes in v2:
- rebase to v2018.05-rc1
- add dm_test_led_default_state() to tests/dm/led.c
Patrick Bruenn (3):
dm: led: Support "default-state" property
dm: led: auto probe() LEDs with "default-state"
dm: led: add testcase for "default-state" property
arch/sandbox/dts/test.dts | 12 ++++++++++++ drivers/led/led_gpio.c | 25 ++++++++++++++++++++++++- test/dm/led.c | 16 ++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-)
Signature · 1 line
2.11.0
PATCH v3 1/3 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.
---
Changes in v3:
- use ofnode_read_bool() instead of ofnode_read_string() to determine if LED node has the default-state property
Changes in v2:
- rebase to v2018.05-rc1
- add dm_test_led_default_state() to tests/dm/led.c
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 v3 1/3 dm: led: Support "default-state" property
Quoted 16 lines · On 4 April 2018 at 04:01, <[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.Signed-off-by Patrick Bruenn <[email protected]>---
Changes in v3:
- useofnode_read_bool()instead ofofnode_read_string()to determine if LED node has the default-state property
Quoted 6 lines
Changes in v2:
- rebase to v2018.05-rc1
- adddm_test_led_default_state()totests/dm/led.cdrivers/led/led_gpio.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
PATCH v3 2/3 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().
---
Changes in v3: None
Changes in v2: None
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_bool (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 v3 2/3 dm: led: auto probe() LEDs with "default-state"
Quoted 5 lines · On 4 April 2018 at 04:01, <[email protected]> wrote:
From: Patrick Bruenn <[email protected]>
To avoid board specificy LED activation code, automatically activate gpio-leds with "default-state" property during
bind().
Quoted 8 lines
Signed-off-by Patrick Bruenn <[email protected]>---
Changes in v3: None
Changes in v2: Nonedrivers/led/led_gpio.c | 9 +++++++++ 1 file changed, 9 insertions(+)
PATCH v3 3/3 dm: led: add testcase for "default-state" property
In reply to linux-kernel-dev at beckhoff.comFrom: Patrick Bruenn <[email protected]>
Add two more gpio-leds to sandbox test device tree with default-state property set to "on"/"off".
Add dm_test_led_default_state() to check that these new LED's are set to LEDST_ON and LEDST_OFF.
---
patman complains about: test/dm/led.c:45: check: Please use a blank line after function/struct/union/enum declarations.
I compared with other DM_TEST() usage and decided to ignore this check. Should we fix the macro, patman or keep ignoring this?
Changes in v3: None
Changes in v2: None
arch/sandbox/dts/test.dts | 12 ++++++++++++ test/dm/led.c | 16 ++++++++++++++++ 2 files changed, 28 insertions(+)
arch/sandbox/dts/test.dts +12 -0
@@ -254,6 +254,18 @@ gpios = <&gpio_a 2 0>; label = "sandbox:green"; }; + + default_on { + gpios = <&gpio_a 3 0>; + label = "sandbox:default_on"; + default-state = "on"; + }; + + default_off { + gpios = <&gpio_a 4 0>; + label = "sandbox:default_off"; + default-state = "off"; + }; }; mbox: mbox {
test/dm/led.c +16 -0
@@ -28,6 +28,22 @@ static int dm_test_led_base(struct unit_test_state *uts) }DM_TEST (dm_test_led_base,DM_TESTF_SCAN_PDATA |DM_TESTF_SCAN_FDT ); +/* Test of the LED 'default-state' device tree property */ +static int dm_test_led_default_state (struct unit_test_state *uts) +{ +struct udevice *dev; + +/* Check that we handle the default-state property correctly. */ +ut_assertok (led_get_by_label ("sandbox:default_on" , &dev)); +ut_asserteq (LEDST_ON ,led_get_state (dev)); + +ut_assertok (led_get_by_label ("sandbox:default_off" , &dev)); +ut_asserteq (LEDST_OFF ,led_get_state (dev)); + +return 0 ; +} +DM_TEST (dm_test_led_default_state,DM_TESTF_SCAN_PDATA |DM_TESTF_SCAN_FDT ); +/* Test of the led uclass using the led_gpio driver */ static int dm_test_led_gpio (struct unit_test_state *uts) {
Signature · 1 line
2.11.0
PATCH v3 3/3 dm: led: add testcase for "default-state" property
Quoted 7 lines · On 4 April 2018 at 04:01, <[email protected]> wrote:
From: Patrick Bruenn <[email protected]>
Add two more gpio-leds to sandbox test device tree with default-state property set to "on"/"off".
Adddm_test_led_default_state()to check that these new LED's are set toLEDST_ONandLEDST_OFF.
Quoted 6 lines
Signed-off-by Patrick Bruenn <[email protected]>---
patman complains about:test/dm/led.c:45: check: Please use a blank line after function/struct/union/enum declarations.
I compared with otherDM_TEST()usage and decided to ignore this check. Should we fix the macro, patman or keep ignoring this?
Yes you can ignore it. The warning is coming from checkpatch.pl. I suppose we could update that. I think the macro should be next to the function it references, otherwise it gets a bit confusing.
Quoted 7 lines
Changes in v3: None
Changes in v2: Nonearch/sandbox/dts/test.dts | 12 ++++++++++++ test/dm/led.c | 16 ++++++++++++++++ 2 files changed, 28 insertions(+)
PATCH v3 3/3 dm: led: add testcase for "default-state" property
In reply to linux-kernel-dev at beckhoff.comQuoted 7 lines · linux-kernel-dev at beckhoff.com
From: Patrick Bruenn <[email protected]>
Add two more gpio-leds to sandbox test device tree with default-state property set to "on"/"off".
Adddm_test_led_default_state()to check that these new LED's are set toLEDST_ONandLEDST_OFF.
Quoted 7 lines
Signed-off-by Patrick Bruenn <[email protected]>Reviewed-by Simon Glass <[email protected]>---
patman complains about:test/dm/led.c:45: check: Please use a blank line after function/struct/union/enum declarations.
I compared with otherDM_TEST()usage and decided to ignore this check. Should we fix the macro, patman or keep ignoring this?
This breaks tests actually, please try running 'make tests' after this (and the rest of your series) is applied, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180410/c0bdbaaa/attachment.sig>