diff mbox series

[2/2] clk: qcom: mmcc-msm8974: fix MDSS_GDSC power flags

Message ID 20230507175335.2321503-2-dmitry.baryshkov@linaro.org
State Accepted
Commit 4e13c7a55cf752887f2b8d8008711dbbc64ea796
Headers show
Series None | expand

Commit Message

Dmitry Baryshkov May 7, 2023, 5:53 p.m. UTC
Using PWRSTS_RET on msm8974's MDSS_GDSC causes display to stop working.
The gdsc doesn't fully come out of retention mode. Change it's pwrsts
flags to PWRSTS_OFF_ON.

Fixes: d399723950c4 ("clk: qcom: gdsc: Fix the handling of PWRSTS_RET support")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
 drivers/clk/qcom/mmcc-msm8974.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Dmitry Baryshkov May 8, 2023, 11:36 a.m. UTC | #1
On 08/05/2023 11:27, Konrad Dybcio wrote:
> 
> 
> On 7.05.2023 19:53, Dmitry Baryshkov wrote:
>> Using PWRSTS_RET on msm8974's MDSS_GDSC causes display to stop working.
>> The gdsc doesn't fully come out of retention mode. Change it's pwrsts
>> flags to PWRSTS_OFF_ON.
>>
>> Fixes: d399723950c4 ("clk: qcom: gdsc: Fix the handling of PWRSTS_RET support")
>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> ---
> This is a stopgap solution, not exactly a fix, all signs on Heaven and
> Earth say that 8974 should support retention on this GDSC!
> 
> *although*
> 
> pre-v2.2 chips don't

Mine is apq8074 v2.2, if I'm not mistaken.

> 
> Konrad
>>   drivers/clk/qcom/mmcc-msm8974.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
>> index aa29c79fcd55..277ef0065aae 100644
>> --- a/drivers/clk/qcom/mmcc-msm8974.c
>> +++ b/drivers/clk/qcom/mmcc-msm8974.c
>> @@ -2401,7 +2401,7 @@ static struct gdsc mdss_gdsc = {
>>   	.pd = {
>>   		.name = "mdss",
>>   	},
>> -	.pwrsts = PWRSTS_RET_ON,
>> +	.pwrsts = PWRSTS_OFF_ON,
>>   };
>>   
>>   static struct gdsc camss_jpeg_gdsc = {
Manivannan Sadhasivam May 9, 2023, 5:50 a.m. UTC | #2
On Sun, May 07, 2023 at 08:53:35PM +0300, Dmitry Baryshkov wrote:
> Using PWRSTS_RET on msm8974's MDSS_GDSC causes display to stop working.
> The gdsc doesn't fully come out of retention mode. Change it's pwrsts
> flags to PWRSTS_OFF_ON.
> 

What does "stop working" implies? Does it work during boot and randomly stopped
working or it stopped working after resume from suspend?

Even though reverting to non-retention mode works, I think the issue might be
somewhere else. Like the vote might be missing to get the GDSC out of retention
mode.

- Mani

> Fixes: d399723950c4 ("clk: qcom: gdsc: Fix the handling of PWRSTS_RET support")
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> ---
>  drivers/clk/qcom/mmcc-msm8974.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
> index aa29c79fcd55..277ef0065aae 100644
> --- a/drivers/clk/qcom/mmcc-msm8974.c
> +++ b/drivers/clk/qcom/mmcc-msm8974.c
> @@ -2401,7 +2401,7 @@ static struct gdsc mdss_gdsc = {
>  	.pd = {
>  		.name = "mdss",
>  	},
> -	.pwrsts = PWRSTS_RET_ON,
> +	.pwrsts = PWRSTS_OFF_ON,
>  };
>  
>  static struct gdsc camss_jpeg_gdsc = {
> -- 
> 2.39.2
>
Dmitry Baryshkov May 29, 2023, 11:47 p.m. UTC | #3
On 11/05/2023 11:15, Manivannan Sadhasivam wrote:
> On Tue, May 09, 2023 at 02:20:07PM +0300, Dmitry Baryshkov wrote:
>> On Tue, 9 May 2023 at 08:50, Manivannan Sadhasivam
>> <manivannan.sadhasivam@linaro.org> wrote:
>>>
>>> On Sun, May 07, 2023 at 08:53:35PM +0300, Dmitry Baryshkov wrote:
>>>> Using PWRSTS_RET on msm8974's MDSS_GDSC causes display to stop working.
>>>> The gdsc doesn't fully come out of retention mode. Change it's pwrsts
>>>> flags to PWRSTS_OFF_ON.
>>>>
>>>
>>> What does "stop working" implies? Does it work during boot and randomly stopped
>>> working or it stopped working after resume from suspend?
>>
>> It stops working during the boot. I observed the MDP not starting up
>> properly. Mea culpa, I did not look deep enough into the details, just
>> stomped upon this change which fixes the problem for me.
>>
> 
> IIUC, GDSC will be transitioned to retention mode only if the parent domain goes
> to low power mode. So if the MDSS GDSC goes to retention mode during boot, then
> it suggests that the parent domain is not voted properly. Unless I misunderstood
> something...

Not sure, what is the parent domain here. Note, it is a pretty old 
implementation.

> 
> Or is the GDSC behavior changes between RPM and RPMh?
> 
> - Mani
> 
>>>
>>> Even though reverting to non-retention mode works, I think the issue might be
>>> somewhere else. Like the vote might be missing to get the GDSC out of retention
>>> mode.
>>
>> I don't think there is a vote missing. The driver votes on MDSS_GDSC
>> before enabling access to any of the registers from the MDSS region.
>>
>>>
>>> - Mani
>>>
>>>> Fixes: d399723950c4 ("clk: qcom: gdsc: Fix the handling of PWRSTS_RET support")
>>>> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>>> ---
>>>>   drivers/clk/qcom/mmcc-msm8974.c | 2 +-
>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
>>>> index aa29c79fcd55..277ef0065aae 100644
>>>> --- a/drivers/clk/qcom/mmcc-msm8974.c
>>>> +++ b/drivers/clk/qcom/mmcc-msm8974.c
>>>> @@ -2401,7 +2401,7 @@ static struct gdsc mdss_gdsc = {
>>>>        .pd = {
>>>>                .name = "mdss",
>>>>        },
>>>> -     .pwrsts = PWRSTS_RET_ON,
>>>> +     .pwrsts = PWRSTS_OFF_ON,
>>>>   };
>>>>
>>>>   static struct gdsc camss_jpeg_gdsc = {
>>>> --
>>>> 2.39.2
>>>>
>>>
>>> --
>>> மணிவண்ணன் சதாசிவம்
>>
>>
>>
>> -- 
>> With best wishes
>> Dmitry
>
diff mbox series

Patch

diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
index aa29c79fcd55..277ef0065aae 100644
--- a/drivers/clk/qcom/mmcc-msm8974.c
+++ b/drivers/clk/qcom/mmcc-msm8974.c
@@ -2401,7 +2401,7 @@  static struct gdsc mdss_gdsc = {
 	.pd = {
 		.name = "mdss",
 	},
-	.pwrsts = PWRSTS_RET_ON,
+	.pwrsts = PWRSTS_OFF_ON,
 };
 
 static struct gdsc camss_jpeg_gdsc = {