Re: [PATCH 4/8] scsi: ufs: qcom: Implement the freq_to_gear_speed() vops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi Avri,

Thanks for your review~

On 1/17/2025 5:40 AM, Avri Altman wrote:
From: Can Guo <quic_cang@xxxxxxxxxxx>

Implement the freq_to_gear_speed() vops to map the unipro core clock
frequency to the corresponding maximum supported gear speed.

Co-developed-by: Ziqi Chen <quic_ziqichen@xxxxxxxxxxx>
Signed-off-by: Ziqi Chen <quic_ziqichen@xxxxxxxxxxx>
Signed-off-by: Can Guo <quic_cang@xxxxxxxxxxx>
---
  drivers/ufs/host/ufs-qcom.c | 32 ++++++++++++++++++++++++++++++++
  1 file changed, 32 insertions(+)

diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index
1e8a23eb8c13..64263fa884f5 100644
--- a/drivers/ufs/host/ufs-qcom.c
+++ b/drivers/ufs/host/ufs-qcom.c
@@ -1803,6 +1803,37 @@ 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) {
Maybe you can use here the UNIPRO_CORE_CLK_FREQ_xx
The UNIPRO_CORE_CLK_FREQ_xx is used for "cycles_in_1us" which be handled by ceil() function. It is not an exact frequency number and is not appropriate for use here.


Thanks,
Avri

-Ziqi

+       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, "Unsupported clock freq\n");
+               break;
+       }
+
+       return ret;
+}
+
  /*
   * struct ufs_hba_qcom_vops - UFS QCOM specific variant operations
   *
@@ -1833,6 +1864,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,
  };

  /**
--
2.34.1





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux