On Wed, Jan 22, 2025 at 01:58:45PM +0800, Mahesh Rao wrote: > Add of_platform_default_populate() to stratix10-svc > driver as the firmware/svc node was moved out of soc. > This fixes the failed probing of child drivers of > svc node. > > Fixes: 23c3ebed382a ("arm64: dts: socfpga: agilex: move firmware out of soc node") > > Signed-off-by: Mahesh Rao <mahesh.rao@xxxxxxxxx> > --- > drivers/firmware/stratix10-svc.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/firmware/stratix10-svc.c b/drivers/firmware/stratix10-svc.c > index c5c78b869561b0c1e9602823ad1f501e98e3ce51..15a7207f7753dcd4e94da4aa9a6162fedb577fe9 100644 > --- a/drivers/firmware/stratix10-svc.c > +++ b/drivers/firmware/stratix10-svc.c > @@ -1227,13 +1227,19 @@ static int stratix10_svc_drv_probe(struct platform_device *pdev) > if (!svc->intel_svc_fcs) { > dev_err(dev, "failed to allocate %s device\n", INTEL_FCS); > ret = -ENOMEM; > - goto err_unregister_dev; > + goto err_unregister_rsu_dev; > } > > ret = platform_device_add(svc->intel_svc_fcs); > if (ret) { > platform_device_put(svc->intel_svc_fcs); > - goto err_unregister_dev; > + goto err_unregister_rsu_dev; > + } > + > + ret = of_platform_default_populate(dev_of_node(dev), NULL, dev); > + if (ret < 0) { if (ret) is just fine. > + of_platform_depopulate(dev); > + goto err_unregister_fcs_dev; You wanna destroy everything even if some child drivers work? And do we need to do depopulation on driver remove? I'm actually a little confused how to handle populate() fail and depopulate(). Thanks, Yilun > } > > dev_set_drvdata(dev, svc); > @@ -1242,7 +1248,9 @@ static int stratix10_svc_drv_probe(struct platform_device *pdev) > > return 0; > > -err_unregister_dev: > +err_unregister_fcs_dev: > + platform_device_unregister(svc->intel_svc_fcs); > +err_unregister_rsu_dev: > platform_device_unregister(svc->stratix10_svc_rsu); > err_free_kfifo: > kfifo_free(&controller->svc_fifo); > > -- > 2.35.3 > >