Message ID | 20201110202603.20944-3-rasmus.villemoes@prevas.dk |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Series | allow default environment to be amended from dtb | expand |
Hi Rasmus, On Tue, 10 Nov 2020 at 13:26, Rasmus Villemoes <rasmus.villemoes@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@prevas.dk> > --- > include/fdtdec.h | 14 ++++++++++++++ > lib/fdtdec.c | 27 +++++++++++++-------------- > 2 files changed, 27 insertions(+), 14 deletions(-) > Reviewed-by: Simon Glass <sjg@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
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)
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@prevas.dk> --- include/fdtdec.h | 14 ++++++++++++++ lib/fdtdec.c | 27 +++++++++++++-------------- 2 files changed, 27 insertions(+), 14 deletions(-)