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