[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