Re: [PATCH] pmdomain: rockchip: mark PD_PIPE as active wakeup on RK3568
From: Coia Prant
Date: Mon Oct 05 2026 - 19:28:02 EST
On September 25, 2026 12:17:51 PM GMT+08:00, Coia Prant <coiaprant@xxxxxxxxx> wrote:
>The PD_PIPE power domain on RK3568 hosts the XPCS, the PCIe
>controllers and the SATA controllers. All of them can act as
>wakeup sources for the system:
>
> - the XPCS for MAC WoL, through the SGMII link
> - the PCIe controllers for PME#
> - the SATA controllers for hotplug wake
>
>The domain is registered with active_wakeup = false, so genpd powers
>it down during system suspend even when a consumer is on the wakeup
>path. That kills the XPCS and the SerDes, which breaks MAC WoL on
>RK3568 SGMII boards, and it also powers down the PCIe and SATA
>controllers while their drivers still expect the link to be alive.
>
>Mark PD_PIPE as active_wakeup so that genpd honours the wakeup path
>of its consumers. Consumers that call device_set_wakeup_path() keep
>the domain powered; consumers that do not mark themselves as wakeup
>sources are unaffected and the domain is still powered down when
>nothing needs it.
>
>Several other Rockchip SoCs already mark their PCIe and USB power
>domains as active wakeup, for example RK3588's pcie and usb domains
>and RK3576's usb domain. PD_PIPE hosts the same kind of
>wakeup-capable controllers on RK3568, so this follows the same
>pattern.
>
>Signed-off-by: Coia Prant <coiaprant@xxxxxxxxx>
>---
> drivers/pmdomain/rockchip/pm-domains.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c
>index ba66ae719428..16ef0a235f0f 100644
>--- a/drivers/pmdomain/rockchip/pm-domains.c
>+++ b/drivers/pmdomain/rockchip/pm-domains.c
>@@ -1296,7 +1296,7 @@ static const struct rockchip_domain_info rk3568_pm_domains[] = {
> [RK3568_PD_VPU] = DOMAIN_RK3568("vpu", BIT(2), BIT(6), false, false),
> [RK3568_PD_RKVDEC] = DOMAIN_RK3568("vdec", BIT(4), BIT(8), false, false),
> [RK3568_PD_RKVENC] = DOMAIN_RK3568("venc", BIT(3), BIT(7), false, false),
>- [RK3568_PD_PIPE] = DOMAIN_RK3568("pipe", BIT(8), BIT(11), false, false),
>+ [RK3568_PD_PIPE] = DOMAIN_RK3568("pipe", BIT(8), BIT(11), true, false),
> };
>
> static const struct rockchip_domain_info rk3576_pm_domains[] = {
Hi,
Gentle ping on this patch. It was sent on Sep 25, and linux-pm Patchwork shows it
as "Handled Elsewhere", but I can't find it merged in linux-pm,
linux-rockchip, linux-next or mainline, and I haven't received any review
feedback.
Thanks,
Coia