> > 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