2023-05-18 11:45:07

by Mukesh Ojha

[permalink] [raw]
Subject: [PATCH] Revert "firmware: qcom_scm: Clear download bit during reboot"

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 <[email protected]>
---
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



2023-05-18 11:49:31

by Robert Marko

[permalink] [raw]
Subject: Re: [PATCH] Revert "firmware: qcom_scm: Clear download bit during reboot"

> 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 <[email protected]>
> ---
> 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 <[email protected]>


2023-05-18 12:40:09

by Mukesh Ojha

[permalink] [raw]
Subject: Re: [PATCH] Revert "firmware: qcom_scm: Clear download bit during reboot"

Hey Robert,

https://lore.kernel.org/linux-arm-msm/[email protected]/

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 <[email protected]>
> ---
> 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[] = {

2023-05-20 02:16:25

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH] Revert "firmware: qcom_scm: Clear download bit during reboot"

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 <[email protected]>
> ---
> 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
>

2023-05-23 07:57:28

by Mukesh Ojha

[permalink] [raw]
Subject: Re: [PATCH] Revert "firmware: qcom_scm: Clear download bit during reboot"

+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/[email protected]/

-- Mukesh

>
> Regards,
> Bjorn
>
>> Fixes: 781d32d1c970 ("firmware: qcom_scm: Clear download bit during reboot")
>> Signed-off-by: Mukesh Ojha <[email protected]>
>> ---
>> 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
>>