mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-01 08:59:33 +00:00
fdt: Enhance flashmap function to deal with region properties
Flash regions can optionally be compressed or hashed. Add the ability to read this information from the flashmap. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Anatolij Gustschin <agust@denx.de> Reviewed-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
76489832b2
commit
f3cc44f984
2 changed files with 24 additions and 0 deletions
|
@ -602,10 +602,26 @@ const u8 *fdtdec_locate_byte_array(const void *blob, int node,
|
|||
int fdtdec_decode_region(const void *blob, int node, const char *prop_name,
|
||||
fdt_addr_t *basep, fdt_size_t *sizep);
|
||||
|
||||
enum fmap_compress_t {
|
||||
FMAP_COMPRESS_NONE,
|
||||
FMAP_COMPRESS_LZO,
|
||||
};
|
||||
|
||||
enum fmap_hash_t {
|
||||
FMAP_HASH_NONE,
|
||||
FMAP_HASH_SHA1,
|
||||
FMAP_HASH_SHA256,
|
||||
};
|
||||
|
||||
/* A flash map entry, containing an offset and length */
|
||||
struct fmap_entry {
|
||||
uint32_t offset;
|
||||
uint32_t length;
|
||||
uint32_t used; /* Number of bytes used in region */
|
||||
enum fmap_compress_t compress_algo; /* Compression type */
|
||||
enum fmap_hash_t hash_algo; /* Hash algorithm */
|
||||
const uint8_t *hash; /* Hash value */
|
||||
int hash_size; /* Hash size */
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -703,6 +703,7 @@ int fdtdec_decode_region(const void *blob, int node, const char *prop_name,
|
|||
int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
|
||||
struct fmap_entry *entry)
|
||||
{
|
||||
const char *prop;
|
||||
u32 reg[2];
|
||||
|
||||
if (fdtdec_get_int_array(blob, node, "reg", reg, 2)) {
|
||||
|
@ -711,6 +712,13 @@ int fdtdec_read_fmap_entry(const void *blob, int node, const char *name,
|
|||
}
|
||||
entry->offset = reg[0];
|
||||
entry->length = reg[1];
|
||||
entry->used = fdtdec_get_int(blob, node, "used", entry->length);
|
||||
prop = fdt_getprop(blob, node, "compress", NULL);
|
||||
entry->compress_algo = prop && !strcmp(prop, "lzo") ?
|
||||
FMAP_COMPRESS_LZO : FMAP_COMPRESS_NONE;
|
||||
prop = fdt_getprop(blob, node, "hash", &entry->hash_size);
|
||||
entry->hash_algo = prop ? FMAP_HASH_SHA256 : FMAP_HASH_NONE;
|
||||
entry->hash = (uint8_t *)prop;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue