[PATCH 2/2] common: board_f: Print information for all sysresets
Michal Suchanek
msuchanek at suse.de
Sun Sep 25 15:27:31 CEST 2022
Boards can have multiple sysresets, iterate all when printing sysreset
info.
Also print the symbolic error when reporting sysreset failure.
Fixes: 23471aed5c ("board_f: Add reset status printing")
Signed-off-by: Michal Suchanek <msuchanek at suse.de>
---
common/board_f.c | 31 +++++++++++++++++++------------
1 file changed, 19 insertions(+), 12 deletions(-)
diff --git a/common/board_f.c b/common/board_f.c
index 18e2246733..0835b376bc 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -55,7 +55,7 @@
#include <asm/io.h>
#include <asm/sections.h>
#include <dm/root.h>
-#include <linux/errno.h>
+#include <errno.h>
/*
* Pointer to initial global data area
@@ -163,20 +163,27 @@ static int print_resetinfo(void)
{
struct udevice *dev;
char status[256];
+ bool first = true;
int ret;
- ret = uclass_first_device_err(UCLASS_SYSRESET, &dev);
- if (ret) {
- debug("%s: No sysreset device found (error: %d)\n",
- __func__, ret);
- /* Not all boards have sysreset drivers available during early
- * boot, so don't fail if one can't be found.
- */
- return 0;
- }
+ /* Not all boards have sysreset drivers available during early
+ * boot, so don't fail if one can't be found.
+ */
+ for (ret = uclass_first_device_check(UCLASS_SYSRESET, &dev); dev;
+ ret = uclass_next_device_check(&dev)) {
+ if (ret) {
+ debug("%s: %s sysreset device (error: %d %s)\n",
+ __func__, dev->name, ret, errno_str(ret));
+ continue;
+ }
- if (!sysreset_get_status(dev, status, sizeof(status)))
- printf("%s", status);
+ if (!sysreset_get_status(dev, status, sizeof(status))) {
+ printf("%s%s", first ? "" : " ", status);
+ first = false;
+ }
+ }
+ if (!first)
+ printf("\n");
return 0;
}
--
2.37.3
More information about the U-Boot
mailing list