Revert "firmware: qcom_scm: Clear download bit during reboot"

Message ID 1684408823-5898-1-git-send-email-quic_mojha@quicinc.com
State New
Headers
Series Revert "firmware: qcom_scm: Clear download bit during reboot" |

Commit Message

Mukesh Ojha May 18, 2023, 11:20 a.m. UTC
  This reverts commit 781d32d1c970 as it causes regression(reboot
does not work) for target like IPQ4019 that does not support
download mode scm calls end to end.

Fixes: 781d32d1c970 ("firmware: qcom_scm: Clear download bit during reboot")
Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
---
 drivers/firmware/qcom_scm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Mukesh Ojha May 18, 2023, 11:38 a.m. UTC | #1
Hey Robert,

https://lore.kernel.org/linux-arm-msm/76943268-3982-deaf-9736-429dd51e01b0@gmail.com/

Would be good if you can provide your Tested-by ?

--Mukesh

On 5/18/2023 4:50 PM, Mukesh Ojha wrote:
> This reverts commit 781d32d1c970 as it causes regression(reboot
> does not work) for target like IPQ4019 that does not support
> download mode scm calls end to end.
> 
> Fixes: 781d32d1c970 ("firmware: qcom_scm: Clear download bit during reboot")
> Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
> ---
>   drivers/firmware/qcom_scm.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
> index fde33acd46b7..a4bb9265d9c0 100644
> --- a/drivers/firmware/qcom_scm.c
> +++ b/drivers/firmware/qcom_scm.c
> @@ -1508,7 +1508,8 @@ static int qcom_scm_probe(struct platform_device *pdev)
>   static void qcom_scm_shutdown(struct platform_device *pdev)
>   {
>   	/* Clean shutdown, disable download mode to allow normal restart */
> -	qcom_scm_set_download_mode(false);
> +	if (download_mode)
> +		qcom_scm_set_download_mode(false);
>   }
>   
>   static const struct of_device_id qcom_scm_dt_match[] = {
  
Robert Marko May 18, 2023, 11:46 a.m. UTC | #2
> This reverts commit 781d32d1c970 as it causes regression(reboot
> does not work) for target like IPQ4019 that does not support
> download mode scm calls end to end.
>
> Fixes: 781d32d1c970 ("firmware: qcom_scm: Clear download bit during reboot")
> Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
> ---
>   drivers/firmware/qcom_scm.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
> index fde33acd46b7..a4bb9265d9c0 100644
> --- a/drivers/firmware/qcom_scm.c
> +++ b/drivers/firmware/qcom_scm.c
> @@ -1508,7 +1508,8 @@ static int qcom_scm_probe(struct platform_device *pdev)
>   static void qcom_scm_shutdown(struct platform_device *pdev)
>   {
>   	/* Clean shutdown, disable download mode to allow normal restart */
> -	qcom_scm_set_download_mode(false);
> +	if (download_mode)
> +		qcom_scm_set_download_mode(false);
>   }
>   
>   static const struct of_device_id qcom_scm_dt_match[] = {
>
Tested-by: Robert Marko <robimarko@gmail.com>
  
Bjorn Andersson May 20, 2023, 2:12 a.m. UTC | #3
On Thu, May 18, 2023 at 04:50:23PM +0530, Mukesh Ojha wrote:
> This reverts commit 781d32d1c970 as it causes regression(reboot
> does not work) for target like IPQ4019 that does not support
> download mode scm calls end to end.
> 

What do you mean with "reboot does not work"?

Does qcom_scm_set_download_mode() crash the board? Does the reboot
always end up in download mode? Or some other form of "not work"?

Regards,
Bjorn

> Fixes: 781d32d1c970 ("firmware: qcom_scm: Clear download bit during reboot")
> Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
> ---
>  drivers/firmware/qcom_scm.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
> index fde33acd46b7..a4bb9265d9c0 100644
> --- a/drivers/firmware/qcom_scm.c
> +++ b/drivers/firmware/qcom_scm.c
> @@ -1508,7 +1508,8 @@ static int qcom_scm_probe(struct platform_device *pdev)
>  static void qcom_scm_shutdown(struct platform_device *pdev)
>  {
>  	/* Clean shutdown, disable download mode to allow normal restart */
> -	qcom_scm_set_download_mode(false);
> +	if (download_mode)
> +		qcom_scm_set_download_mode(false);
>  }
>  
>  static const struct of_device_id qcom_scm_dt_match[] = {
> -- 
> 2.7.4
>
  
Mukesh Ojha May 23, 2023, 7:53 a.m. UTC | #4
+Robert

On 5/20/2023 7:42 AM, Bjorn Andersson wrote:
> On Thu, May 18, 2023 at 04:50:23PM +0530, Mukesh Ojha wrote:
>> This reverts commit 781d32d1c970 as it causes regression(reboot
>> does not work) for target like IPQ4019 that does not support
>> download mode scm calls end to end.
>>
> 
> What do you mean with "reboot does not work"?
> 
> Does qcom_scm_set_download_mode() crash the board? Does the reboot
> always end up in download mode? Or some other form of "not work"?

As per the discussion here, it seems qcom_scm_set_download_mode()
does not work on some legacy target like IPQ4019..may be because
firmware does not have the support..

https://lore.kernel.org/lkml/76943268-3982-deaf-9736-429dd51e01b0@gmail.com/

-- Mukesh

> 
> Regards,
> Bjorn
> 
>> Fixes: 781d32d1c970 ("firmware: qcom_scm: Clear download bit during reboot")
>> Signed-off-by: Mukesh Ojha <quic_mojha@quicinc.com>
>> ---
>>   drivers/firmware/qcom_scm.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
>> index fde33acd46b7..a4bb9265d9c0 100644
>> --- a/drivers/firmware/qcom_scm.c
>> +++ b/drivers/firmware/qcom_scm.c
>> @@ -1508,7 +1508,8 @@ static int qcom_scm_probe(struct platform_device *pdev)
>>   static void qcom_scm_shutdown(struct platform_device *pdev)
>>   {
>>   	/* Clean shutdown, disable download mode to allow normal restart */
>> -	qcom_scm_set_download_mode(false);
>> +	if (download_mode)
>> +		qcom_scm_set_download_mode(false);
>>   }
>>   
>>   static const struct of_device_id qcom_scm_dt_match[] = {
>> -- 
>> 2.7.4
>>
  

Patch

diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
index fde33acd46b7..a4bb9265d9c0 100644
--- a/drivers/firmware/qcom_scm.c
+++ b/drivers/firmware/qcom_scm.c
@@ -1508,7 +1508,8 @@  static int qcom_scm_probe(struct platform_device *pdev)
 static void qcom_scm_shutdown(struct platform_device *pdev)
 {
 	/* Clean shutdown, disable download mode to allow normal restart */
-	qcom_scm_set_download_mode(false);
+	if (download_mode)
+		qcom_scm_set_download_mode(false);
 }
 
 static const struct of_device_id qcom_scm_dt_match[] = {