[PATCH 2/2] Allow nodes at the root to be specified by path as well as by label.
Grant Likely
grant.likely at secretlab.ca
Tue Oct 19 07:50:34 EST 2010
On Mon, Oct 18, 2010 at 01:25:50PM -0700, John Bonesio wrote:
> Changes to allow us to specify a node by it's path. A path can be used in
> place of a label.
>
> This is particularly useful when overriding existing nodes.
> This way we don't have to label every possible node in a device tree we know
> is a base device tree for a class of systems, and we know the tree will be
> modified for the specific systems.
>
> Signed-off-by: John Bonesio <bones at secretlab.ca>
> ---
>
> dtc-parser.y | 16 ++++++++++++----
> 1 files changed, 12 insertions(+), 4 deletions(-)
Need to add test cases.
>
> diff --git a/dtc-parser.y b/dtc-parser.y
> index 56d7789..0efd0cc 100644
> --- a/dtc-parser.y
> +++ b/dtc-parser.y
> @@ -134,22 +134,30 @@ devicetree:
> {
> struct node *target;
>
> - target = get_node_by_label($1, $2);
> + if ($2[0] == '/')
> + target = get_node_by_path($1, $2);
> + else
> + target = get_node_by_label($1, $2);
> +
> if (target)
> merge_nodes(target, $3);
> else
> - print_error("label, '%s' not found", $2);
> + print_error("label or path, '%s', not found", $2);
> $$ = $1;
> }
> | devicetree DT_REMOVENODE DT_REF ';'
> {
> struct node *target;
>
> - target = get_node_by_label($1, $3);
> + if ($3[0] == '/')
> + target = get_node_by_path($1, $3);
> + else
> + target = get_node_by_label($1, $3);
> +
> if (target)
> remove_nodes(target);
> else
> - print_error("label, '%s' not found", $3);
> + print_error("label or path, '%s', not found", $3);
Hmmm, this is effectively the same code block implemented twice. Its
gotten complex enough with this patch that the common parts should be
factored out inot a common function... In fact, after looking at the
code, it looks like it should be calling get_node_by_ref() here.
Also, this patch doesn't have any way to use the form
&<label>/path/based/on/label which is also a critical feature.
g.
More information about the devicetree-discuss
mailing list