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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.