[PATCH] Implements new features for updating existing device tree nodes.
Grant Likely
grant.likely at secretlab.ca
Tue Oct 19 03:01:15 EST 2010
On Mon, Oct 18, 2010 at 11:11:35AM +1100, David Gibson wrote:
> On Sat, Oct 16, 2010 at 12:32:17PM -0600, Grant Likely wrote:
> > On Sat, Oct 16, 2010 at 06:45:47AM -0700, John Bonesio wrote:
> > > 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:
> [snip]
> > > > 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?
> >
> > That may not be possible and/or desirable. For instance, when the
> > tree is extracted from /proc. Or if the base tree in stored in the
> > kernel source and an external tool is modifying it for a specific
> > purpose (when unable to patch the kernel tree). Or for generated
> > device trees from the Xilinx toolchain for FPGAs. Modifying the
> > source data isn't always an option.
>
> You can apply your overlays by path in this case..
Right, but my argument is that in this case it is a useful syntax to
be able to delve deep into the tree, or deeper off of a label and
delete nodes within it. And it is actually a really simple thing to
implement cleanly (as shown in the patch I posted).
>
> > Plus I want the ability to logically group related changes. ie.
> > delete a device and add a device to the same bus at the same time.
> > Or delete a phy node, add a replacement phy node at a different
> > address, and update the ethernet phy-device phandle in the same
> > block.
>
> Hrm, I really don't think this is a good argument. You're conflating
> the grouping of logically related changes with the tree structure
> which I think is a mistake. Putting the changes in the same file
> and/or adjusting your spacing and comments to show the logical
> grouping seems less likely to cause other problems.
Though I'm not happy with it, I can live with only allowing removal of
nodes at the top level. In fact, that constraint also completely
removes the need for a /replace-node/ keyword since the remove
operation is performed at the top level where ordering is explicitly
allowed. So, instead of:
/{
node { oldprop; };
};
/{
/replace-node/ the-node { newprop; };
};
do this instead:
/{
node { oldprop; };
};
/remove-node/ &{/the-node};
/{
the-node { newprop; };
};
It means only the /remove-node/ keyword needs to be defined. However,
it does mean that the syntax for full path references must be defined
immediately before it is useful.
g.
More information about the devicetree-discuss
mailing list