fdt_support: add fdt_update_reserved_memory()

Add API for rockchip pass uboot logo memory info to kernel.

Change-Id: Ib3bfadc381efae21359a43654493e8e0f4e67dd0
Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
Kever Yang 2018-02-22 17:34:07 +08:00
parent 3f251879bf
commit 3a39dbf874
2 changed files with 32 additions and 0 deletions

View File

@ -523,6 +523,36 @@ int fdt_fixup_memory(void *blob, u64 start, u64 size)
return fdt_fixup_memory_banks(blob, &start, &size, 1);
}
int fdt_update_reserved_memory(void *blob, char *name, u64 start, u64 size)
{
int nodeoffset, len, err;
u8 tmp[16]; /* Up to 64-bit address + 64-bit size */
#if 0
/*name is rockchip_logo*/
nodeoffset = fdt_find_or_add_subnode(blob, 0, "reserved-memory");
if (nodeoffset < 0)
return nodeoffset;
printf("hjc>>reserved-memory>>%s, nodeoffset:%d\n", __func__, nodeoffset);
nodeoffset = fdt_find_or_add_subnode(blob, nodeoffset, name);
if (nodeoffset < 0)
return nodeoffset;
#else
nodeoffset = fdt_node_offset_by_compatible(blob, 0, name);
if (nodeoffset < 0)
debug("Can't find nodeoffset: %d\n", nodeoffset);
#endif
len = fdt_pack_reg(blob, tmp, &start, &size, 1);
err = fdt_setprop(blob, nodeoffset, "reg", tmp, len);
if (err < 0) {
printf("WARNING: could not set %s %s.\n",
"reg", fdt_strerror(err));
return err;
}
return nodeoffset;
}
void fdt_fixup_ethernet(void *fdt)
{
int i = 0, j, prop;

View File

@ -103,6 +103,8 @@ static inline int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[],
}
#endif
int fdt_update_reserved_memory(void *blob, char *name, u64 start, u64 size);
void fdt_fixup_ethernet(void *fdt);
int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
const void *val, int len, int create);