From: Stephan Gerhold Date: Mon, 7 Apr 2025 09:54:23 +0000 (+0200) Subject: usb: host: ehci-msm: Disable clocks after all register accesses X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2faabff35899a2106dc0480bd482783e906c8b7d;p=thirdparty%2Fu-boot.git usb: host: ehci-msm: Disable clocks after all register accesses We need the USB clocks to do accesses like wait_for_bit_le32(&ehci->usbcmd, CMD_RESET, ...) so we should disable them only after all of them are done. At the moment this works only because the clock driver doesn't actually disabling these clocks in U-Boot. Fixes: 9b3a9f896e66 ("ehci: msm: bring up iface + core clocks") Signed-off-by: Stephan Gerhold Acked-by: Caleb Connolly Tested-by: Sam Day Link: https://patch.msgid.link/20250407-ehci-msm-fixes-v1-3-f8b30eb05d07@linaro.org Signed-off-by: Casey Connolly --- diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c index 60b2dc44d3d..bf46e89104e 100644 --- a/drivers/usb/host/ehci-msm.c +++ b/drivers/usb/host/ehci-msm.c @@ -110,9 +110,6 @@ static int ehci_usb_remove(struct udevice *dev) /* Stop controller. */ clrbits_le32(&ehci->usbcmd, CMD_RUN); - clk_disable_unprepare(&p->iface_clk); - clk_disable_unprepare(&p->core_clk); - ret = generic_shutdown_phy(&p->phy); if (ret) return ret; @@ -130,6 +127,8 @@ static int ehci_usb_remove(struct udevice *dev) return -ETIMEDOUT; } + clk_disable_unprepare(&p->iface_clk); + clk_disable_unprepare(&p->core_clk); return 0; }