RE: [PATCH V7 3/3] firmware: imx: imx-scu: register build-in child devices

From: Anson Huang
Date: Wed Mar 06 2019 - 19:46:35 EST


Hi, Guenter

Best Regards!
Anson Huang

> -----Original Message-----
> From: Guenter Roeck [mailto:groeck7@xxxxxxxxx] On Behalf Of Guenter
> Roeck
> Sent: 2019å3æ7æ 0:06
> To: Anson Huang <anson.huang@xxxxxxx>; catalin.marinas@xxxxxxx;
> will.deacon@xxxxxxx; shawnguo@xxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx;
> kernel@xxxxxxxxxxxxxx; festevam@xxxxxxxxx; wim@xxxxxxxxxxxxxxxxxx;
> Andy Gross <andy.gross@xxxxxxxxxx>; heiko@xxxxxxxxx;
> horms+renesas@xxxxxxxxxxxx; arnd@xxxxxxxx;
> maxime.ripard@xxxxxxxxxxx; jagan@xxxxxxxxxxxxxxxxxxxx;
> bjorn.andersson@xxxxxxxxxx; enric.balletbo@xxxxxxxxxxxxx;
> marc.w.gonzalez@xxxxxxx; olof@xxxxxxxxx; Aisheng Dong
> <aisheng.dong@xxxxxxx>; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; linux-watchdog@xxxxxxxxxxxxxxx
> Cc: dl-linux-imx <linux-imx@xxxxxxx>
> Subject: Re: [PATCH V7 3/3] firmware: imx: imx-scu: register build-in child
> devices
>
> Hi,
>
> On 3/5/19 5:06 PM, Anson Huang wrote:
> > For some devices which are controlled by system controller, they are
> > NOT present in device tree since no hardware info needed, just
> > register these devices as children of SCU device.
> > This patch registers i.MX system controller watchdog platform device
> > as child device of SCU.
> >
> > Signed-off-by: Anson Huang <Anson.Huang@xxxxxxx>
> > ---
> > No changes.
> > ---
> > drivers/firmware/imx/imx-scu.c | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git a/drivers/firmware/imx/imx-scu.c
> > b/drivers/firmware/imx/imx-scu.c index 2bb1a19..df75ead 100644
> > --- a/drivers/firmware/imx/imx-scu.c
> > +++ b/drivers/firmware/imx/imx-scu.c
> > @@ -196,6 +196,7 @@ EXPORT_SYMBOL(imx_scu_call_rpc);
> >
> > static int imx_scu_probe(struct platform_device *pdev)
> > {
> > + struct platform_device *child_pdev;
> > struct device *dev = &pdev->dev;
> > struct imx_sc_ipc *sc_ipc;
> > struct imx_sc_chan *sc_chan;
> > @@ -248,6 +249,13 @@ static int imx_scu_probe(struct platform_device
> > *pdev)
> >
> > dev_info(dev, "NXP i.MX SCU Initialized\n");
> >
> > + /* register SCU child devices which are NOT in device tree */
> > + child_pdev = platform_device_register_data(dev, "imx-sc-wdt",
> > + PLATFORM_DEVID_NONE, NULL, 0);
> > + if (IS_ERR(child_pdev))
> > + dev_warn(dev, "failed to register scu watchdog
> device %ld!\n",
> > + PTR_ERR(child_pdev));
> > +
>
> I just realized ... since this is not a devm_ function, we now also need error
> handling (if devm_of_platform_populate() fails) and a remove function.
> Sorry for that - I should have noticed earlier.

Thanks, I will add error handling here once we make decision of putting device register
here, we have other scenarios may need to have watchdog node in DT, if Rob agree
to have it in DT, this patch will be discarded.

Anson.

>
> Guenter
>
> > return devm_of_platform_populate(dev);
> > }
> >
> >