Add a fdt_set_node_status function that will set the specified node's status to the value contained in "status". If the node doesn't have "status" property that will be created.
Signed-off-by: Chunhe Lan <chunhe....@freescale.com> --- common/fdt_support.c | 17 ++++++++++++++++- include/fdt_support.h | 3 +++ 2 files changed, 19 insertions(+), 1 deletions(-) diff --git a/common/fdt_support.c b/common/fdt_support.c index 19b2ef6..384523b 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -2,7 +2,7 @@ * (C) Copyright 2007 * Gerald Van Baren, Custom IDEAS, vanba...@cideas.com * - * Copyright 2010 Freescale Semiconductor, Inc. + * Copyright 2010-2011 Freescale Semiconductor, Inc. * * See file CREDITS for list of people who contributed to this * project. @@ -904,6 +904,21 @@ void fdt_del_node_and_alias(void *blob, const char *alias) fdt_delprop(blob, off, alias); } +/* + * Sets the specified node's status to the value contained in "status". + * If the first character of the specified path is "/" then we use + * alias as a path. Otherwise, we look for an alias of that name. + */ +void fdt_set_node_status(void *fdt, const char *alias, const char *status) +{ + const char *path = fdt_get_alias(fdt, alias); + + if (!path) + path = alias; + + do_fixup_by_path(fdt, path, "status", status, strlen(status) + 1, 1); +} + /* Helper to read a big number; size is in cells (not bytes) */ static inline u64 of_read_number(const __be32 *cell, int size) { diff --git a/include/fdt_support.h b/include/fdt_support.h index 863024f..74d7c83 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -2,6 +2,8 @@ * (C) Copyright 2007 * Gerald Van Baren, Custom IDEAS, vanba...@cideas.com * + * Copyright (C) 2011 Freescale Semiconductor, Inc. + * * See file CREDITS for list of people who contributed to this * project. * @@ -85,6 +87,7 @@ int fdt_fixup_nor_flash_size(void *blob); void fdt_fixup_mtdparts(void *fdt, void *node_info, int node_info_size); void fdt_del_node_and_alias(void *blob, const char *alias); +void fdt_set_node_status(void *fdt, const char *alias, const char *status); 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, phys_addr_t compat_off); -- 1.5.6.5 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot