xref: /openbmc/u-boot/cmd/sb.c (revision 9450ab2b)
1d66ddafaSSimon Glass // SPDX-License-Identifier: GPL-2.0+
2d66ddafaSSimon Glass /*
3d66ddafaSSimon Glass  * Copyright 2018, Google Inc.
4d66ddafaSSimon Glass  * Written by Simon Glass <sjg@chromium.org>
5d66ddafaSSimon Glass  */
6d66ddafaSSimon Glass 
7d66ddafaSSimon Glass #include <common.h>
8d66ddafaSSimon Glass #include <dm.h>
9d66ddafaSSimon Glass #include <spl.h>
10d66ddafaSSimon Glass #include <asm/state.h>
11d66ddafaSSimon Glass 
do_sb_handoff(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])12*b0edea3cSSimon Glass static int do_sb_handoff(cmd_tbl_t *cmdtp, int flag, int argc,
13*b0edea3cSSimon Glass 			 char *const argv[])
14*b0edea3cSSimon Glass {
15*b0edea3cSSimon Glass #if CONFIG_IS_ENABLED(HANDOFF)
16*b0edea3cSSimon Glass 	if (gd->spl_handoff)
17*b0edea3cSSimon Glass 		printf("SPL handoff magic %lx\n", gd->spl_handoff->arch.magic);
18*b0edea3cSSimon Glass 	else
19*b0edea3cSSimon Glass 		printf("SPL handoff info not received\n");
20*b0edea3cSSimon Glass 
21*b0edea3cSSimon Glass 	return 0;
22*b0edea3cSSimon Glass #else
23*b0edea3cSSimon Glass 	printf("Command not supported\n");
24*b0edea3cSSimon Glass 
25*b0edea3cSSimon Glass 	return CMD_RET_USAGE;
26*b0edea3cSSimon Glass #endif
27*b0edea3cSSimon Glass }
28*b0edea3cSSimon Glass 
do_sb_state(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])29d66ddafaSSimon Glass static int do_sb_state(cmd_tbl_t *cmdtp, int flag, int argc,
30d66ddafaSSimon Glass 		       char * const argv[])
31d66ddafaSSimon Glass {
32d66ddafaSSimon Glass 	struct sandbox_state *state;
33d66ddafaSSimon Glass 
34d66ddafaSSimon Glass 	state = state_get_current();
35d66ddafaSSimon Glass 	state_show(state);
36d66ddafaSSimon Glass 
37d66ddafaSSimon Glass 	return 0;
38d66ddafaSSimon Glass }
39d66ddafaSSimon Glass 
40d66ddafaSSimon Glass static cmd_tbl_t cmd_sb_sub[] = {
41*b0edea3cSSimon Glass 	U_BOOT_CMD_MKENT(handoff, 1, 0, do_sb_handoff, "", ""),
42d66ddafaSSimon Glass 	U_BOOT_CMD_MKENT(state, 1, 0, do_sb_state, "", ""),
43d66ddafaSSimon Glass };
44d66ddafaSSimon Glass 
do_sb(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])45d66ddafaSSimon Glass static int do_sb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
46d66ddafaSSimon Glass {
47d66ddafaSSimon Glass 	cmd_tbl_t *c;
48d66ddafaSSimon Glass 
49d66ddafaSSimon Glass 	/* Skip past 'sb' */
50d66ddafaSSimon Glass 	argc--;
51d66ddafaSSimon Glass 	argv++;
52d66ddafaSSimon Glass 
53d66ddafaSSimon Glass 	c = find_cmd_tbl(argv[0], cmd_sb_sub, ARRAY_SIZE(cmd_sb_sub));
54d66ddafaSSimon Glass 	if (c)
55d66ddafaSSimon Glass 		return c->cmd(cmdtp, flag, argc, argv);
56d66ddafaSSimon Glass 	else
57d66ddafaSSimon Glass 		return CMD_RET_USAGE;
58d66ddafaSSimon Glass }
59d66ddafaSSimon Glass 
60d66ddafaSSimon Glass U_BOOT_CMD(
61d66ddafaSSimon Glass 	sb,	8,	1,	do_sb,
62d66ddafaSSimon Glass 	"Sandbox status commands",
63*b0edea3cSSimon Glass 	"handoff     - Show handoff data received from SPL\n"
64*b0edea3cSSimon Glass 	"sb state       - Show sandbox state"
65d66ddafaSSimon Glass );
66