On 24/03/2023 15:01, Dmitry Rokosov wrote:
> In some meson boards, secure monitor device has children, for example,
> power secure controller. By default, secure monitor isn't the bus in terms
> of device tree subsystem, so the of_platform initialization code doesn't
> populate its device tree data. As a result, secure monitor's children
> aren't probed at all.
>
> Run the 'of_platform_populate()' routine manually to resolve such issues.
>
> Signed-off-by: Dmitry Rokosov <[email protected]>
> ---
> drivers/firmware/meson/meson_sm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/firmware/meson/meson_sm.c b/drivers/firmware/meson/meson_sm.c
> index 77aa5c6398aa..b79d0e316cb1 100644
> --- a/drivers/firmware/meson/meson_sm.c
> +++ b/drivers/firmware/meson/meson_sm.c
> @@ -316,7 +316,7 @@ static int __init meson_sm_probe(struct platform_device *pdev)
> if (sysfs_create_group(&pdev->dev.kobj, &meson_sm_sysfs_attr_group))
> goto out_in_base;
>
> - return 0;
> + return devm_of_platform_populate(dev);
You should check return and jump to out_in_base on error instead.
Neil
>
> out_in_base:
> iounmap(fw->sm_shmem_in_base);
On Fri, Mar 24, 2023 at 03:05:53PM +0100, [email protected] wrote:
> On 24/03/2023 15:01, Dmitry Rokosov wrote:
> > In some meson boards, secure monitor device has children, for example,
> > power secure controller. By default, secure monitor isn't the bus in terms
> > of device tree subsystem, so the of_platform initialization code doesn't
> > populate its device tree data. As a result, secure monitor's children
> > aren't probed at all.
> >
> > Run the 'of_platform_populate()' routine manually to resolve such issues.
> >
> > Signed-off-by: Dmitry Rokosov <[email protected]>
> > ---
> > drivers/firmware/meson/meson_sm.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/firmware/meson/meson_sm.c b/drivers/firmware/meson/meson_sm.c
> > index 77aa5c6398aa..b79d0e316cb1 100644
> > --- a/drivers/firmware/meson/meson_sm.c
> > +++ b/drivers/firmware/meson/meson_sm.c
> > @@ -316,7 +316,7 @@ static int __init meson_sm_probe(struct platform_device *pdev)
> > if (sysfs_create_group(&pdev->dev.kobj, &meson_sm_sysfs_attr_group))
> > goto out_in_base;
> > - return 0;
> > + return devm_of_platform_populate(dev);
>
> You should check return and jump to out_in_base on error instead.
>
> Neil
>
Ah, exactly. There is one direct non-devm ioremap above. I hurried up,
sorry.
> > out_in_base:
> > iounmap(fw->sm_shmem_in_base);
>
--
Thank you,
Dmitry