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

Yureka yureka at cyberchaos.dev
Sun Jun 28 18:11:13 CEST 2026


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.

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