remoteproc: loader: add operation to get load state

Add loader operation to get load state.

Signed-off-by: Wendy Liang <jliang@xilinx.com>
This commit is contained in:
Wendy Liang
2018-07-18 14:09:50 -07:00
committed by wjliang
parent c3e42bd128
commit bdf3e8c4b2
2 changed files with 16 additions and 1 deletions

View File

@@ -48,9 +48,11 @@ extern "C" {
/* Remoteproc loader finished loading */
#define RPROC_LOADER_LOAD_COMPLETE 0x40000UL
/* Remoteproc loader state mask */
#define RPROC_LOADER_MASK 0x0FFF0000UL
#define RPROC_LOADER_MASK 0x00FF0000UL
/* Remoteproc loader private mask */
#define RPROC_LOADER_PRIVATE_MASK 0x0000FFFFUL
/* Remoteproc loader reserved mask */
#define RPROC_LOADER_RESERVED_MASK 0x0F000000UL
/**
* struct image_store_ops - user defined image store operations
@@ -80,6 +82,7 @@ struct image_store_ops {
* table.
* @release: define how to release the loader
* @get_entry: get entry address
* @get_load_state: get load state from the image information
*/
struct loader_ops {
int (*load_header)(const void *img_data, size_t offset, size_t len,
@@ -95,6 +98,7 @@ struct loader_ops {
size_t *offset, size_t *size);
void (*release)(void *img_info);
metal_phys_addr_t (*get_entry)(void *img_info);
int (*get_load_state)(void *img_info);
};
#if defined __cplusplus

View File

@@ -689,10 +689,21 @@ int elf_locate_rsc_table(void *elf_info, metal_phys_addr_t *da,
return 0;
}
int elf_get_load_state(void *img_info)
{
unsigned int *load_state;
if (img_info == NULL)
return -RPROC_EINVAL;
load_state = elf_load_state(img_info);
return (int)(*load_state);
}
struct loader_ops elf_ops = {
.load_header = elf_load_header,
.load_data = elf_load,
.locate_rsc_table = elf_locate_rsc_table,
.release = elf_release,
.get_entry = elf_get_entry,
.get_load_state = elf_get_load_state,
};