diff mbox series

[v2,4/8] scsi: ufs: qcom: Implement the freq_to_gear_speed() vops

Message ID 20250122100214.489749-5-quic_ziqichen@quicinc.com (mailing list archive)
State New
Headers show
Series Support Multi-frequency scale for UFS | expand

Commit Message

Ziqi Chen Jan. 22, 2025, 10:02 a.m. UTC
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>
---

v1 -> v2:
Print out freq and gear info as debugging message.
---
 drivers/ufs/host/ufs-qcom.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

Comments

Bean Huo Jan. 22, 2025, 5:15 p.m. UTC | #1
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>
Eric Biggers Jan. 22, 2025, 6:21 p.m. UTC | #2
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
Bart Van Assche Jan. 22, 2025, 6:23 p.m. UTC | #3
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.
Ziqi Chen Jan. 23, 2025, 7:38 a.m. UTC | #4
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
Ziqi Chen Jan. 23, 2025, 7:39 a.m. UTC | #5
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 mbox series

Patch

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,
 };
 
 /**