Re: [PATCH v24 08/12] mfd: psci-mfd: Add psci-reboot-mode child cell
Lee Jones <[email protected]>
| Newsgroups | dev.linux.lists.mfd,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 03 Aug 2026, Shivendra Pratap wrote: > 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 <[email protected]> > Signed-off-by: Shivendra Pratap <[email protected]> > --- > drivers/mfd/psci-mfd.c | 27 ++++++++++++++++++++++++++- > drivers/power/reset/Kconfig | 2 +- > 2 files changed, 27 insertions(+), 2 deletions(-) > > diff --git a/drivers/mfd/psci-mfd.c b/drivers/mfd/psci-mfd.c > index 7affd6bb09dd..7befc4fa86f5 100644 > --- a/drivers/mfd/psci-mfd.c > +++ b/drivers/mfd/psci-mfd.c > @@ -14,10 +14,35 @@ 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, > + int ret; > + > + ret = devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells, > ARRAY_SIZE(psci_cells), NULL, 0, NULL); > + if (ret) > + goto out; > + > + 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) { > + if (ret == -ENOMEM) > + goto out; > + dev_warn(&pdev->dev, "reboot-mode child cell failed to add: %d\n", ret); Okay Yoda, but why is this okay? Needs a comment. > + ret = 0; > + } > + > +out: > + return ret; > } > > static const struct of_device_id psci_mfd_of_match[] = { > diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig > index 143f3260f04a..1810482d52e6 100644 > --- a/drivers/power/reset/Kconfig > +++ b/drivers/power/reset/Kconfig > @@ -362,7 +362,7 @@ config NVMEM_REBOOT_MODE > > config PSCI_REBOOT_MODE > bool "PSCI reboot mode driver" > - depends on ARM_PSCI_FW || COMPILE_TEST > + depends on (ARM_PSCI_FW && MFD_PSCI) || COMPILE_TEST > select REBOOT_MODE > help > Say y here will enable PSCI reboot mode driver. This gets > > -- > 2.34.1 > -- Lee Jones