diff options
author | Markus Klotzbuecher <mk@denx.de> | 2007-09-17 17:12:45 +0200 |
---|---|---|
committer | Markus Klotzbuecher <mk@pollux.denx.de> | 2007-09-17 17:12:45 +0200 |
commit | f930922f061ea7bf585296859d1c14194c24b840 (patch) | |
tree | c46b9f120f7c55f5baf8b6ac3048ba759e10a512 /libfdt/fdt_rw.c | |
parent | 97213f32416ead885deafea86774e912ffd60ad0 (diff) | |
parent | 67c31036acaaaa992fc346cc89db0909a7e733c4 (diff) | |
download | u-boot-imx-f930922f061ea7bf585296859d1c14194c24b840.zip u-boot-imx-f930922f061ea7bf585296859d1c14194c24b840.tar.gz u-boot-imx-f930922f061ea7bf585296859d1c14194c24b840.tar.bz2 |
Merge with git://www.denx.de/git/u-boot.git
Diffstat (limited to 'libfdt/fdt_rw.c')
-rw-r--r-- | libfdt/fdt_rw.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libfdt/fdt_rw.c b/libfdt/fdt_rw.c index aaafc53..55fcc41 100644 --- a/libfdt/fdt_rw.c +++ b/libfdt/fdt_rw.c @@ -16,6 +16,9 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" +#if CONFIG_OF_LIBFDT + #include "libfdt_env.h" #include <fdt.h> @@ -185,6 +188,32 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name, return 0; } +/** + * fdt_find_and_setprop: Find a node and set it's property + * + * @fdt: ptr to device tree + * @node: path of node + * @prop: property name + * @val: ptr to new value + * @len: length of new property value + * @create: flag to create the property if it doesn't exist + * + * Convenience function to directly set a property given the path to the node. + */ +int fdt_find_and_setprop(void *fdt, const char *node, const char *prop, + const void *val, int len, int create) +{ + int nodeoff = fdt_find_node_by_path(fdt, node); + + if (nodeoff < 0) + return nodeoff; + + if ((!create) && (fdt_get_property(fdt, nodeoff, prop, 0) == NULL)) + return 0; /* create flag not set; so exit quietly */ + + return fdt_setprop(fdt, nodeoff, prop, val, len); +} + int fdt_delprop(void *fdt, int nodeoffset, const char *name) { struct fdt_property *prop; @@ -291,3 +320,5 @@ int fdt_pack(void *fdt) fdt_set_header(fdt, totalsize, _blob_data_size(fdt)); return 0; } + +#endif /* CONFIG_OF_LIBFDT */ |