Commit c02fe9e2 authored by Can Guo's avatar Can Guo Committed by Martin K. Petersen
Browse files

scsi: ufs: qcom: Implement the freq_to_gear_speed() vop



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

Signed-off-by: default avatarCan Guo <quic_cang@quicinc.com>
Co-developed-by: default avatarZiqi Chen <quic_ziqichen@quicinc.com>
Signed-off-by: default avatarZiqi Chen <quic_ziqichen@quicinc.com>
Link: https://lore.kernel.org/r/20250213080008.2984807-5-quic_ziqichen@quicinc.com


Reviewed-by: default avatarBean Huo <beanhuo@micron.com>
Tested-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: default avatarPeter Wang <peter.wang@mediatek.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent d7bead60
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -1858,6 +1858,36 @@ static int ufs_qcom_config_esi(struct ufs_hba *hba)
	return ret;
}

static u32 ufs_qcom_freq_to_gear_speed(struct ufs_hba *hba, unsigned long freq)
{
	u32 gear = 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:
		dev_err(hba->dev, "%s: Unsupported clock freq : %lu\n", __func__, freq);
		break;
	}

	return gear;
}

/*
 * struct ufs_hba_qcom_vops - UFS QCOM specific variant operations
 *
@@ -1886,6 +1916,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,
};

/**