xref: /rk3399_rockchip-uboot/arch/sandbox/cpu/state.c (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 #include <common.h>
7*5c2859cdSSimon Glass #include <os.h>
86fb62078SSimon Glass #include <asm/state.h>
96fb62078SSimon Glass 
106fb62078SSimon Glass /* Main state record for the sandbox */
116fb62078SSimon Glass static struct sandbox_state main_state;
126fb62078SSimon Glass static struct sandbox_state *state;	/* Pointer to current state record */
136fb62078SSimon Glass 
146fb62078SSimon Glass void state_record_exit(enum exit_type_id exit_type)
156fb62078SSimon Glass {
166fb62078SSimon Glass 	state->exit_type = exit_type;
176fb62078SSimon Glass }
186fb62078SSimon Glass 
196fb62078SSimon Glass struct sandbox_state *state_get_current(void)
206fb62078SSimon Glass {
216fb62078SSimon Glass 	assert(state);
226fb62078SSimon Glass 	return state;
236fb62078SSimon Glass }
246fb62078SSimon Glass 
256fb62078SSimon Glass int state_init(void)
266fb62078SSimon Glass {
276fb62078SSimon Glass 	state = &main_state;
286fb62078SSimon Glass 
29*5c2859cdSSimon Glass 	state->ram_size = CONFIG_SYS_SDRAM_SIZE;
30*5c2859cdSSimon Glass 	state->ram_buf = os_malloc(state->ram_size);
31*5c2859cdSSimon Glass 	assert(state->ram_buf);
32*5c2859cdSSimon Glass 
336fb62078SSimon Glass 	/*
346fb62078SSimon Glass 	 * Example of how to use GPIOs:
356fb62078SSimon Glass 	 *
366fb62078SSimon Glass 	 * sandbox_gpio_set_direction(170, 0);
376fb62078SSimon Glass 	 * sandbox_gpio_set_value(170, 0);
386fb62078SSimon Glass 	 */
396fb62078SSimon Glass 	return 0;
406fb62078SSimon Glass }
41*5c2859cdSSimon Glass 
42*5c2859cdSSimon Glass int state_uninit(void)
43*5c2859cdSSimon Glass {
44*5c2859cdSSimon Glass 	int err;
45*5c2859cdSSimon Glass 
46*5c2859cdSSimon Glass 	state = &main_state;
47*5c2859cdSSimon Glass 
48*5c2859cdSSimon Glass 	if (state->write_ram_buf) {
49*5c2859cdSSimon Glass 		err = os_write_ram_buf(state->ram_buf_fname);
50*5c2859cdSSimon Glass 		if (err) {
51*5c2859cdSSimon Glass 			printf("Failed to write RAM buffer\n");
52*5c2859cdSSimon Glass 			return err;
53*5c2859cdSSimon Glass 		}
54*5c2859cdSSimon Glass 	}
55*5c2859cdSSimon Glass 
56*5c2859cdSSimon Glass 	return 0;
57*5c2859cdSSimon Glass }
58