RE: [PATCH v6] soc: fsl: enable acpi support in RCPM driver

From: Leo Li
Date: Tue Apr 06 2021 - 23:39:21 EST




> -----Original Message-----
> From: Ran Wang <ran.wang_1@xxxxxxx>
> Sent: Tuesday, April 6, 2021 8:32 PM
> To: Leo Li <leoyang.li@xxxxxxx>
> Cc: Christophe Leroy <christophe.leroy@xxxxxxxxxx>; linuxppc-dev
> <linuxppc-dev@xxxxxxxxxxxxxxxx>; moderated list:ARM/FREESCALE IMX / MXC
> ARM ARCHITECTURE <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>; lkml <linux-
> kernel@xxxxxxxxxxxxxxx>
> Subject: RE: [PATCH v6] soc: fsl: enable acpi support in RCPM driver
>
> Hi Leo,
>
> On Wednesday, April 7, 2021 5:45 AM, Li Yang wrote:
> >
> > On Fri, Mar 12, 2021 at 2:56 AM Ran Wang <ran.wang_1@xxxxxxx> wrote:
> > >
> > > From: Peng Ma <peng.ma@xxxxxxx>
> > >
> > > This patch enables ACPI support in RCPM driver.
> > >
> > > Signed-off-by: Peng Ma <peng.ma@xxxxxxx>
> > > Signed-off-by: Ran Wang <ran.wang_1@xxxxxxx>
> > > ---
> > > Change in v6:
> > > - Remove copyright udpate to rebase on latest mainline
> > >
> > > Change in v5:
> > > - Fix panic when dev->of_node is null
> > >
> > > Change in v4:
> > > - Make commit subject more accurate
> > > - Remove unrelated new blank line
> > >
> > > Change in v3:
> > > - Add #ifdef CONFIG_ACPI for acpi_device_id
> > > - Rename rcpm_acpi_imx_ids to rcpm_acpi_ids
> > >
> > > Change in v2:
> > > - Update acpi_device_id to fix conflict with other driver
> > >
> > > drivers/soc/fsl/rcpm.c | 18 ++++++++++++++++--
> > > 1 file changed, 16 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/soc/fsl/rcpm.c b/drivers/soc/fsl/rcpm.c index
> > > 4ace28cab314..7aa997b932d1 100644
> > > --- a/drivers/soc/fsl/rcpm.c
> > > +++ b/drivers/soc/fsl/rcpm.c
> > > @@ -13,6 +13,7 @@
> > > #include <linux/slab.h>
> > > #include <linux/suspend.h>
> > > #include <linux/kernel.h>
> > > +#include <linux/acpi.h>
> > >
> > > #define RCPM_WAKEUP_CELL_MAX_SIZE 7
> > >
> > > @@ -78,10 +79,14 @@ static int rcpm_pm_prepare(struct device *dev)
> > > "fsl,rcpm-wakeup", value,
> > > rcpm->wakeup_cells + 1);
> > >
> > > - /* Wakeup source should refer to current rcpm device */
> > > - if (ret || (np->phandle != value[0]))
> > > + if (ret)
> > > continue;
> > >
> > > + if (is_of_node(dev->fwnode))
> > > + /* Should refer to current rcpm device */

Better to be /* Only handle devices with fsl,rcpm-wakeup pointing to the current rcpm node*/
> > > + if (np->phandle != value[0])
> > > + continue;
> >
> > It looks like that we assume that in the ACPI scenario there will only
> > be one RCPM controller and all devices are controlled by this single
> > PM controller. This probably is true for all existing SoCs with a RCPM. But
> since the driver tried to support multiple RCPMs, maybe we should continue
> to support multiple RCPM controllers or at least mention that in the
> comment.
>
> How about adding some comment as below:
>
> /* For ACPI mode, currently we assume there is only one RCPM controller
> existing */

Ok. On the other hand, it will be clearer to update the existing comment above.

>
> Regards,
> Ran
>
> >
> > > +
> > > /* Property "#fsl,rcpm-wakeup-cells" of rcpm node defines the
> > > * number of IPPDEXPCR register cells, and "fsl,rcpm-wakeup"
> > > * of wakeup source IP contains an integer array:
> > > <phandle to @@ -172,10 +177,19 @@ static const struct of_device_id
> > > rcpm_of_match[] = { }; MODULE_DEVICE_TABLE(of, rcpm_of_match);
> > >
> > > +#ifdef CONFIG_ACPI
> > > +static const struct acpi_device_id rcpm_acpi_ids[] = {
> > > + {"NXP0015",},
> > > + { }
> > > +};
> > > +MODULE_DEVICE_TABLE(acpi, rcpm_acpi_ids); #endif
> > > +
> > > static struct platform_driver rcpm_driver = {
> > > .driver = {
> > > .name = "rcpm",
> > > .of_match_table = rcpm_of_match,
> > > + .acpi_match_table = ACPI_PTR(rcpm_acpi_ids),
> > > .pm = &rcpm_pm_ops,
> > > },
> > > .probe = rcpm_probe,
> > > --
> > > 2.25.1
> > >