> From: Yureka <[email protected]> > 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 <[email protected]> > --- > 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 <[email protected]> > + */ > + > +#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 <[email protected]> > >

