RE: [PATCH v2 2/4] scsi: ufs: Update VCCQ2 and VCCQ min/max voltage hard codes

From: Avri Altman
Date: Tue Nov 19 2019 - 07:41:17 EST


>
> On 2019-11-18 15:15, Avri Altman wrote:
> >>
> >> From: Can Guo <cang@xxxxxxxxxxxxxx>
> >>
> >> Per UFS 3.0 JEDEC standard, the VCCQ2 min voltage is 1.7v and the
> >> VCCQ voltage range is 1.14v ~ 1.26v. Update their hard codes
> >> accordingly to make sure they work in a safe range compliant for ver
> >> 1.0/2.0/2.1/3.0 UFS devices.
> > So to keep it safe, we need to use largest range:
> > min_uV = min over all spec ranges, and max_uV = max over all spec
> > ranges.
> > Meaning leave it as it is if we want to be backward compatible with
> > UFS1.0.
> >
> > Thanks,
> > Avri
> >
>
> Hi Avri,
>
> Sorry I don't quite follow you here.
> Leaving it as it is means for UFS2.1 devices, when boot up, if we call
> regulator_set_voltage(1.65, 1.95) to setup its VCCQ2,
> regulator_set_voltage() will
> give you 1.65v on VCCQ2 if the voltage level of this regulator is wider, say (1.60,
> 1.95).
> Meaning you will finally set 1.65v to VCCQ2. But 1.65v is out of spec for UFS
> v2.1 as it requires min voltage to be 1.7v on VCCQ2. So, the smallest range is
> safe.
> Of course, in real board design, the regulator's voltage level is limited/designed
> by power team to be in a safe range, say (1.8, 1.92), so that calling
> regulator_set_voltage(1.65, 1.95) still gives you 1.8v. But it does not mean the
> current hard codes are compliant for all UFS devices.
You are correct - the narrowest the range the better - as long as you don't cross the limits of previous spec.
So changing 1.1 -> 1.14 and 1.65 -> 1.7 is fine.
While at it, Vccq max in UFS3.0 is 1.26, why not change 1.3 -> 1.26, like you indicated in your commit log?

Thanks,
Avri

>
> Best Regards,
> Can Guo.
>
> >>
> >> Signed-off-by: Can Guo <cang@xxxxxxxxxxxxxx>
> >> ---
> >> drivers/scsi/ufs/ufs.h | 4 ++--
> >> 1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index
> >> 385bac8..9df4f4d
> >> 100644
> >> --- a/drivers/scsi/ufs/ufs.h
> >> +++ b/drivers/scsi/ufs/ufs.h
> >> @@ -500,9 +500,9 @@ struct ufs_query_res {
> >> #define UFS_VREG_VCC_MAX_UV 3600000 /* uV */
> >> #define UFS_VREG_VCC_1P8_MIN_UV 1700000 /* uV */
> >> #define UFS_VREG_VCC_1P8_MAX_UV 1950000 /* uV */
> >> -#define UFS_VREG_VCCQ_MIN_UV 1100000 /* uV */
> >> +#define UFS_VREG_VCCQ_MIN_UV 1140000 /* uV */
> >> #define UFS_VREG_VCCQ_MAX_UV 1300000 /* uV */
> >> -#define UFS_VREG_VCCQ2_MIN_UV 1650000 /* uV */
> >> +#define UFS_VREG_VCCQ2_MIN_UV 1700000 /* uV */
> >> #define UFS_VREG_VCCQ2_MAX_UV 1950000 /* uV */
> >>
> >> /*
> >> --
> >> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
> >> Forum, a Linux Foundation Collaborative Project