[PATCH] Implements new features for updating existing device tree nodes.

John Bonesio bones at secretlab.ca
Sun Oct 17 00:45:47 EST 2010


On Sat, 2010-10-16 at 02:10 -0600, Grant Likely wrote:
> On Sat, Oct 16, 2010 at 05:47:44PM +1100, David Gibson wrote:
> > On Fri, Oct 15, 2010 at 08:21:17PM -0700, John Bonesio wrote:
> > > On Fri, 2010-10-15 at 20:35 -0600, Grant Likely wrote:
> > [snip]
> > > > > +       | devicetree DT_REMOVENODE DT_REF ';'
> > > > > +               {
> > > > > +                       struct node *target;
> > > > > +
> > > > > +                       target = get_node_by_label($1, $3);
> > > > > +                       if (target)
> > > > > +                               remove_nodes(target);
> > > > > +                       else
> > > > > +                               yyerror("label, '%s' does not exist in"
> > > > > +                                       " node removal", $3);
> > > > >        ;
> > > > 
> > > > This handles the syntax at the top level, but doesn't deal with the
> > > > /*-node/ keywords when they are within the overlay tree.
> > > > 
> > > > Also, I don't know if you'll be able to handle it in the same way when
> > > > it comes to handling the new tokens embedded within an overlay tree
> > > > because it isn't so easy to resolve the node to be removed.  In order
> > > > to handle both cases in the same way, it might be better to set a
> > > > 'replace' flag in struct node that defers the actual remove of the
> > > > original node until merge_nodes() time.
> > > 
> > > Ok, so maybe I misunderstood. I thought we had decided that node
> > > modifications would only happen at the top level, but now that I'm
> > > looking back through your examples earlier today, and I see this isn't
> > > true.
> > 
> > Um.. that part of the discussion got confusing.  I think only allowing
> > the operations (and I still don't think the set implemented here are
> > quite right, though they're close) at the top-level is a better idea.
> > 
> > Grant, is there a reason you think we need to have replacement as an
> > option within each tree, rather than a "per-overlay-sheet" option.
> 
> Yes, because I need the ability to remove/replace a child of a
> labelled node.  Not every node that needs to be manipulated will
> necessarily have a label.
> 
> For example; I could have a labelled spi bus node with child nodes for
> each of the spi devices.  I want to be able to remove/replace the
> child nodes without having to label them first.
> 
> g.
> 

Why not just add the label to the node you need first?

- John




More information about the devicetree-discuss mailing list