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