Thread (30 messages) 30 messages, 3 authors, 2h ago

Re: [PATCH v23 09/13] mfd: psci-mfd: Add psci-reboot-mode child cell

From: Shivendra Pratap <hidden>
Date: 2026-07-15 13:29:17
Also in: linux-arm-msm, linux-devicetree, linux-pm, lkml


On 15-07-2026 18:44, Bartosz Golaszewski wrote:
On Tue, 14 Jul 2026 19:16:37 +0200, Shivendra Pratap
[off-list ref] said:
quoted
The PSCI "reboot-mode" node does not define a compatible because it is a
configuration of boot-states provided by the underlying firmware. With
the new firmware-node based cells in mfd-core, this node can now be
exposed as a proper child cell.

Add the psci-reboot-mode child cell to the psci-mfd driver with a
named_fwnode. Add psci-cpuidle-domain cell first to isolate it from
reboot-mode failures.

Suggested-by: Bartosz Golaszewski <redacted>
Signed-off-by: Shivendra Pratap <redacted>
---
  drivers/mfd/psci-mfd.c      | 30 +++++++++++++++++++++++++++++-
  drivers/power/reset/Kconfig |  2 +-
  2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/drivers/mfd/psci-mfd.c b/drivers/mfd/psci-mfd.c
index 7affd6bb09dd..8c6b78ac471b 100644
--- a/drivers/mfd/psci-mfd.c
+++ b/drivers/mfd/psci-mfd.c
@@ -7,6 +7,7 @@
  #include <linux/module.h>
  #include <linux/of.h>
  #include <linux/platform_device.h>
+#include <linux/property.h>

  static const struct mfd_cell psci_cells[] = {
  	{
@@ -14,10 +15,37 @@ static const struct mfd_cell psci_cells[] = {
  	},
  };

+static const struct mfd_cell psci_reboot_mode_cell[] = {
+	{
+		.name = "psci-reboot-mode",
+		.named_fwnode = "reboot-mode",
+	},
+};
+
  static int psci_mfd_probe(struct platform_device *pdev)
  {
-	return devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells,
+	struct fwnode_handle *fwnode;
+	int ret;
+
+	ret = devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells,
  				   ARRAY_SIZE(psci_cells), NULL, 0, NULL);
+	if (ret)
+		return ret;
+
+	fwnode = device_get_named_child_node(&pdev->dev, "reboot-mode");
+	if (!fwnode)
+		return 0;
+
+	fwnode_handle_put(fwnode);
+
+	ret = devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO,
+				   psci_reboot_mode_cell,
+				   ARRAY_SIZE(psci_reboot_mode_cell),
+				   NULL, 0, NULL);
+	if (ret)
+		dev_warn(&pdev->dev, "reboot-mode child cell failed to add: %d\n", ret);
Why do we have to look up the named node here anyway? Shouldn't MFD core handle
that already in a generic way?
yes. MFD is handling this. Will remove this explicit check.

thanks,
Shivendra
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help