|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC for-4.5 05/12] xen/dts: Add dt_parse_phandle_with_args and dt_parse_phandle
Hello Ian,
On 02/19/2014 12:34 PM, Ian Campbell wrote:
> On Fri, 2014-02-07 at 17:43 +0000, Julien Grall wrote:
>> Code adapted from linux drivers/of/base.c (commit ef42c58).
>
> On that basis I only took a cursory glance through that monster
> function.
>
>>
>> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
>> diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
>> index 7c075d9..d429e60 100644
>> --- a/xen/include/xen/device_tree.h
>> +++ b/xen/include/xen/device_tree.h
>> @@ -112,6 +112,13 @@ struct dt_device_node {
>>
>> };
>>
>> +#define MAX_PHANDLE_ARGS 16
>> +struct dt_phandle_args {
>> + struct dt_device_node *np;
>> + int args_count;
>> + uint32_t args[MAX_PHANDLE_ARGS];
>> +};
>> +
>> /**
>> * IRQ line type.
>> *
>> @@ -621,6 +628,53 @@ void dt_set_range(__be32 **cellp, const struct
>> dt_device_node *np,
>> void dt_get_range(const __be32 **cellp, const struct dt_device_node *np,
>> u64 *address, u64 *size);
>>
>> +/**
>> + * dt_parse_phandle - Resolve a phandle property to a device_node pointer
>> + * @np: Pointer to device node holding phandle property
>> + * @phandle_name: Name of property holding a phandle value
>> + * @index: For properties holding a table of phandles, this is the index
>> into
>> + * the table
>
> Otherwise it is -1 or something else?
Even with one element, the property contains a table of phandles. So,
the first index is always 0.
>
>> + *
>> + * Returns the device_node pointer.
>> + */
>> +struct dt_device_node *dt_parse_phandle(const struct dt_device_node *np,
>> + const char
>> *phandle_name,
>
> Stray hard tabs?
Oops, I forgot to check the hard tabs on this function. I will fix it.
>> + int index);
>> +
>> +/**
>> + * dt_parse_phandle_with_args() - Find a node pointed by phandle in a list
>> + * @np: pointer to a device tree node containing a list
>> + * @list_name: property name that contains a list
>> + * @cells_name: property name that specifies phandles' arguments count
>> + * @index: index of a phandle to parse out
>> + * @out_args: optional pointer to output arguments structure (will be
>> filled)
>> + *
>> + * This function is useful to parse lists of phandles and their arguments.
>> + * Returns 0 on success and fills out_args, on error returns appropriate
>> + * errno value.
>> + *
>> + * 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:
>> + * dt_parse_phandle_with_args(node3, "list", "#list-cells", 1, &args);
>
> Wow, what an exciting function!
>
> How do I decide the correct size for out_args?
out_args is a structure dt_phandle_args which contains the node and an
array of arguments.
The function is designed to parse one phandle by one phandle. So
out_args is either NULL (we don't want to get the info) or contains a
pointer to the structure to fill.
The description of out_args seems clear to me. Does it miss something?
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |