Re: [PATCH] clk: qcom: sm8450: Enable retention for usb controller gdsc

From: neil . armstrong
Date: Tue Jun 10 2025 - 08:00:39 EST


On 10/06/2025 13:10, Dmitry Baryshkov wrote:
On Tue, Jun 10, 2025 at 02:52:53PM +0530, Krishna Kurapati wrote:
When USB controller enters runtime suspend while operating in host
mode, then wakeup because of cable disconnect or a button press of
a headset causes the following kind of errors:

Error after button press on a connected headset :

[ 355.309260] usb 1-1: reset full-speed USB device number 2 using xhci-hcd
[ 355.725844] usb 1-1: device not accepting address 2, error -108

Error on removal of headset device from usb port:

[ 157.563136] arm-smmu 15000000.iommu: Unhandled context fault: fsr=0x402
,iova=0xd65504710, fsynr=0x100011, cbfrsynra=0x0, cb=6
[ 157.574842] arm-smmu 15000000.iommu: FSR = 00000402 [Format=2 TF],
SID=0x0
[ 157.582181] arm-smmu 15000000.iommu: FSYNR0 = 00100011 [S1CBNDX=16 WNR
PLVL=1]
[ 157.589610] xhci-hcd xhci-hcd.0.auto: WARNING: Host Controller Error
[ 157.596197] xhci-hcd xhci-hcd.0.auto: WARNING: Host Controller Error

Enabling retention on usb controller GDSC fixes the above issues.

Could you please clarify, if there are other platforms which need this
change? Is there a chance of switching all of them in one patch set?

Since sm8250, sc8280xp, x1e80100, sm8650 are all affected
- https://lore.kernel.org/r/20221102091320.66007-1-manivannan.sadhasivam@xxxxxxxxxx
- https://lore.kernel.org/r/20220929161124.18138-1-johan+linaro@xxxxxxxxxx
- https://lore.kernel.org/r/20240801-x1e80100-clk-gcc-fix-usb-phy-gdscs-pwrsts-v1-1-8df016768a0f@xxxxxxxxxx
- https://lore.kernel.org/r/20250305-topic-sm8650-upstream-fix-usb-suspend-v1-1-649036ab0557@xxxxxxxxxx

I think sm8350 & sm8550 also should be switched, perhaps sm8150 also ?



Signed-off-by: Krishna Kurapati <krishna.kurapati@xxxxxxxxxxxxxxxx>
---

Note:
The above mentioned issues pop up after I enabled runtime suspend after
applying [1].
[1]: https://lore.kernel.org/all/20250610091357.2983085-1-krishna.kurapati@xxxxxxxxxxxxxxxx/

drivers/clk/qcom/gcc-sm8450.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/qcom/gcc-sm8450.c b/drivers/clk/qcom/gcc-sm8450.c
index 65d7d52bce03..f94da4a1c921 100644
--- a/drivers/clk/qcom/gcc-sm8450.c
+++ b/drivers/clk/qcom/gcc-sm8450.c
@@ -3141,7 +3141,7 @@ static struct gdsc usb30_prim_gdsc = {
.pd = {
.name = "usb30_prim_gdsc",
},
- .pwrsts = PWRSTS_OFF_ON,
+ .pwrsts = PWRSTS_RET_ON,
};
static struct clk_regmap *gcc_sm8450_clocks[] = {
--
2.34.1