d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#ifndef CODE_SWAP_HSI_H
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define CODE_SWAP_HSI_H
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SWIM_STACK_SIZE 10
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef enum swim_id {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_NONE = 0,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID1 = 1,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID2 = 2,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID3 = 3,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID4 = 4,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID5 = 5,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID6 = 6,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID7 = 7,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_ID8 = 8,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi SWIM_MAX
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}swim_id_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// Single image descriptor, populated in BC1, and is used for loading the images
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct swim_img_info {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 nvm_offset;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 image_size;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 stat_times_loaded;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 stat_times_load_not_required;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 stat_times_load_failed;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 stored_gp_val;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}swim_img_info_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// The meta data on the swappable images
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct swim_stack {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t img_stack[SWIM_STACK_SIZE];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t cur_img_stack_id;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}swim_stack_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct swim_meta {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi swim_img_info_t info[SWIM_MAX];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi // Image Stack
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t swim_group;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define SWIM_GROUP_A 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define SWIM_GROUP_B 2
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define SWIM_GROUP_INVALID 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t cur_loaded_swim;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi }swim_meta_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#endif /* CODE_SWAP_HSI_H */