Message ID | 20210408030353.37193-1-ran.wang_1@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v7] soc: fsl: enable acpi support in RCPM driver | expand |
On Wed, Apr 7, 2021 at 9:58 PM Ran Wang <ran.wang_1@nxp.com> wrote: > > From: Peng Ma <peng.ma@nxp.com> > > This patch enables ACPI support in RCPM driver. > > Signed-off-by: Peng Ma <peng.ma@nxp.com> > Signed-off-by: Ran Wang <ran.wang_1@nxp.com> Applied for next. Thanks. > --- > Change in v7: > - Update comment for checking RCPM node which refferred to > > 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 | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/drivers/soc/fsl/rcpm.c b/drivers/soc/fsl/rcpm.c > index 4ace28cab314..90d3f4060b0c 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,20 @@ 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; > > + /* > + * For DT mode, would handle devices with "fsl,rcpm-wakeup" > + * pointing to the current RCPM node. > + * > + * For ACPI mode, currently we assume there is only one > + * RCPM controller existing. > + */ > + if (is_of_node(dev->fwnode)) > + if (np->phandle != value[0]) > + continue; > + > /* 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 +183,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 >
diff --git a/drivers/soc/fsl/rcpm.c b/drivers/soc/fsl/rcpm.c index 4ace28cab314..90d3f4060b0c 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,20 @@ 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; + /* + * For DT mode, would handle devices with "fsl,rcpm-wakeup" + * pointing to the current RCPM node. + * + * For ACPI mode, currently we assume there is only one + * RCPM controller existing. + */ + if (is_of_node(dev->fwnode)) + if (np->phandle != value[0]) + continue; + /* 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 +183,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,