This series adds support for gpio-leds "default-state" property. The
v4 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 v4:
- don't break 'make tests'
- gpio_a pin 4 is already use by dm_test_gpio_phandles() -> we switch to use pin 5 and 6
- adjust dm_test_led_base() to the fact that we have two more LEDs, now
- rebased on 2600df4f8ef12ece9cec13030005919e0ba2b0d5 (master 2018-04-09)
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 | 20 +++++++++++++++++++- 3 files changed, 55 insertions(+), 2 deletions(-)
Signature · 1 line
2.11.0
PATCH v4 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 v4:
- don't break 'make tests'
- rebased on 2600df4f8ef12ece9cec13030005919e0ba2b0d5 (master 2018-04-09)
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 v4 1/3 dm: led: Support "default-state" property
Quoted 9 lines · linux-kernel-dev at beckhoff.com
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]>
Applied to u-boot/master, 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/20180508/289fa516/attachment.sig>
PATCH v4 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 v4: None
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 v4 2/3 dm: led: auto probe() LEDs with "default-state"
Quoted 6 lines · linux-kernel-dev at beckhoff.com
From: Patrick Bruenn <[email protected]>
To avoid board specificy LED activation code, automatically activate gpio-leds with "default-state" property during
bind().Signed-off-by Patrick Bruenn <[email protected]>
Applied to u-boot/master, 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/20180508/6b62948d/attachment.sig>
PATCH v4 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.
dm: led: add testcase for "default-state" property
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 v4:
- gpio_a pin 4 is already use by dm_test_gpio_phandles() -> we switch to use pin 5 and 6
- adjust dm_test_led_base() to the fact that we have two more LEDs, now
Changes in v3: None
Changes in v2: None
arch/sandbox/dts/test.dts | 12 ++++++++++++ test/dm/led.c | 20 +++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-)
arch/sandbox/dts/test.dts +12 -0
@@ -254,6 +254,18 @@ gpios = <&gpio_a 2 0>; label = "sandbox:green"; }; + + default_on { + gpios = <&gpio_a 5 0>; + label = "sandbox:default_on"; + default-state = "on"; + }; + + default_off { + gpios = <&gpio_a 6 0>; + label = "sandbox:default_off"; + default-state = "off"; + }; }; mbox: mbox {
test/dm/led.c +19 -1
@@ -22,12 +22,30 @@ static int dm_test_led_base(struct unit_test_state *uts)ut_assertok (uclass_get_device (UCLASS_LED ,0 , &dev));ut_assertok (uclass_get_device (UCLASS_LED ,1 , &dev));ut_assertok (uclass_get_device (UCLASS_LED ,2 , &dev)); -ut_asserteq (-ENODEV ,uclass_get_device (UCLASS_LED ,3 , &dev)); +ut_assertok (uclass_get_device (UCLASS_LED ,3 , &dev)); +ut_assertok (uclass_get_device (UCLASS_LED ,4 , &dev)); +ut_asserteq (-ENODEV ,uclass_get_device (UCLASS_LED ,5 , &dev));return 0 ; }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 v4 3/3 dm: led: add testcase for "default-state" property
Quoted 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 8 lines
dm: led: add testcase for "default-state" property
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.Signed-off-by Patrick Bruenn <[email protected]>
Applied to u-boot/master, 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/20180508/1489873a/attachment.sig>