From 80efdec6cd5ad0932c46a6cc7705e3f9cea980d3 Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Thu, 12 Feb 2026 16:48:54 +0530 Subject: [PATCH 1/2] WORKAROUND: clk: qcom: gcc-sa8775p: Use PWRSTS_RET_ON for USB GDSCs The USB GDSCs on SA8775P are currently configured with PWRSTS_OFF_ON, which allows the GDSC framework to fully collapse these power domains during gdsc_disable(). When these GDSCs collapse, the corresponding USB PHY configurations are not retained in USB host mode use-cases and this breaks the resume of USB controller from suspend. To avoid this, configure the USB GDSC power states to PWRSTS_RET_ON. This prevents the GDSC from powering off during gdsc_disable(), and allows hardware to retain the PHY configurations across USB host mode use-cases. Change-Id: If88c7f898b58650629144ab3ada0231afbc33bfe Signed-off-by: Imran Shaik --- drivers/clk/qcom/gcc-sa8775p.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/clk/qcom/gcc-sa8775p.c b/drivers/clk/qcom/gcc-sa8775p.c index e7425e82c54f2..d7d1ba6ad6af3 100644 --- a/drivers/clk/qcom/gcc-sa8775p.c +++ b/drivers/clk/qcom/gcc-sa8775p.c @@ -4261,7 +4261,7 @@ static struct gdsc usb20_prim_gdsc = { .pd = { .name = "usb20_prim_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR, }; @@ -4273,7 +4273,7 @@ static struct gdsc usb30_prim_gdsc = { .pd = { .name = "usb30_prim_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR, }; @@ -4285,7 +4285,7 @@ static struct gdsc usb30_sec_gdsc = { .pd = { .name = "usb30_sec_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR, }; From 223b6f077455d90b8dbb8b3b89d42da2137f9ed6 Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Thu, 12 Feb 2026 16:48:55 +0530 Subject: [PATCH 2/2] WORKAROUND: clk: qcom: gcc-qcs8300: Use PWRSTS_RET_ON for USB GDSCs The USB GDSCs on QCS8300 are currently configured with PWRSTS_OFF_ON, which allows the GDSC framework to fully collapse these power domains during gdsc_disable(). When these GDSCs collapse, the corresponding USB PHY configurations are not retained in USB host mode use-cases and this breaks the resume of USB controller from suspend. To avoid this, configure the USB GDSC power states to PWRSTS_RET_ON. This prevents the GDSC from powering off during gdsc_disable(), and allows hardware to retain the PHY configurations across USB host mode use-cases. Change-Id: I7ac4b6fec314c55be30b3a80c9bf8517528e99ec Signed-off-by: Imran Shaik --- drivers/clk/qcom/gcc-qcs8300.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/clk/qcom/gcc-qcs8300.c b/drivers/clk/qcom/gcc-qcs8300.c index 80831c7dea3bc..7a7f4eca40d8d 100644 --- a/drivers/clk/qcom/gcc-qcs8300.c +++ b/drivers/clk/qcom/gcc-qcs8300.c @@ -3306,7 +3306,7 @@ static struct gdsc gcc_usb20_prim_gdsc = { .pd = { .name = "gcc_usb20_prim_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR, }; @@ -3318,7 +3318,7 @@ static struct gdsc gcc_usb30_prim_gdsc = { .pd = { .name = "gcc_usb30_prim_gdsc", }, - .pwrsts = PWRSTS_OFF_ON, + .pwrsts = PWRSTS_RET_ON, .flags = RETAIN_FF_ENABLE | POLL_CFG_GDSCR, };