RE: [PATCH 4/8] scsi: ufs: qcom: Implement the freq_to_gear_speed() vops
From: Avri Altman
Date: Thu Jan 16 2025 - 16:40:34 EST
> 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 ?
Thanks,
Avri
> + 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