From: Christian Marangi <ansuelsmth@gmail.com>
To: Tom Rini <trini@konsulko.com>,
Joe Hershberger <joe.hershberger@ni.com>,
Ramon Fried <rfried.dev@gmail.com>,
Dario Binacchi <dario.binacchi@amarulasolutions.com>,
Simon Glass <sjg@chromium.org>,
Christian Marangi <ansuelsmth@gmail.com>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Miquel Raynal <miquel.raynal@bootlin.com>,
Arseniy Krasnov <avkrasnov@salutedevices.com>,
Heiko Schocher <hs@denx.de>,
Michael Trimarchi <michael@amarulasolutions.com>,
Martin Kurbanov <mmkurbanov@salutedevices.com>,
Alexey Romanov <avromanov@salutedevices.com>,
Dmitry Dunaev <dunaev@tecon.ru>,
Marek Vasut <marek.vasut+renesas@mailbox.org>,
Sean Anderson <sean.anderson@seco.com>,
Artur Rojek <artur@conclusive.pl>,
Rasmus Villemoes <rasmus.villemoes@prevas.dk>,
Leo Yu-Chi Liang <ycliang@andestech.com>,
Vasileios Amoiridis <vassilisamir@gmail.com>,
Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>,
Michael Polyntsov <michael.polyntsov@iopsys.eu>,
Doug Zobel <douglas.zobel@climate.com>,
u-boot@lists.denx.de
Subject: [PATCH v3 3/9] led: implement LED boot API
Date: Mon, 12 Aug 2024 12:32:45 +0200 [thread overview]
Message-ID: <20240812103254.26972-4-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20240812103254.26972-1-ansuelsmth@gmail.com>
Implement LED boot API to signal correct boot of the system.
led_boot_on/off/blink() are introduced to turn ON, OFF and BLINK the
designated boot LED.
New Kconfig are introduced, CONFIG_LED_BOOT_ENABLE to enable the feature.
This makes use of the /config property "u-boot,boot-led" to the define
the boot LED.
It's also introduced a new /config property "u-boot,boot-led-period" to
define the default period when the LED is set to blink mode.
If "u-boot,boot-led-period" is not defined, the value of 250 (ms) is
used by default.
If CONFIG_LED_BLINK or CONFIG_LED_SW_BLINK is not enabled,
led_boot_blink call will fallback to simple LED ON.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
doc/device-tree-bindings/config.txt | 3 ++
drivers/led/Kconfig | 20 +++++++++
include/led.h | 64 +++++++++++++++++++++++++++++
3 files changed, 87 insertions(+)
diff --git a/doc/device-tree-bindings/config.txt b/doc/device-tree-bindings/config.txt
index f50c68bbdc3..68edd177040 100644
--- a/doc/device-tree-bindings/config.txt
+++ b/doc/device-tree-bindings/config.txt
@@ -31,6 +31,9 @@ u-boot,error-led (string)
This is used to specify the label for an LED to indicate an error and
a successful boot, on supported hardware.
+u-boot,boot-led-period (int)
+ This is used to specify the default period for an LED in blink mode.
+
bootsecure (int)
Indicates that U-Boot should use secure_boot_cmd() to run commands,
rather than the normal CLI. This can be used in production images, to
diff --git a/drivers/led/Kconfig b/drivers/led/Kconfig
index bee74b25751..fd9442edaf3 100644
--- a/drivers/led/Kconfig
+++ b/drivers/led/Kconfig
@@ -9,6 +9,26 @@ config LED
can provide access to board-specific LEDs. Use of the device tree
for configuration is encouraged.
+config LED_BOOT_ENABLE
+ bool "Enable LED boot support"
+ help
+ Enable LED boot support.
+
+ LED boot is a specific LED assigned to signal boot operation status.
+
+config LED_BOOT_LABEL
+ string "LED boot label"
+ depends on LED_BOOT_ENABLE
+ help
+ LED label defined in DT to assign for LED boot usage.
+
+config LED_BOOT_PERIOD
+ int "LED boot period"
+ depends on LED_BOOT_ENABLE && (LED_BLINK || LED_SW_BLINK)
+ default 2
+ help
+ LED boot blink period in ms.
+
config LED_BCM6328
bool "LED Support for BCM6328"
depends on LED && ARCH_BMIPS
diff --git a/include/led.h b/include/led.h
index c1f3380f253..2d3b89674e2 100644
--- a/include/led.h
+++ b/include/led.h
@@ -9,6 +9,7 @@
#include <stdbool.h>
#include <cyclic.h>
+#include <dm/ofnode.h>
struct udevice;
@@ -159,4 +160,67 @@ int led_sw_set_period(struct udevice *dev, int period_ms);
bool led_sw_is_blinking(struct udevice *dev);
bool led_sw_on_state_change(struct udevice *dev, enum led_state_t state);
+#ifdef CONFIG_LED_BOOT_ENABLE
+
+/**
+ * led_boot_on() - turn ON the designated LED for booting
+ *
+ * Return: 0 if OK, -ve on error
+ */
+static inline int led_boot_on(void)
+{
+ const char *led_name;
+
+ led_name = ofnode_conf_read_str("u-boot,boot-led");
+ if (!led_name)
+ return -ENOENT;
+
+ return led_set_state_by_label(led_name, LEDST_ON);
+}
+
+/**
+ * led_boot_off() - turn OFF the designated LED for booting
+ *
+ * Return: 0 if OK, -ve on error
+ */
+static inline int led_boot_off(void)
+{
+ const char *led_name;
+
+ led_name = ofnode_conf_read_str("u-boot,boot-led");
+ if (!led_name)
+ return -ENOENT;
+
+ return led_set_state_by_label(CONFIG_LED_BOOT_LABEL, LEDST_OFF);
+}
+
+#if defined(CONFIG_LED_BLINK) || defined(CONFIG_LED_SW_BLINK)
+/**
+ * led_boot_blink() - turn ON the designated LED for booting
+ *
+ * Return: 0 if OK, -ve on error
+ */
+static inline int led_boot_blink(void)
+{
+ const char *led_name;
+ int led_period, ret;
+
+ led_name = ofnode_conf_read_str("u-boot,boot-led");
+ if (!led_name)
+ return -ENOENT;
+
+ led_period = ofnode_conf_read_int("u-boot,boot-led-period", 250);
+
+ ret = led_set_period_by_label(led_name, led_period);
+ if (ret)
+ return ret;
+
+ return led_set_state_by_label(led_name, LEDST_BLINK);
+}
+#else
+/* If LED BLINK is not supported/enabled, fallback to LED ON */
+#define led_boot_blink led_boot_on
+#endif
+#endif
+
#endif
--
2.45.2
next prev parent reply other threads:[~2024-08-12 10:33 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-12 10:32 [PATCH v3 0/9] led: introduce LED boot and activity function Christian Marangi
2024-08-12 10:32 ` [PATCH v3 1/9] led: turn LED ON on initial SW blink Christian Marangi
2024-08-12 22:00 ` Heinrich Schuchardt
2024-08-22 10:47 ` Christian Marangi
2024-09-19 17:20 ` Heinrich Schuchardt
2024-09-19 14:13 ` Simon Glass
2024-09-19 16:26 ` Christian Marangi
2024-08-12 10:32 ` [PATCH v3 2/9] led: implement led_set_state/period_by_label Christian Marangi
2024-09-19 14:14 ` Simon Glass
2024-08-12 10:32 ` Christian Marangi [this message]
2024-09-19 14:14 ` [PATCH v3 3/9] led: implement LED boot API Simon Glass
2024-08-12 10:32 ` [PATCH v3 4/9] common: board_r: rework BOOT LED handling Christian Marangi
2024-09-19 14:13 ` Simon Glass
2024-08-12 10:32 ` [PATCH v3 5/9] led: implement LED activity API Christian Marangi
2024-09-19 14:13 ` Simon Glass
2024-08-12 10:32 ` [PATCH v3 6/9] tftp: implement support for LED activity Christian Marangi
2024-09-19 14:13 ` Simon Glass
2024-08-12 10:32 ` [PATCH v3 7/9] mtd: " Christian Marangi
2024-08-12 10:32 ` [PATCH v3 8/9] ubi: " Christian Marangi
2024-08-14 4:33 ` Heiko Schocher
2024-08-14 8:17 ` Michael Nazzareno Trimarchi
2024-08-18 16:01 ` Christian Marangi
2024-08-18 19:32 ` Michael Nazzareno Trimarchi
2024-08-22 10:45 ` Christian Marangi
2024-08-18 15:58 ` Christian Marangi
2024-08-12 10:32 ` [PATCH v3 9/9] doc: introduce led.rst documentation Christian Marangi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240812103254.26972-4-ansuelsmth@gmail.com \
--to=ansuelsmth@gmail.com \
--cc=artur@conclusive.pl \
--cc=avkrasnov@salutedevices.com \
--cc=avromanov@salutedevices.com \
--cc=dario.binacchi@amarulasolutions.com \
--cc=douglas.zobel@climate.com \
--cc=dunaev@tecon.ru \
--cc=hs@denx.de \
--cc=joe.hershberger@ni.com \
--cc=marek.vasut+renesas@mailbox.org \
--cc=michael.polyntsov@iopsys.eu \
--cc=michael@amarulasolutions.com \
--cc=mikhail.kshevetskiy@iopsys.eu \
--cc=miquel.raynal@bootlin.com \
--cc=mmkurbanov@salutedevices.com \
--cc=rasmus.villemoes@prevas.dk \
--cc=rfried.dev@gmail.com \
--cc=sean.anderson@seco.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=vassilisamir@gmail.com \
--cc=xypron.glpk@gmx.de \
--cc=ycliang@andestech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.