scsi: ufs: Configure Vccq/Vccq2 with supplied load in LPM

Configure the ufs vccq/vccq2 regulator with supplied load instead
of fixed load in LPM mode.

To configure regulator in LPM mode, on some targets explicit load
(<10mA or <30mA) has to be supplied. On other targets, clients need
to set load exactly as 0. On second category of targets, any load
value other than 0, pushes the regulator to NMP mode.

Adding support for reading load value for Vccq regulator from
device tree. If this property is not present, the regulator would
be set with default load (1mA).

Change-Id: Ifef004f2ea4d3612bc8410b82011fbcfc293ea6f
Signed-off-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
Signed-off-by: Nitin Rawat <nitirawa@codeaurora.org>
This commit is contained in:
Veerabhadrarao Badiganti 2020-03-20 16:38:36 +05:30 • committed by Nitin Rawat
commit 7226aeac4d
2 changed files with 19 additions and 1 deletions

View file

@ -158,6 +158,12 @@ static int ufshcd_populate_vreg(struct device *dev, const char *name,
vreg->max_uA = 0;
}
#if defined(CONFIG_SCSI_UFSHCD_QTI)
snprintf(prop_name, MAX_PROP_SIZE, "%s-min-microamp", name);
if (of_property_read_u32(np, prop_name, &vreg->min_uA))
vreg->min_uA = UFS_VREG_LPM_LOAD_UA;
#endif
if (!strcmp(name, "vcc")) {
if (of_property_read_bool(np, "vcc-supply-1p8")) {
vreg->min_uV = UFS_VREG_VCC_1P8_MIN_UV;

View file

@ -7822,12 +7822,24 @@ static int ufshcd_config_vreg_load(struct device *dev, struct ufs_vreg *vreg,
return ret;
}
#if defined(CONFIG_SCSI_UFSHCD_QTI)
static inline int ufshcd_config_vreg_lpm(struct ufs_hba *hba,
struct ufs_vreg *vreg)
{
if (!vreg)
return 0;
else if (vreg->unused)
return 0;
else
return ufshcd_config_vreg_load(hba->dev, vreg, vreg->min_uA);
}
#else
static inline int ufshcd_config_vreg_lpm(struct ufs_hba *hba,
struct ufs_vreg *vreg)
{
return ufshcd_config_vreg_load(hba->dev, vreg, UFS_VREG_LPM_LOAD_UA);
}
#endif
static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba,
struct ufs_vreg *vreg)