[U-Boot] [PATCH 04/10] fdt: Add fdt_sizecell & fdt_addrcell helpers

Kumar Gala galak at kernel.crashing.org
Thu Oct 23 14:04:13 CEST 2008


On Oct 23, 2008, at 6:55 AM, Jerry Van Baren wrote:

> Kumar Gala wrote:
>> Add helper functions to return top level #size-cell and #address- 
>> cell info
>> Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
>> ---
>> include/fdt_support.h |   18 ++++++++++++++++++
>> 1 files changed, 18 insertions(+), 0 deletions(-)
>> diff --git a/include/fdt_support.h b/include/fdt_support.h
>> index ceaadc2..aa9d86b 100644
>> --- a/include/fdt_support.h
>> +++ b/include/fdt_support.h
>> @@ -28,6 +28,24 @@
>>  #include <fdt.h>
>> +static inline int fdt_addrcell(void *blob) {
>> +	const u32 *addrcell = fdt_getprop(blob, 0, "#address-cells", NULL);
>> +
>> +	if (addrcell)
>> +		return *addrcell;
>> +	else
>> +		return 1;
>> +}
>> +
>> +static inline int fdt_sizecell(void *blob) {
>> +	const u32 *sizecell = fdt_getprop(blob, 0, "#size-cells", NULL);
>> +
>> +	if (sizecell)
>> +		return *sizecell;
>> +	else
>> +		return 1;
>> +}
>> +
>> int fdt_chosen(void *fdt, int force);
>> int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int  
>> force);
>> void do_fixup_by_path(void *fdt, const char *path, const char *prop,
>
> Hi Kumar,
>
> What about collapsing the two above into a common function?
>
> 	fdt_addrcell(blob);
> becomes
> 	fdt_get_prop_u32(blob, "/", "#address-cells", 1);
> and
> 	fdt_sizecell(blob);
> becomes
> 	fdt_get_prop_u32(blob, "/", "#size-cells", 1);
>
> WARNING, UNTESTED CODE:
> /**
> * fdt_get_prop_u32: Find a node and return it's property or a default
> *
> * @fdt: ptr to device tree
> * @node: path of node
> * @prop: property name
> * @defalt: default value if the property isn't found
> *
> * Convenience function to find a node and return it's property or a
> * default value if it doesn't exist.
> */
> u32 fdt_get_prop_u32(void *fdt, const char *node, const char *prop,
> 		     const u32 default)
> {
> 	const u32 *addrcell = fdt_getprop(fdt, node, prop, NULL);
>
> 	if (addrcell)
> 		return *addrcell;
> 	else
> 		return default;
> }

I'd prefer we call it fdt_getprop_u32_default().  If you are good with  
the name I'll change my patchset.

- k


More information about the U-Boot mailing list