]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: dwc2: disable platform lowlevel hw resources during shutdown
authorJisheng Zhang <jszhang@kernel.org>
Sun, 29 Jun 2025 09:46:55 +0000 (17:46 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:09:31 +0000 (13:09 +0100)
[ Upstream commit 7481a97c5f49f10c7490bb990d0e863f23b9bb71 ]

On some SoC platforms, in shutdown stage, most components' power is cut
off, but there's still power supply to the so called always-on
domain, so if the dwc2's regulator is from the always-on domain, we
need to explicitly disable it to save power.

Disable platform lowlevel hw resources such as phy, clock and
regulators etc. in device shutdown hook to reduce non-necessary power
consumption when the platform enters shutdown stage.

Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Acked-by: Minas Harutyunyan <hminas@synopsys.com>
Link: https://lore.kernel.org/r/20250629094655.747-1-jszhang@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: b6ebcfdcac40 ("usb: dwc2: fix hang during shutdown if set as peripheral")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/dwc2/platform.c

index 5ff8186936790bd84873883b02c2494467cc267e..8bdbae4c77b0a85d4b502fd0ebe18e28b654f9cb 100644 (file)
@@ -386,6 +386,9 @@ static void dwc2_driver_shutdown(struct platform_device *dev)
 
        dwc2_disable_global_interrupts(hsotg);
        synchronize_irq(hsotg->irq);
+
+       if (hsotg->ll_hw_enabled)
+               dwc2_lowlevel_hw_disable(hsotg);
 }
 
 /**