mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] pmdomain: rockchip: mark PD_PIPE as active wakeup on RK3568
@ 2026-09-25  4:17 Coia Prant
  0 siblings, 0 replies; only message in thread
From: Coia Prant @ 2026-09-25  4:17 UTC (permalink / raw)
  To: Ulf Hansson, Heiko Stuebner
  Cc: Sebastian Reichel, linux-pm, linux-arm-kernel, linux-rockchip,
	linux-kernel, Coia Prant

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@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[] = {
-- 
2.47.3


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-25  4:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-25  4:17 [PATCH] pmdomain: rockchip: mark PD_PIPE as active wakeup on RK3568 Coia Prant

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®