2023-03-03 02:29:25

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 1/2] clk: qcom: gcc-sm6375: Update the .pwrsts for usb gdsc

The USB controller on sm6375 doesn't retain its state when the system
goes into low power state and the GDSCs are turned off.

This can be observed by the USB connection not coming back alive after
putting the device into suspend, essentially breaking USB.

Fix this by updating the .pwrsts for the USB GDSCs so they only
transition to retention state in low power.

Signed-off-by: Konrad Dybcio <[email protected]>
---
drivers/clk/qcom/gcc-sm6375.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/qcom/gcc-sm6375.c b/drivers/clk/qcom/gcc-sm6375.c
index ad3c4833990d..93164670fbe1 100644
--- a/drivers/clk/qcom/gcc-sm6375.c
+++ b/drivers/clk/qcom/gcc-sm6375.c
@@ -3534,7 +3534,7 @@ static struct gdsc usb30_prim_gdsc = {
.pd = {
.name = "usb30_prim_gdsc",
},
- .pwrsts = PWRSTS_OFF_ON,
+ .pwrsts = PWRSTS_RET_ON,
};

static struct gdsc ufs_phy_gdsc = {
--
2.39.2



2023-03-03 02:29:27

by Konrad Dybcio

[permalink] [raw]
Subject: [PATCH 2/2] clk: qcom: gcc-msm8996: Update the .pwrsts for usb gdsc

The USB controller on MSM8996 doesn't retain its state when the system
goes into low power state and the GDSCs are turned off.

This can be observed by the USB connection not coming back alive after
putting the device into suspend, essentially breaking USB.

Fix this by updating the .pwrsts for the USB GDSCs so they only
transition to retention state in low power.

Signed-off-by: Konrad Dybcio <[email protected]>
---
drivers/clk/qcom/gcc-msm8996.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/qcom/gcc-msm8996.c b/drivers/clk/qcom/gcc-msm8996.c
index e16163706735..e068c9e51441 100644
--- a/drivers/clk/qcom/gcc-msm8996.c
+++ b/drivers/clk/qcom/gcc-msm8996.c
@@ -3455,7 +3455,7 @@ static struct gdsc usb30_gdsc = {
.pd = {
.name = "usb30",
},
- .pwrsts = PWRSTS_OFF_ON,
+ .pwrsts = PWRSTS_RET_ON,
};

static struct gdsc pcie0_gdsc = {
--
2.39.2


2023-03-06 19:36:12

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 1/2] clk: qcom: gcc-sm6375: Update the .pwrsts for usb gdsc

Quoting Konrad Dybcio (2023-03-02 18:29:11)
> The USB controller on sm6375 doesn't retain its state when the system
> goes into low power state and the GDSCs are turned off.
>
> This can be observed by the USB connection not coming back alive after
> putting the device into suspend, essentially breaking USB.
>
> Fix this by updating the .pwrsts for the USB GDSCs so they only
> transition to retention state in low power.

Is this a temporary fix? Is that why there isn't a Fixes tag? If it's a
workaround then please add a TODO comment indicating the USB driver
doesn't work properly.

2023-03-06 22:36:44

by Konrad Dybcio

[permalink] [raw]
Subject: Re: [PATCH 1/2] clk: qcom: gcc-sm6375: Update the .pwrsts for usb gdsc



On 6.03.2023 20:35, Stephen Boyd wrote:
> Quoting Konrad Dybcio (2023-03-02 18:29:11)
>> The USB controller on sm6375 doesn't retain its state when the system
>> goes into low power state and the GDSCs are turned off.
>>
>> This can be observed by the USB connection not coming back alive after
>> putting the device into suspend, essentially breaking USB.
>>
>> Fix this by updating the .pwrsts for the USB GDSCs so they only
>> transition to retention state in low power.
>
> Is this a temporary fix? Is that why there isn't a Fixes tag?
Yeah AFAIU the upstream dwc3-qcom driver is not fully implemented
on the suspend front.

If it's a
> workaround then please add a TODO comment indicating the USB driver
> doesn't work properly.
Will do!

Konrad