Re: [PATCH v2 5/6] software node: Introduce SOFTWARE_NODE_REFERENCE() helper macro
From: Andy Shevchenko
Date: Tue Mar 30 2021 - 05:27:42 EST
On Mon, Mar 29, 2021 at 11:45:29PM +0100, Daniel Scally wrote:
> On 29/03/2021 16:12, Andy Shevchenko wrote:
> > This is useful to assign software node reference with arguments
> > in a common way. Moreover, we have already couple of users that
> > may be converted. And by the fact, one of them is moved right here
> > to use the helper.
...
> > + SOFTWARE_NODE_REFERENCE(&nodes[0]),
> > + SOFTWARE_NODE_REFERENCE(&nodes[1], 3, 4),
...
> > +#define SOFTWARE_NODE_REFERENCE(_ref_, ...) \
> > +(const struct software_node_ref_args) { \
> > + .node = _ref_, \
> > + .nargs = ARRAY_SIZE(((u64[]){ 0, ##__VA_ARGS__ })) - 1, \
> > + .args = { __VA_ARGS__ }, \
> > +}
...
> > + { .pointer = &SOFTWARE_NODE_REFERENCE(_ref_, ##__VA_ARGS__), }, \
>
> What are the .args intended to be used for? I actually had it in mind to
> replace this with a simple pointer to a struct software_node, because I
> can't see any users of them and the fact that it's actually storing a
> pointer to a new variable is something that confused me for a good long
> time when I wrote the cio2-bridge (though that's mostly due to my
> relative inexperience of course, but still)
It's to be in align with DT phandle references that can take arguments. While
for now, indeed, we have no users of this, it might be changed in the future
(I hadn't checked DesignWare DMA where I would like to transform the code to
use device properties eventually and there it might be the case).
--
With Best Regards,
Andy Shevchenko