[U-Boot] [PATCH 04/21] dm: fdt: Add a function to decode phandles with arguments

Masahiro Yamada yamada.m at jp.panasonic.com
Thu Jan 15 08:29:27 CET 2015


Hi Simon,


A nit


On Mon,  5 Jan 2015 20:05:26 -0700
Simon Glass <sjg at chromium.org> wrote:

> For GPIOs and other functions we want to look up a phandle and then decode
> a list of arguments for that phandle. Each phandle can have a different
> number of arguments, specified by a property in the target node. This is
> the "#gpio-cells" property for GPIOs.
> 
> Add a function to provide this feature, taken modified from Linux 3.18.
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
> 
>  include/fdtdec.h |  53 ++++++++++++++++++++++++
>  lib/fdtdec.c     | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 177 insertions(+)
> 
> diff --git a/include/fdtdec.h b/include/fdtdec.h
> index 5effa24..629e072 100644
> --- a/include/fdtdec.h
> +++ b/include/fdtdec.h
> @@ -133,6 +133,59 @@ enum fdt_compat_id {
>  	COMPAT_COUNT,
>  };
>  
> +#define MAX_PHANDLE_ARGS 16
> +struct fdtdec_phandle_args {
> +	int node;
> +	int args_count;
> +	uint32_t args[MAX_PHANDLE_ARGS];
> +};
> +
> +/**
> + * fdtdec_parse_phandle_with_args() - Find a node pointed by phandle in a list
> + *
> + * This function is useful to parse lists of phandles and their arguments.
> + *
> + * Example:
> + *
> + * phandle1: node1 {
> + *	#list-cells = <2>;
> + * }
> + *
> + * phandle2: node2 {
> + *	#list-cells = <1>;
> + * }
> + *
> + * node3 {
> + *	list = <&phandle1 1 2 &phandle2 3>;
> + * }
> + *
> + * To get a device_node of the `node2' node you may call this:
> + * fdtdec_parse_phandle_with_args(blob, node3, "list", "#list-cells", 0, 1,
> + *				  &args);
> + *
> + * (This function is a modified version of of_parse_phandle_with_args() from
> + * Linux 3.18)

I think this is a modified version of __of_parse_phandle_with_args()


Best Regards
Masahiro Yamada



More information about the U-Boot mailing list