Re: [PATCH v24 08/12] mfd: psci-mfd: Add psci-reboot-mode child cell
Shivendra Pratap <[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 8/12/2026 1:48 PM, Lee Jones wrote: > 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. sure. Will add a comment in code. psci-mfd adds two child cells, psci-cpuidle-domain and psci-reboot-mode. psci-cpuidle-domain is boot-critical on supported systems. psci-reboot-mode is added separately as an optional child. For non-critical failures from psci_reboot_mode_cell, we want to continue the probe of psci-mfd. thanks, Shivendra