Message ID | 20230223151043.41548-3-marex@denx.de |
---|---|
State | New |
Headers | show |
Series | [v4,1/4] dt-bindings: soc: imx8mp-media-blk-ctrl: Align block controller example name | expand |
Am Donnerstag, dem 23.02.2023 um 16:10 +0100 schrieb Marek Vasut: > This particular block can have DT subnodes describing the LVDS LDB > bridge. Instead of misusing simple-bus to scan for those nodes, do > the scan within the driver. > > Fixes: 94e6197dadc9 ("arm64: dts: imx8mp: Add LCDIF2 & LDB nodes") > Signed-off-by: Marek Vasut <marex@denx.de> > --- > Cc: Alexander Stein <alexander.stein@ew.tq-group.com> > Cc: Fabio Estevam <festevam@gmail.com> > Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Cc: Lucas Stach <l.stach@pengutronix.de> > Cc: NXP Linux Team <linux-imx@nxp.com> > Cc: Paul Elder <paul.elder@ideasonboard.com> > Cc: Peng Fan <peng.fan@nxp.com> > Cc: Pengutronix Kernel Team <kernel@pengutronix.de> > Cc: Richard Cochran <richardcochran@gmail.com> > Cc: Richard Zhu <hongxing.zhu@nxp.com> > Cc: Rob Herring <robh+dt@kernel.org> > Cc: Sascha Hauer <s.hauer@pengutronix.de> > Cc: Shawn Guo <shawnguo@kernel.org> > Cc: devicetree@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > --- > V2: - Turn this into 3/4 > - Warn and continue in case of error > V3: Add RB from Liu > V4: - Use devm_of_platform_populate() > - Remove RB from Liu > --- > drivers/soc/imx/imx8m-blk-ctrl.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/soc/imx/imx8m-blk-ctrl.c b/drivers/soc/imx/imx8m-blk-ctrl.c > index 399cb85105a18..77e7dc4eb8cff 100644 > --- a/drivers/soc/imx/imx8m-blk-ctrl.c > +++ b/drivers/soc/imx/imx8m-blk-ctrl.c > @@ -310,7 +310,7 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev) > > dev_set_drvdata(dev, bc); > > - return 0; > + return devm_of_platform_populate(dev); You need to handle the return value, not simply pass it through as the return value of the probe function. When devm_of_platform_populate fails you miss to clean up the genpd provider and detach from the power domains. Regards, Lucas > > cleanup_provider: > of_genpd_del_provider(dev->of_node);
On 2/24/23 10:08, Lucas Stach wrote: Hi, >> diff --git a/drivers/soc/imx/imx8m-blk-ctrl.c b/drivers/soc/imx/imx8m-blk-ctrl.c >> index 399cb85105a18..77e7dc4eb8cff 100644 >> --- a/drivers/soc/imx/imx8m-blk-ctrl.c >> +++ b/drivers/soc/imx/imx8m-blk-ctrl.c >> @@ -310,7 +310,7 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev) >> >> dev_set_drvdata(dev, bc); >> >> - return 0; >> + return devm_of_platform_populate(dev); > > You need to handle the return value, not simply pass it through as the > return value of the probe function. When devm_of_platform_populate > fails you miss to clean up the genpd provider and detach from the power > domains. Hmmm, but then I cannot use the devm_ variant, can I ?
Am Freitag, dem 24.02.2023 um 13:08 +0100 schrieb Marek Vasut: > On 2/24/23 10:08, Lucas Stach wrote: > > Hi, > > > > diff --git a/drivers/soc/imx/imx8m-blk-ctrl.c b/drivers/soc/imx/imx8m-blk-ctrl.c > > > index 399cb85105a18..77e7dc4eb8cff 100644 > > > --- a/drivers/soc/imx/imx8m-blk-ctrl.c > > > +++ b/drivers/soc/imx/imx8m-blk-ctrl.c > > > @@ -310,7 +310,7 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev) > > > > > > dev_set_drvdata(dev, bc); > > > > > > - return 0; > > > + return devm_of_platform_populate(dev); > > > > You need to handle the return value, not simply pass it through as the > > return value of the probe function. When devm_of_platform_populate > > fails you miss to clean up the genpd provider and detach from the power > > domains. > > Hmmm, but then I cannot use the devm_ variant, can I ? Why not? If everything works okay the devm will just take care of cleaning up the platform devices when the blk-ctrl is removed. If it fails you just need to roll back the non-devm parts of the blk-ctrl probe routine. Regards, Lucas
On 2/24/23 14:09, Lucas Stach wrote: > Am Freitag, dem 24.02.2023 um 13:08 +0100 schrieb Marek Vasut: >> On 2/24/23 10:08, Lucas Stach wrote: >> >> Hi, >> >>>> diff --git a/drivers/soc/imx/imx8m-blk-ctrl.c b/drivers/soc/imx/imx8m-blk-ctrl.c >>>> index 399cb85105a18..77e7dc4eb8cff 100644 >>>> --- a/drivers/soc/imx/imx8m-blk-ctrl.c >>>> +++ b/drivers/soc/imx/imx8m-blk-ctrl.c >>>> @@ -310,7 +310,7 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev) >>>> >>>> dev_set_drvdata(dev, bc); >>>> >>>> - return 0; >>>> + return devm_of_platform_populate(dev); >>> >>> You need to handle the return value, not simply pass it through as the >>> return value of the probe function. When devm_of_platform_populate >>> fails you miss to clean up the genpd provider and detach from the power >>> domains. >> >> Hmmm, but then I cannot use the devm_ variant, can I ? > > Why not? If everything works okay the devm will just take care of > cleaning up the platform devices when the blk-ctrl is removed. If it > fails you just need to roll back the non-devm parts of the blk-ctrl > probe routine. All right, I just sent a V5. Thanks for the clarification.
diff --git a/drivers/soc/imx/imx8m-blk-ctrl.c b/drivers/soc/imx/imx8m-blk-ctrl.c index 399cb85105a18..77e7dc4eb8cff 100644 --- a/drivers/soc/imx/imx8m-blk-ctrl.c +++ b/drivers/soc/imx/imx8m-blk-ctrl.c @@ -310,7 +310,7 @@ static int imx8m_blk_ctrl_probe(struct platform_device *pdev) dev_set_drvdata(dev, bc); - return 0; + return devm_of_platform_populate(dev); cleanup_provider: of_genpd_del_provider(dev->of_node);
This particular block can have DT subnodes describing the LVDS LDB bridge. Instead of misusing simple-bus to scan for those nodes, do the scan within the driver. Fixes: 94e6197dadc9 ("arm64: dts: imx8mp: Add LCDIF2 & LDB nodes") Signed-off-by: Marek Vasut <marex@denx.de> --- Cc: Alexander Stein <alexander.stein@ew.tq-group.com> Cc: Fabio Estevam <festevam@gmail.com> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: NXP Linux Team <linux-imx@nxp.com> Cc: Paul Elder <paul.elder@ideasonboard.com> Cc: Peng Fan <peng.fan@nxp.com> Cc: Pengutronix Kernel Team <kernel@pengutronix.de> Cc: Richard Cochran <richardcochran@gmail.com> Cc: Richard Zhu <hongxing.zhu@nxp.com> Cc: Rob Herring <robh+dt@kernel.org> Cc: Sascha Hauer <s.hauer@pengutronix.de> Cc: Shawn Guo <shawnguo@kernel.org> Cc: devicetree@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org --- V2: - Turn this into 3/4 - Warn and continue in case of error V3: Add RB from Liu V4: - Use devm_of_platform_populate() - Remove RB from Liu --- drivers/soc/imx/imx8m-blk-ctrl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)