[PATCH] power: domain: Add Apple PMP reporting driver

Mark Kettenis mark.kettenis at xs4all.nl
Sun Jun 28 19:54:23 CEST 2026


> From: Yureka <yureka at cyberchaos.dev>
> Date: Sun, 28 Jun 2026 18:11:13 +0200
> 
> The Power Management Processor (PMP) is a coprocessor found on certain
> Apple SoCs.
> 
> This is a dummy driver which allows for devices bound to a PMGR domain
> through a PMP reporting domain to be powered on.
> Powering on the PMP itself is not necessary during boot.
> 
> Tested on M3 Max (T6034) with the nvme device tree node using one of
> the PMP reporting power domains.

The device tree bindings for these PMP device have not yet been
upstreamed.  Can we do that first?

> Signed-off-by: Yureka <yureka at cyberchaos.dev>
> ---
>  MAINTAINERS                             |  1 +
>  drivers/power/domain/Kconfig            | 13 ++++++++++
>  drivers/power/domain/Makefile           |  1 +
>  drivers/power/domain/apple-pmp-report.c | 45 +++++++++++++++++++++++++++++++++
>  4 files changed, 60 insertions(+)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 571af196465..ec0c2abd9c7 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -148,6 +148,7 @@ F:	drivers/pci/pcie_apple.c
>  F:	drivers/phy/phy-apple-atc.c
>  F:	drivers/pinctrl/pinctrl-apple.c
>  F:	drivers/power/domain/apple-pmgr.c
> +F:	drivers/power/domain/apple-pmp-report.c
>  F:	drivers/spi/apple_spi.c
>  F:	drivers/watchdog/apple_wdt.c
>  F:	include/configs/apple.h
> diff --git a/drivers/power/domain/Kconfig b/drivers/power/domain/Kconfig
> index 4112b777371..06112d33660 100644
> --- a/drivers/power/domain/Kconfig
> +++ b/drivers/power/domain/Kconfig
> @@ -18,6 +18,19 @@ config APPLE_PMGR_POWER_DOMAIN
>  	  This driver is needed to power on parts of the SoC that have
>  	  not been powered on by previous boot stages.
>  
> +config APPLE_PMP_REPORT_POWER_DOMAIN
> +	bool "Enable the Apple PMP reporting power domain driver"
> +	depends on POWER_DOMAIN
> +	default y if ARCH_APPLE
> +	help
> +	  Enable support for reporting power states to the Apple Power
> +	  Management Processor (PMP).
> +
> +	  This is a dummy driver since the PMP is entirely optional and
> +	  enabling is not necessary during boot. However, it allows for
> +	  devices bound to a PMGR domain through a PMP reporting domain to be
> +	  powered on.
> +
>  config AGILEX5_PMGR_POWER_DOMAIN
>  	bool "Enable the Agilex5 PMGR power domain driver"
>  	depends on SPL_POWER_DOMAIN && ARCH_SOCFPGA_SOC64
> diff --git a/drivers/power/domain/Makefile b/drivers/power/domain/Makefile
> index 110153d5cf8..3e9711aa430 100644
> --- a/drivers/power/domain/Makefile
> +++ b/drivers/power/domain/Makefile
> @@ -5,6 +5,7 @@
>  
>  obj-$(CONFIG_$(PHASE_)POWER_DOMAIN) += power-domain-uclass.o
>  obj-$(CONFIG_APPLE_PMGR_POWER_DOMAIN) += apple-pmgr.o
> +obj-$(CONFIG_APPLE_PMP_REPORT_POWER_DOMAIN) += apple-pmp-report.o
>  obj-$(CONFIG_AGILEX5_PMGR_POWER_DOMAIN) += altr-pmgr-agilex5.o
>  obj-$(CONFIG_BCM6328_POWER_DOMAIN) += bcm6328-power-domain.o
>  obj-$(CONFIG_IMX8_POWER_DOMAIN) += imx8-power-domain-legacy.o imx8-power-domain.o
> diff --git a/drivers/power/domain/apple-pmp-report.c b/drivers/power/domain/apple-pmp-report.c
> new file mode 100644
> index 00000000000..89fd81a7bd8
> --- /dev/null
> +++ b/drivers/power/domain/apple-pmp-report.c
> @@ -0,0 +1,45 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2026 Yureka <yureka at cyberchaos.dev>
> + */
> +
> +#include <dm.h>
> +#include <power-domain-uclass.h>
> +
> +static const struct udevice_id apple_pmp_report_ids[] = {
> +	{ .compatible = "apple,t6000-pmp-v2-report" },
> +	{ .compatible = "apple,t6020-pmp-v2-report" },
> +	{ .compatible = "apple,t6030-pmp-v2-report" },
> +	{ .compatible = "apple,t8112-pmp-v2-report" },
> +	{ /* sentinel */ }
> +};
> +
> +U_BOOT_DRIVER(apple_pmp_report) = {
> +	.name = "apple_pmp_report",
> +	.id = UCLASS_NOP,
> +	.of_match = apple_pmp_report_ids,
> +	.bind = dm_scan_fdt_dev,
> +};
> +
> +static int apple_pmp_report_entry_of_xlate(struct power_domain *power_domain,
> +					   struct ofnode_phandle_args *args)
> +{
> +	return 0;
> +}
> +
> +static const struct udevice_id apple_pmp_report_entry_ids[] = {
> +	{ .compatible = "apple,t6000-pmp-v2-report-entry" },
> +	{ .compatible = "apple-pmp-report-entry" },
> +	{ /* sentinel */ }
> +};
> +
> +struct power_domain_ops apple_pmp_report_entry_ops = {
> +	.of_xlate = apple_pmp_report_entry_of_xlate,
> +};
> +
> +U_BOOT_DRIVER(apple_pmp_report_entry) = {
> +	.name = "apple_pmp_report_entry",
> +	.id = UCLASS_POWER_DOMAIN,
> +	.of_match = apple_pmp_report_entry_ids,
> +	.ops = &apple_pmp_report_entry_ops,
> +};
> 
> ---
> base-commit: 6902fb4c17faa375003124c451c2550deab5463d
> change-id: 20260628-apple-pmp-report-4d9dec73e3f2
> 
> Best regards,
> --  
> Yureka <yureka at cyberchaos.dev>
> 
> 


More information about the U-Boot mailing list