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

Subsystems: freescale soc drivers, the rest

STALE1947d

2 messages, 2 authors, 2021-04-08 · open the first message on its own page

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

From: Ran Wang <hidden>
Date: 2021-04-08 02:57:22

From: Peng Ma <redacted>

This patch enables ACPI support in RCPM driver.

Signed-off-by: Peng Ma <redacted>
Signed-off-by: Ran Wang <redacted>
---
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

Re: [PATCH v7] soc: fsl: enable acpi support in RCPM driver

From: Li Yang <hidden>
Date: 2021-04-08 21:33:17

On Wed, Apr 7, 2021 at 9:58 PM Ran Wang [off-list ref] wrote:
From: Peng Ma <redacted>

This patch enables ACPI support in RCPM driver.

Signed-off-by: Peng Ma <redacted>
Signed-off-by: Ran Wang <redacted>
Applied for next.  Thanks.
quoted hunk
---
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help