Re: [PATCH] pmdomain: rockchip: mark PD_PIPE as active wakeup on RK3568

Coia Prant coiaprant at gmail.com
Mon Oct 5 16:27:52 PDT 2026


On September 25, 2026 12:17:51 PM GMT+08:00, Coia Prant <coiaprant at gmail.com> 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 at gmail.com>
>---
> 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



More information about the linux-arm-kernel mailing list