Message ID | 20250122100214.489749-5-quic_ziqichen@quicinc.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Support Multi-frequency scale for UFS | expand |
On Wed, 2025-01-22 at 18:02 +0800, Ziqi Chen wrote: > From: Can Guo <quic_cang@quicinc.com> > > Implement the freq_to_gear_speed() vops to map the unipro core clock > frequency to the corresponding maximum supported gear speed. > > Signed-off-by: Can Guo <quic_cang@quicinc.com> > Co-developed-by: Ziqi Chen <quic_ziqichen@quicinc.com> > Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com> Reviewed-by: Bean Huo <beanhuo@micron.com>
On Wed, Jan 22, 2025 at 06:02:10PM +0800, Ziqi Chen wrote: > From: Can Guo <quic_cang@quicinc.com> > > Implement the freq_to_gear_speed() vops to map the unipro core clock > frequency to the corresponding maximum supported gear speed. > > Signed-off-by: Can Guo <quic_cang@quicinc.com> > Co-developed-by: Ziqi Chen <quic_ziqichen@quicinc.com> > Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com> vop, not vops. It's one operation. - Eric
On 1/22/25 2:02 AM, Ziqi Chen wrote: > +static int ufs_qcom_freq_to_gear_speed(struct ufs_hba *hba, unsigned long freq, u32 *gear) > +{ > + int ret = 0; > + > + switch (freq) { > + case 403000000: > + *gear = UFS_HS_G5; > + break; > + case 300000000: > + *gear = UFS_HS_G4; > + break; > + case 201500000: > + *gear = UFS_HS_G3; > + break; > + case 150000000: > + case 100000000: > + *gear = UFS_HS_G2; > + break; > + case 75000000: > + case 37500000: > + *gear = UFS_HS_G1; > + break; > + default: > + ret = -EINVAL; > + dev_err(hba->dev, "%s: Unsupported clock freq : %lu\n", __func__, freq); > + break; > + } > + > + if (!ret) > + dev_dbg(hba->dev, "%s: Freq %lu to Gear %u\n", __func__, freq, *gear); > + > + return ret; > +} Please simplify the above function by returning early in case of an unsupported clock frequency and by removing the 'ret' variable. Thanks, Bart.
On 1/23/2025 2:21 AM, Eric Biggers wrote: > On Wed, Jan 22, 2025 at 06:02:10PM +0800, Ziqi Chen wrote: >> From: Can Guo <quic_cang@quicinc.com> >> >> Implement the freq_to_gear_speed() vops to map the unipro core clock >> frequency to the corresponding maximum supported gear speed. >> >> Signed-off-by: Can Guo <quic_cang@quicinc.com> >> Co-developed-by: Ziqi Chen <quic_ziqichen@quicinc.com> >> Signed-off-by: Ziqi Chen <quic_ziqichen@quicinc.com> > > vop, not vops. It's one operation. > > - Eric Sure, Eric , I will modify it. Thanks for your review. - Ziqi
On 1/23/2025 2:23 AM, Bart Van Assche wrote: > On 1/22/25 2:02 AM, Ziqi Chen wrote: >> +static int ufs_qcom_freq_to_gear_speed(struct ufs_hba *hba, unsigned >> long freq, u32 *gear) >> +{ >> + int ret = 0; >> + >> + switch (freq) { >> + case 403000000: >> + *gear = UFS_HS_G5; >> + break; >> + case 300000000: >> + *gear = UFS_HS_G4; >> + break; >> + case 201500000: >> + *gear = UFS_HS_G3; >> + break; >> + case 150000000: >> + case 100000000: >> + *gear = UFS_HS_G2; >> + break; >> + case 75000000: >> + case 37500000: >> + *gear = UFS_HS_G1; >> + break; >> + default: >> + ret = -EINVAL; >> + dev_err(hba->dev, "%s: Unsupported clock freq : %lu\n", >> __func__, freq); >> + break; >> + } >> + >> + if (!ret) >> + dev_dbg(hba->dev, "%s: Freq %lu to Gear %u\n", __func__, >> freq, *gear); >> + >> + return ret; >> +} > > Please simplify the above function by returning early in case of an > unsupported clock frequency and by removing the 'ret' variable. > > Thanks, > > Bart. > Hi Bart, looks like a good way , thanks~ -Ziqi
diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index a1eb3cab45e4..77cc1b8019a9 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -1804,6 +1804,40 @@ static int ufs_qcom_config_esi(struct ufs_hba *hba) return ret; } +static int ufs_qcom_freq_to_gear_speed(struct ufs_hba *hba, unsigned long freq, u32 *gear) +{ + int ret = 0; + + switch (freq) { + case 403000000: + *gear = UFS_HS_G5; + break; + case 300000000: + *gear = UFS_HS_G4; + break; + case 201500000: + *gear = UFS_HS_G3; + break; + case 150000000: + case 100000000: + *gear = UFS_HS_G2; + break; + case 75000000: + case 37500000: + *gear = UFS_HS_G1; + break; + default: + ret = -EINVAL; + dev_err(hba->dev, "%s: Unsupported clock freq : %lu\n", __func__, freq); + break; + } + + if (!ret) + dev_dbg(hba->dev, "%s: Freq %lu to Gear %u\n", __func__, freq, *gear); + + return ret; +} + /* * struct ufs_hba_qcom_vops - UFS QCOM specific variant operations * @@ -1834,6 +1868,7 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = { .op_runtime_config = ufs_qcom_op_runtime_config, .get_outstanding_cqs = ufs_qcom_get_outstanding_cqs, .config_esi = ufs_qcom_config_esi, + .freq_to_gear_speed = ufs_qcom_freq_to_gear_speed, }; /**