]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: ufs: ufs-qcom: Add support for limiting HS gear and rate
authorRam Kumar Dwivedi <quic_rdwivedi@quicinc.com>
Wed, 17 Sep 2025 14:09:33 +0000 (19:39 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 25 Sep 2025 02:27:47 +0000 (22:27 -0400)
Add support to limit Tx/Rx gear and rate during UFS initialization based
on DT property.

Also update the phy_gear to ensure PHY calibrations align with the
required gear and rate.

Signed-off-by: Ram Kumar Dwivedi <quic_rdwivedi@quicinc.com>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/host/ufs-qcom.c

index 4b8afaf12f2e5768931cc59d73ab8b0e82785233..749e6912a9c1bca91a6da777e0eafb729067039c 100644 (file)
@@ -1092,6 +1092,18 @@ static void ufs_qcom_set_phy_gear(struct ufs_qcom_host *host)
        }
 }
 
+static void ufs_qcom_parse_gear_limits(struct ufs_hba *hba)
+{
+       struct ufs_qcom_host *host = ufshcd_get_variant(hba);
+       struct ufs_host_params *host_params = &host->host_params;
+       u32 hs_gear_old = host_params->hs_tx_gear;
+
+       ufshcd_parse_gear_limits(hba, host_params);
+       if (host_params->hs_tx_gear != hs_gear_old) {
+               host->phy_gear = host_params->hs_tx_gear;
+       }
+}
+
 static void ufs_qcom_set_host_params(struct ufs_hba *hba)
 {
        struct ufs_qcom_host *host = ufshcd_get_variant(hba);
@@ -1333,6 +1345,7 @@ static int ufs_qcom_init(struct ufs_hba *hba)
        ufs_qcom_advertise_quirks(hba);
        ufs_qcom_set_host_params(hba);
        ufs_qcom_set_phy_gear(host);
+       ufs_qcom_parse_gear_limits(hba);
 
        err = ufs_qcom_ice_init(host);
        if (err)