[PATCH 2/5] fdtdec: introduce fdtdec_get_config_property
Simon Glass
sjg at chromium.org
Tue Nov 17 00:52:58 CET 2020
Hi Rasmus,
On Tue, 10 Nov 2020 at 13:26, Rasmus Villemoes
<rasmus.villemoes at prevas.dk> wrote:
>
> Add a wrapper for retrieving a given property from the /config node as
> a (blob, length) pair. A later patch will need the length of the
> property and thus cannot just use fdtdec_get_config_string(). Rewrite
> that to use the new wrapper.
>
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
> ---
> include/fdtdec.h | 14 ++++++++++++++
> lib/fdtdec.c | 27 +++++++++++++--------------
> 2 files changed, 27 insertions(+), 14 deletions(-)
>
Reviewed-by: Simon Glass <sjg at chromium.org>
But please adjust the fdtdec_get_config_bool() to use your new function too.
Also fdtdec_get_config_prop() is a better name IMO because it is shorter.
> diff --git a/include/fdtdec.h b/include/fdtdec.h
> index a037f6ed9c..ff1453a100 100644
> --- a/include/fdtdec.h
> +++ b/include/fdtdec.h
> @@ -747,6 +747,20 @@ int fdtdec_get_bool(const void *blob, int node, const char *prop_name);
> */
> int fdtdec_get_child_count(const void *blob, int node);
>
> +/**
> + * Look in the FDT for a config item with the given name and a pointer
> + * to its value.
> + *
> + * @param blob FDT blob
> + * @param prop_name property name to look up
> + * @param lenp if non-NULL and the property is found, *lenp is
> + * set to the length of the property value
> + *
> + * @returns property value, NULL on error.
> + */
> +const void *fdtdec_get_config_property(const void *blob, const char *prop_name,
> + int *lenp);
> +
> /**
> * Look in the FDT for a config item with the given name and return its value
> * as a 32-bit integer. The property must have at least 4 bytes of data. The
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index 25a71bc8f9..2442470af8 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -853,6 +853,18 @@ const u8 *fdtdec_locate_byte_array(const void *blob, int node,
> return cell;
> }
>
> +const void *fdtdec_get_config_property(const void *blob, const char *prop_name,
> + int *len)
> +{
> + int config_node;
> +
> + debug("%s: %s\n", __func__, prop_name);
> + config_node = fdt_path_offset(blob, "/config");
> + if (config_node < 0)
> + return NULL;
> + return fdt_getprop(blob, config_node, prop_name, len);
> +}
> +
> int fdtdec_get_config_int(const void *blob, const char *prop_name,
> int default_val)
> {
> @@ -881,20 +893,7 @@ int fdtdec_get_config_bool(const void *blob, const char *prop_name)
>
> const char *fdtdec_get_config_string(const void *blob, const char *prop_name)
> {
> - const char *nodep;
> - int nodeoffset;
> - int len;
> -
> - debug("%s: %s\n", __func__, prop_name);
> - nodeoffset = fdt_path_offset(blob, "/config");
> - if (nodeoffset < 0)
> - return NULL;
> -
> - nodep = fdt_getprop(blob, nodeoffset, prop_name, &len);
> - if (!nodep)
> - return NULL;
> -
> - return nodep;
> + return fdtdec_get_config_property(blob, prop_name, NULL);
> }
>
> u64 fdtdec_get_number(const fdt32_t *ptr, unsigned int cells)
> --
> 2.23.0
>
Regards,
Simon
More information about the U-Boot
mailing list