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