[PATCH 4/5] sysreset: mpc83xx: add output in case of cold boot

Rasmus Villemoes rasmus.villemoes at prevas.dk
Fri May 1 16:55:15 CEST 2020


For a powercycle/cold boot, none of the RSR_* bits in the reset status
register are set, so one gets an empty

  Reset Status:

line. Print an indication that this was likely a cold boot.

Signed-off-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
---
 drivers/sysreset/sysreset_mpc83xx.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/drivers/sysreset/sysreset_mpc83xx.c b/drivers/sysreset/sysreset_mpc83xx.c
index 631ae6a5dc..6457d73418 100644
--- a/drivers/sysreset/sysreset_mpc83xx.c
+++ b/drivers/sysreset/sysreset_mpc83xx.c
@@ -149,20 +149,28 @@ static int mpc83xx_sysreset_get_status(struct udevice *dev, char *buf, int size)
 	ulong rsr = gd->arch.reset_status;
 	int i;
 	char *sep;
+	ulong known_bits = RSR_SWSR | RSR_SWHR | RSR_JSRS | RSR_CSHR |
+		RSR_SWRS | RSR_BMRS | RSR_SRS | RSR_HRS;
 
 	res = scnprintf(buf, size, "Reset Status:");
 	buf += res;
 	size -= res;
 
-	sep = " ";
-	for (i = 0; i < ARRAY_SIZE(bits); i++)
-		/* Print description of set bits */
-		if (rsr & bits[i].mask) {
-			res = scnprintf(buf, size, "%s%s", sep, bits[i].desc);
-			buf += res;
-			size -= res;
-			sep = ", ";
-		}
+	if (rsr & known_bits) {
+		sep = " ";
+		for (i = 0; i < ARRAY_SIZE(bits); i++)
+			/* Print description of set bits */
+			if (rsr & bits[i].mask) {
+				res = scnprintf(buf, size, "%s%s", sep, bits[i].desc);
+				buf += res;
+				size -= res;
+				sep = ", ";
+			}
+	} else {
+		res = scnprintf(buf, size, " Unknown/Cold boot");
+		buf += res;
+		size -= res;
+	}
 
 	res = scnprintf(buf, size, "\n");
 	buf += res;
-- 
2.23.0



More information about the U-Boot mailing list