]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
pmdomain: imx8mp-blk-ctrl: Keep gpc power domain on for system wakeup
authorXu Yang <xu.yang_2@nxp.com>
Wed, 4 Feb 2026 11:11:41 +0000 (19:11 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Thu, 5 Feb 2026 10:31:43 +0000 (11:31 +0100)
commite9ab2b83893dd03cf04d98faded81190e635233f
tree8d13b30e06914174c02a66b57875a66dfc2f19c9
parent6bd8b4a92a901fae1a422e6f914801063c345e8d
pmdomain: imx8mp-blk-ctrl: Keep gpc power domain on for system wakeup

Current design will power off all dependent GPC power domains in
imx8mp_blk_ctrl_suspend(), even though the user device has enabled
wakeup capability. The result is that wakeup function never works
for such device.

An example will be USB wakeup on i.MX8MP. PHY device '382f0040.usb-phy'
is attached to power domain 'hsioblk-usb-phy2' which is spawned by hsio
block control. A virtual power domain device 'genpd:3:32f10000.blk-ctrl'
is created to build connection with 'hsioblk-usb-phy2' and it depends on
GPC power domain 'usb-otg2'. If device '382f0040.usb-phy' enable wakeup,
only power domain 'hsioblk-usb-phy2' keeps on during system suspend,
power domain 'usb-otg2' is off all the time. So the wakeup event can't
happen.

In order to further establish a connection between the power domains
related to GPC and block control during system suspend, register a genpd
power on/off notifier for the power_dev. This allows us to prevent the GPC
power domain from being powered off, in case the block control power
domain is kept on to serve system wakeup.

Suggested-by: Ulf Hansson <ulf.hansson@linaro.org>
Fixes: 556f5cf9568a ("soc: imx: add i.MX8MP HSIO blk-ctrl")
Cc: stable@vger.kernel.org
Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/pmdomain/imx/imx8mp-blk-ctrl.c