mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-30 00:20:44 +09:00
fdt: introduce fdt_create_phandle()
The ePAPR specification says that phandle properties should be called "phandle", and not "linux,phandle". To facilitate the migration from "linux,phandle" to "phandle", introduce function fdt_create_phandle(), which creates a phandle in a given node. For now, we create both the "phandle" and "linux,phandle" properties. A later version of this function will remove support for "linux,phandle". Signed-off-by: Timur Tabi <timur@freescale.com>
This commit is contained in:
parent
b3606f141e
commit
a8d2a75d72
@ -1195,6 +1195,46 @@ int fdt_alloc_phandle(void *blob)
|
|||||||
return phandle + 1;
|
return phandle + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fdt_create_phandle: Create a phandle property for the given node
|
||||||
|
*
|
||||||
|
* @fdt: ptr to device tree
|
||||||
|
* @nodeoffset: node to update
|
||||||
|
* @phandle: phandle value to set (must be unique)
|
||||||
|
*/
|
||||||
|
int fdt_create_phandle(void *fdt, int nodeoffset, uint32_t phandle)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
int off = fdt_node_offset_by_phandle(fdt, phandle);
|
||||||
|
|
||||||
|
if ((off >= 0) && (off != nodeoffset)) {
|
||||||
|
char buf[64];
|
||||||
|
|
||||||
|
fdt_get_path(fdt, nodeoffset, buf, sizeof(buf));
|
||||||
|
printf("Trying to update node %s with phandle %u ",
|
||||||
|
buf, phandle);
|
||||||
|
|
||||||
|
fdt_get_path(fdt, off, buf, sizeof(buf));
|
||||||
|
printf("that already exists in node %s.\n", buf);
|
||||||
|
return -FDT_ERR_BADPHANDLE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ret = fdt_setprop_cell(fdt, nodeoffset, "phandle", phandle);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For now, also set the deprecated "linux,phandle" property, so that we
|
||||||
|
* don't break older kernels.
|
||||||
|
*/
|
||||||
|
ret = fdt_setprop_cell(fdt, nodeoffset, "linux,phandle", phandle);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_VIDEO)
|
#if defined(CONFIG_VIDEO)
|
||||||
int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf)
|
int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf)
|
||||||
{
|
{
|
||||||
|
@ -89,6 +89,7 @@ u64 fdt_translate_address(void *blob, int node_offset, const u32 *in_addr);
|
|||||||
int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
|
int fdt_node_offset_by_compat_reg(void *blob, const char *compat,
|
||||||
phys_addr_t compat_off);
|
phys_addr_t compat_off);
|
||||||
int fdt_alloc_phandle(void *blob);
|
int fdt_alloc_phandle(void *blob);
|
||||||
|
int fdt_create_phandle(void *fdt, int nodeoffset, uint32_t phandle);
|
||||||
int fdt_add_edid(void *blob, const char *compat, unsigned char *buf);
|
int fdt_add_edid(void *blob, const char *compat, unsigned char *buf);
|
||||||
|
|
||||||
int fdt_verify_alias_address(void *fdt, int anode, const char *alias,
|
int fdt_verify_alias_address(void *fdt, int anode, const char *alias,
|
||||||
|
Loading…
Reference in New Issue
Block a user