diff mbox series

[04/13] x86: zboot: Avoid iteration in do_zboot_states()

Message ID 20231204002944.897949-5-sjg@chromium.org
State Accepted
Commit 228c6722d4468d8cd9a3688e657976968ee3cdb8
Delegated to: Tom Rini
Headers show
Series Complete decoupling of zboot logic from commands | expand

Commit Message

Simon Glass Dec. 4, 2023, 12:29 a.m. UTC
Drop the iteration and write out each state in full. This will allow
the arguments to be reduced and adjusted in future patches.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 cmd/x86/zboot.c | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)
diff mbox series

Patch

diff --git a/cmd/x86/zboot.c b/cmd/x86/zboot.c
index c9375fb417c1..03cab1d67ebf 100644
--- a/cmd/x86/zboot.c
+++ b/cmd/x86/zboot.c
@@ -136,19 +136,20 @@  U_BOOT_SUBCMDS(zboot,
 int do_zboot_states(struct cmd_tbl *cmdtp, int flag, int argc,
 		    char *const argv[], int state_mask)
 {
-	int i;
-
-	for (i = 0; i < ZBOOT_STATE_COUNT; i++) {
-		struct cmd_tbl *cmd = &zboot_subcmds[i];
-		int mask = 1 << i;
-		int ret;
-
-		if (mask & state_mask) {
-			ret = cmd->cmd(cmd, flag, argc, argv);
-			if (ret)
-				return ret;
-		}
-	}
+	int ret;
+
+	if (flag & ZBOOT_STATE_START)
+		ret = do_zboot_start(cmdtp, flag, argc, argv);
+	if (!ret && (flag & ZBOOT_STATE_LOAD))
+		ret = do_zboot_load(cmdtp, flag, argc, argv);
+	if (!ret && (flag & ZBOOT_STATE_SETUP))
+		ret = do_zboot_setup(cmdtp, flag, argc, argv);
+	if (!ret && (flag & ZBOOT_STATE_INFO))
+		ret = do_zboot_info(cmdtp, flag, argc, argv);
+	if (!ret && (flag & ZBOOT_STATE_GO))
+		ret = do_zboot_go(cmdtp, flag, argc, argv);
+	if (ret)
+		return ret;
 
 	return 0;
 }