| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Asutosh Das <asutoshd@codeaurora.org> |
| Date: Tue, 7 Aug 2018 08:54:30 +0530 |
| Subject: FROMLIST: scsi: ufs: set load before setting voltage in regulators |
| |
| This sequence change is required to avoid dips in voltage |
| during boot-up. |
| |
| Apparently, this dip is caused because in the original |
| sequence, the regulators are initialized in lpm mode. |
| And then when the load is set to high, and more current |
| is drawn, than is allowed in lpm, the dip is seen. |
| |
| Bug: 143632303 |
| Change-Id: I1575ad507233dc8e1b0ce9368000991e4e85dc6d |
| Link: https://lore.kernel.org/patchwork/patch/1149889/ |
| Signed-off-by: Asutosh Das <asutoshd@codeaurora.org> |
| Signed-off-by: Can Guo <cang@codeaurora.org> |
| Signed-off-by: Asutosh Das <asutoshd@codeaurora.org> |
| --- |
| drivers/scsi/ufs/ufshcd.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c |
| index 011a55640694..31b44579b015 100644 |
| --- a/drivers/scsi/ufs/ufshcd.c |
| +++ b/drivers/scsi/ufs/ufshcd.c |
| @@ -7235,6 +7235,11 @@ static int ufshcd_config_vreg(struct device *dev, |
| name = vreg->name; |
| |
| if (regulator_count_voltages(reg) > 0) { |
| + uA_load = on ? vreg->max_uA : 0; |
| + ret = ufshcd_config_vreg_load(dev, vreg, uA_load); |
| + if (ret) |
| + goto out; |
| + |
| if (vreg->min_uV && vreg->max_uV) { |
| min_uV = on ? vreg->min_uV : 0; |
| ret = regulator_set_voltage(reg, min_uV, vreg->max_uV); |
| @@ -7245,11 +7250,6 @@ static int ufshcd_config_vreg(struct device *dev, |
| goto out; |
| } |
| } |
| - |
| - uA_load = on ? vreg->max_uA : 0; |
| - ret = ufshcd_config_vreg_load(dev, vreg, uA_load); |
| - if (ret) |
| - goto out; |
| } |
| out: |
| return ret; |