Re: [PATCH v3 0/2] Add capability to append to property

David Gibson <[email protected]>
Newsgroups org.kernel.vger.devicetree-compiler
Message-ID <Z2z9mk8nrMzLi-gy@zatzit>
On Fri, Dec 20, 2024 at 09:00:14PM +0530, Ayush Singh wrote:
> 
> On 16/12/24 11:39, David Gibson wrote:
> > On Tue, Dec 10, 2024 at 04:34:17PM +0100, Andreas Gnau wrote:
> > > On 2024-11-11 10:54, Ayush Singh wrote:
> > > > Allow appending values to a property instead of overriding the previous
> > > > values of property.
> > > > 
> > > > Currently, we have /delete-node/ and /delete-property/, but lack
> > > > /append-property/. Hence we end up having to repeat all existing values
> > > > when appending to a property (e.g. see [1] appending to clocks from
> > > > [2]).
> > > > 
> > > > This functionality is also important for creating a device tree based
> > > > implementation to support different types of addon-boards such as
> > > > mikroBUS, Grove [3], etc.
> > > > 
> > > > In practice, it looks as follows:
> > > > 
> > > > ```
> > > > dts-v1/;
> > > > 
> > > > / {
> > > > 	str-prop = "0";
> > > > };
> > > > 
> > > > / {
> > > > 	/append-property/ str-prop = "1";
> > > > };
> > > > ```
> > > If we add /append-property/, why not add /prepend-property/ as well? This is
> > > not only "nice for consistency", but it would also enable solving a problem
> > > where SoC compatible strings from dtsi [1] need to be repeated in board dts
> > > [2], because one cannot prepend to an existing property.
> > > 
> > > ```
> > > dts-v1/;
> > > / {
> > > 	compatible = "soc-vendor,soc1234";
> > > };
> > > 
> > > / {
> > > 	/prepend-property/ compatible = "board-vendor,board-xyz";
> > > };
> > > ```
> > > 
> > > What do you think?
> > So, this kind of demonstrates why I don't love /append-property/ as a
> > proposed syntax.  The way I'd prefer to do this, ideally, is to allow
> > properties to be described as expressions.  We already have integer
> > expressions that can be used in < > context, but I had intended to
> > extent to string and bytestring expressions - but I've never had the
> > time to implement that.
> > 
> > Under that proposal, I'd expect appending to look something like:
> > 	str-prop = /previous-value/, "1";
> > 
> > Prepending,
> > 	str-prop = "1", /previous-value/;
> > 
> > .. and you could do both at once in the obvious way.
> > 
> > The downside, of course, is that this is a much more complicated
> > proposal to implement.  Parsing that syntax isn't too hard, but I
> > think doing it sensibly will need some structural changes in order to
> > evaluate property values as expressions, rather than simply
> > constructing the properties directly left to right.  In particular the
> > interactions between expression syntax and within-property labels (and
> > other markers) could be fiddly to get right.
> > 
> 
> Do you wish to allow `/previous-value/` to be repeated in the same property?
> Something like this:
> 
>     str-prop = "1", /previous-value/, "2", /previous-value/, "3";

Yes, I'd expect that to work.  Note that I don't particularly like the
name "/previous-value/" - that was just an example to demonstrate what
I had in mind.  If anyone can think of a better or more succinct name
for this, please suggest it.

-- 
David Gibson (he or they)	| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you, not the other way
				| around.
http://www.ozlabs.org/~dgibson
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmds/ZEACgkQzQJF27ox
2GfXfQ/+NV/AS8vE+ZYeobKjRfJ9hBUBm/DVaQfubhGDMeO7msaibECzoj7hNMUU
M9IBNF8ugFxopw38keIoiC/Fdpeb75tITFavUEJIx0clAtQHGZkZ5+ybeT7o/yZn
k7O2fHV08PjZFtuipVFE2yaMnHo6PfX2erUEDb8E6Z2wtov+YWE7sGla8EK99QmA
FjOfU1EoDwFDiGfKq8owT8cftdNYqzFgulIUAXyJWt3b9lJn6r1rOx2aDDZMKPTr
X41J7ePn9r3yBOR1+vcGfx7A9XDXdZ6V844uJmXbSE6zvTaChODZyhWwqUNF1n8c
IN3VJam6oKIADKQgrS06zT2ZVwRuZWATowRpvLReEUbDpYZ54YssUAXXe+LJeMpY
mkVjpDiG9GWBGxbokR3Y4lCpP6CJSPD9emz2ml3i4sv0MRLIcQzcOUni8UEuLzwm
QMqJnMPkR8zgWxe2xjipm3p/G72sF1FDtI+4dmExVQ2P83/dR/sfQlNe7cQBTUaE
+m3GsNejJttO9NYHTmNjAbGI7B6h9GfJ92DmFywNo5U+7h5LBD2SBoEMxFhbrp6e
DQEHBdlGEl2COGZdET/hhYl8zyX+YLWeKgt41VOwPfwcBxY+zhQn2EfIOr6Fnbyw
eiLGSOyoUwcfIdWfhHZjshDSHVie4UgPMxKH3JHgsPsQgr2yU/8=
=aYDb
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.