| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Copyright 2018, Google Inc. |
| * Written by Simon Glass <sjg@chromium.org> |
| */ |
| |
| #include <common.h> |
| #include <command.h> |
| #include <dm.h> |
| #include <spl.h> |
| #include <asm/global_data.h> |
| #include <asm/state.h> |
| |
| static int do_sb_handoff(struct cmd_tbl *cmdtp, int flag, int argc, |
| char *const argv[]) |
| { |
| #if CONFIG_IS_ENABLED(HANDOFF) |
| if (gd->spl_handoff) |
| printf("SPL handoff magic %lx\n", gd->spl_handoff->arch.magic); |
| else |
| printf("SPL handoff info not received\n"); |
| |
| return 0; |
| #else |
| printf("Command not supported\n"); |
| |
| return CMD_RET_USAGE; |
| #endif |
| } |
| |
| static int do_sb_state(struct cmd_tbl *cmdtp, int flag, int argc, |
| char *const argv[]) |
| { |
| struct sandbox_state *state; |
| |
| state = state_get_current(); |
| state_show(state); |
| |
| return 0; |
| } |
| |
| static struct cmd_tbl cmd_sb_sub[] = { |
| U_BOOT_CMD_MKENT(handoff, 1, 0, do_sb_handoff, "", ""), |
| U_BOOT_CMD_MKENT(state, 1, 0, do_sb_state, "", ""), |
| }; |
| |
| static int do_sb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) |
| { |
| struct cmd_tbl *c; |
| |
| /* Skip past 'sb' */ |
| argc--; |
| argv++; |
| |
| c = find_cmd_tbl(argv[0], cmd_sb_sub, ARRAY_SIZE(cmd_sb_sub)); |
| if (c) |
| return c->cmd(cmdtp, flag, argc, argv); |
| else |
| return CMD_RET_USAGE; |
| } |
| |
| U_BOOT_CMD( |
| sb, 8, 1, do_sb, |
| "Sandbox status commands", |
| "handoff - Show handoff data received from SPL\n" |
| "sb state - Show sandbox state" |
| ); |