Re: [PATCH V2 7/9] interconnect: imx: set of_node for interconnect provider

From: Laurent Pinchart
Date: Wed Jun 29 2022 - 13:33:11 EST


On Wed, Jun 29, 2022 at 05:08:58PM +0200, Lucas Stach wrote:
> Am Donnerstag, dem 16.06.2022 um 15:33 +0800 schrieb Peng Fan (OSS):
> > From: Peng Fan <peng.fan@xxxxxxx>
> >
> > The provider device is created using platform_device_register_data in
> > imx-bus driver, which not has of_node. With of_node set, it will be
> > easy to support QoS settings.
> >
> That's a bit dangerous, as sharing a of_node between two devices can
> lead to some reference counting issues IIRC, but then I also don't see
> a good way to do this any differently.
>
> Regards,
> Lucas
>
> > Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
> > ---
> > drivers/interconnect/imx/imx.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/interconnect/imx/imx.c b/drivers/interconnect/imx/imx.c
> > index 1f16eedea21c..78557fe6da2c 100644
> > --- a/drivers/interconnect/imx/imx.c
> > +++ b/drivers/interconnect/imx/imx.c
> > @@ -264,6 +264,7 @@ int imx_icc_register(struct platform_device *pdev,
> > provider->xlate = of_icc_xlate_onecell;
> > provider->data = data;
> > provider->dev = dev->parent;
> > + provider->dev->of_node = dev->parent->of_node;

Due to the previous line, provider->dev is equal to dev->parent, so
doesn't this essentially do

dev->parent->of_node = dev->parent->of_node;

which is a no-op ?

> > platform_set_drvdata(pdev, imx_provider);
> >
> > ret = icc_provider_add(provider);

--
Regards,

Laurent Pinchart