2020-10-27 00:05:27

by Asutosh Das (asd)

[permalink] [raw]
Subject: [PATCH v1 1/1] scsi: ufs: Keep UFS regulators on when autobkops enabled

From: "Bao D. Nguyen" <[email protected]>

When bkops is enabled, the UFS device may do bkops during suspend.
With bkops enabled during suspend, keep the regulators
in active operation configuration, allowing the device to draw
high power to support bkops and avoid over current event.

Signed-off-by: Bao D. Nguyen <[email protected]>
Signed-off-by: Asutosh Das <[email protected]>
---
drivers/scsi/ufs/ufshcd.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 47c544d..a94543c 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -8523,7 +8523,9 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
if (ret)
goto set_dev_active;

- ufshcd_vreg_set_lpm(hba);
+ /* Device may perform bkops if autobkops is enabled */
+ if (!hba->auto_bkops_enabled)
+ ufshcd_vreg_set_lpm(hba);

disable_clks:
/*
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.


2020-10-27 13:59:36

by Stanley Chu

[permalink] [raw]
Subject: Re: [PATCH v1 1/1] scsi: ufs: Keep UFS regulators on when autobkops enabled

Hi,

On Mon, 2020-10-26 at 14:31 -0700, Asutosh Das wrote:
> From: "Bao D. Nguyen" <[email protected]>
>
> When bkops is enabled, the UFS device may do bkops during suspend.
> With bkops enabled during suspend, keep the regulators
> in active operation configuration, allowing the device to draw
> high power to support bkops and avoid over current event.
>
> Signed-off-by: Bao D. Nguyen <[email protected]>
> Signed-off-by: Asutosh Das <[email protected]>
> ---
> drivers/scsi/ufs/ufshcd.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index 47c544d..a94543c 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -8523,7 +8523,9 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op)
> if (ret)
> goto set_dev_active;
>
> - ufshcd_vreg_set_lpm(hba);
> + /* Device may perform bkops if autobkops is enabled */
> + if (!hba->auto_bkops_enabled)
> + ufshcd_vreg_set_lpm(hba);

If auto bkops is allowed and enabled during runtime suspend (currently
auto bkops is allow in runtime suspend only, and not allowed in system
suspend), hba->dev_info.b_rpm_dev_flush_capable would be true and keep
the current device power mode, say Active Power Mode. In this case,
regulator would not be set as lpm mode by ufshcd_vreg_set_lpm().

Please correct me if I was wrong.

Thanks,
Stanley Chu