xref: /rk3399_rockchip-uboot/arch/sandbox/include/asm/state.h (revision 5c2859cdc30287b3593d9df88f48c31eecb0bbed)
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