mirror of https://github.com/thesofproject/sof.git
rimage: Moved memory alias configuration to a new struct
A new memory_alias structure containing memory address alias configurations has been created. It was placed in the memory_config structure. Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
This commit is contained in:
parent
b9ecb0072d
commit
9ecae53e28
|
@ -118,7 +118,8 @@ static int parse_adsp(const toml_table_t *toml, struct parse_ctx *pctx, struct a
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
out->alias_mask = parse_uint32_hex_key(adsp, &ctx, "alias_mask", -ENODATA, &ret);
|
memset(&out->mem, 0, sizeof(out->mem));
|
||||||
|
out->mem.alias.mask = parse_uint32_hex_key(adsp, &ctx, "alias_mask", -ENODATA, &ret);
|
||||||
alias_found = !ret;
|
alias_found = !ret;
|
||||||
|
|
||||||
/* check everything parsed, 1 or 2 tables should be present */
|
/* check everything parsed, 1 or 2 tables should be present */
|
||||||
|
@ -153,18 +154,18 @@ static int parse_adsp(const toml_table_t *toml, struct parse_ctx *pctx, struct a
|
||||||
base = parse_uint32_hex_key(alias, &ctx, "base", -1, &ret);
|
base = parse_uint32_hex_key(alias, &ctx, "base", -1, &ret);
|
||||||
|
|
||||||
if (!strncmp("cached", alias_name, sizeof("cached")))
|
if (!strncmp("cached", alias_name, sizeof("cached")))
|
||||||
out->alias_cached = base & out->alias_mask;
|
out->mem.alias.cached = base & out->mem.alias.mask;
|
||||||
else if (!strncmp("uncached", alias_name, sizeof("uncached")))
|
else if (!strncmp("uncached", alias_name, sizeof("uncached")))
|
||||||
out->alias_uncached = base & out->alias_mask;
|
out->mem.alias.uncached = base & out->mem.alias.mask;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Make uncache_to_cache() an identity transform */
|
/* Make uncache_to_cache() an identity transform */
|
||||||
out->alias_cached = 0;
|
out->mem.alias.uncached = 0;
|
||||||
out->alias_mask = 0;
|
out->mem.alias.cached = 0;
|
||||||
|
out->mem.alias.mask = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* look for entry array */
|
/* look for entry array */
|
||||||
memset(&out->mem, 0, sizeof(out->mem));
|
|
||||||
mem_zone_array = toml_array_in(adsp, "mem_zone");
|
mem_zone_array = toml_array_in(adsp, "mem_zone");
|
||||||
if (!mem_zone_array)
|
if (!mem_zone_array)
|
||||||
return err_key_not_found("mem_zone");
|
return err_key_not_found("mem_zone");
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
static unsigned long uncache_to_cache(const struct image *image, unsigned long address)
|
static unsigned long uncache_to_cache(const struct image *image, unsigned long address)
|
||||||
{
|
{
|
||||||
return (address & ~image->adsp->alias_mask) | image->adsp->alias_cached;
|
return (address & ~image->adsp->mem.alias.mask) | image->adsp->mem.alias.cached;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int elf_read_sections(struct image *image, struct module *module,
|
static int elf_read_sections(struct image *image, struct module *module,
|
||||||
|
|
|
@ -116,8 +116,15 @@ struct memory_zone {
|
||||||
uint32_t host_offset;
|
uint32_t host_offset;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct memory_alias {
|
||||||
|
uint32_t mask;
|
||||||
|
uint32_t cached;
|
||||||
|
uint32_t uncached;
|
||||||
|
};
|
||||||
|
|
||||||
struct memory_config {
|
struct memory_config {
|
||||||
struct memory_zone zones[SOF_FW_BLK_TYPE_NUM];
|
struct memory_zone zones[SOF_FW_BLK_TYPE_NUM];
|
||||||
|
struct memory_alias alias;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct fw_image_ext_mod_config {
|
struct fw_image_ext_mod_config {
|
||||||
|
@ -151,10 +158,6 @@ struct adsp {
|
||||||
|
|
||||||
uint32_t image_size;
|
uint32_t image_size;
|
||||||
|
|
||||||
uint32_t alias_cached;
|
|
||||||
uint32_t alias_uncached;
|
|
||||||
uint32_t alias_mask;
|
|
||||||
|
|
||||||
int (*write_firmware_ext_man)(struct image *image);
|
int (*write_firmware_ext_man)(struct image *image);
|
||||||
int (*write_firmware)(struct image *image);
|
int (*write_firmware)(struct image *image);
|
||||||
int (*write_firmware_meu)(struct image *image);
|
int (*write_firmware_meu)(struct image *image);
|
||||||
|
|
Loading…
Reference in New Issue