[PATCH v2 2/2] common: board_f: Print information for all sysresets

Michal Suchanek msuchanek at suse.de
Mon Oct 10 20:29:40 CEST 2022


Boards can have multiple sysresets, iterate all when printing sysreset
info.

Fixes: 23471aed5c ("board_f: Add reset status printing")
Signed-off-by: Michal Suchanek <msuchanek at suse.de>
---

v2:
 - do not use errno_str
 - rename flag variable
---
 common/board_f.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/common/board_f.c b/common/board_f.c
index 5f1711181c..4355d1c82d 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -146,20 +146,27 @@ static int print_resetinfo(void)
 {
 	struct udevice *dev;
 	char status[256];
+	bool status_printed = false;
 	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)\n",
+			      __func__, dev->name, ret);
+			continue;
+		}
 
-	if (!sysreset_get_status(dev, status, sizeof(status)))
-		printf("%s", status);
+		if (!sysreset_get_status(dev, status, sizeof(status))) {
+			printf("%s%s", status_printed ? " " : "", status);
+			status_printed = true;
+		}
+	}
+	if (status_printed)
+		printf("\n");
 
 	return 0;
 }
-- 
2.37.3



More information about the U-Boot mailing list