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