[PATCH v24 08/12] mfd: psci-mfd: Add psci-reboot-mode child cell

Lee Jones lee at kernel.org
Wed Aug 12 01:18:56 PDT 2026


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 <bartosz.golaszewski at oss.qualcomm.com>
> Signed-off-by: Shivendra Pratap <shivendra.pratap at oss.qualcomm.com>
> ---
>  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



More information about the linux-arm-kernel mailing list