16fb62078SSimon Glass /* 26fb62078SSimon Glass * Copyright (c) 2011-2012 The Chromium OS Authors. 31a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 46fb62078SSimon Glass */ 56fb62078SSimon Glass 66fb62078SSimon Glass #ifndef __SANDBOX_STATE_H 76fb62078SSimon Glass #define __SANDBOX_STATE_H 86fb62078SSimon Glass 970db4212SSimon Glass #include <config.h> 10c5a62d4aSSimon Glass #include <stdbool.h> 1170db4212SSimon Glass 126fb62078SSimon Glass /* How we exited U-Boot */ 136fb62078SSimon Glass enum exit_type_id { 146fb62078SSimon Glass STATE_EXIT_NORMAL, 156fb62078SSimon Glass STATE_EXIT_COLD_REBOOT, 166fb62078SSimon Glass STATE_EXIT_POWER_OFF, 176fb62078SSimon Glass }; 186fb62078SSimon Glass 196122813fSMike Frysinger struct sandbox_spi_info { 206122813fSMike Frysinger const char *spec; 216122813fSMike Frysinger const struct sandbox_spi_emu_ops *ops; 226122813fSMike Frysinger }; 236122813fSMike Frysinger 246fb62078SSimon Glass /* The complete state of the test system */ 256fb62078SSimon Glass struct sandbox_state { 266fb62078SSimon Glass const char *cmd; /* Command to execute */ 27c5a62d4aSSimon Glass bool interactive; /* Enable cmdline after execute */ 28f828bf25SSimon Glass const char *fdt_fname; /* Filename of FDT binary */ 296fb62078SSimon Glass enum exit_type_id exit_type; /* How we exited U-Boot */ 3070db4212SSimon Glass const char *parse_err; /* Error to report from parsing */ 3170db4212SSimon Glass int argc; /* Program arguments */ 3270db4212SSimon Glass char **argv; 33*5c2859cdSSimon Glass uint8_t *ram_buf; /* Emulated RAM buffer */ 34*5c2859cdSSimon Glass unsigned int ram_size; /* Size of RAM buffer */ 35*5c2859cdSSimon Glass const char *ram_buf_fname; /* Filename to use for RAM buffer */ 36*5c2859cdSSimon Glass bool write_ram_buf; /* Write RAM buffer on exit */ 376122813fSMike Frysinger 386122813fSMike Frysinger /* Pointer to information for each SPI bus/cs */ 396122813fSMike Frysinger struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS] 406122813fSMike Frysinger [CONFIG_SANDBOX_SPI_MAX_CS]; 416fb62078SSimon Glass }; 426fb62078SSimon Glass 436fb62078SSimon Glass /** 446fb62078SSimon Glass * Record the exit type to be reported by the test program. 456fb62078SSimon Glass * 466fb62078SSimon Glass * @param exit_type Exit type to record 476fb62078SSimon Glass */ 486fb62078SSimon Glass void state_record_exit(enum exit_type_id exit_type); 496fb62078SSimon Glass 506fb62078SSimon Glass /** 516fb62078SSimon Glass * Gets a pointer to the current state. 526fb62078SSimon Glass * 536fb62078SSimon Glass * @return pointer to state 546fb62078SSimon Glass */ 556fb62078SSimon Glass struct sandbox_state *state_get_current(void); 566fb62078SSimon Glass 576fb62078SSimon Glass /** 586fb62078SSimon Glass * Initialize the test system state 596fb62078SSimon Glass */ 606fb62078SSimon Glass int state_init(void); 616fb62078SSimon Glass 62*5c2859cdSSimon Glass /** 63*5c2859cdSSimon Glass * Uninitialize the test system state, writing out state if configured to 64*5c2859cdSSimon Glass * do so. 65*5c2859cdSSimon Glass * 66*5c2859cdSSimon Glass * @return 0 if OK, -ve on error 67*5c2859cdSSimon Glass */ 68*5c2859cdSSimon Glass int state_uninit(void); 69*5c2859cdSSimon Glass 706fb62078SSimon Glass #endif 71