summaryrefslogtreecommitdiff
path: root/drivers/ufs/host/ufs-qcom.h
diff options
context:
space:
mode:
authorBao D. Nguyen <quic_nguyenb@quicinc.com>2023-12-02 15:36:14 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2023-12-14 06:37:21 +0300
commitdc7c948d74e12ed9f40328696b301860243a1ae8 (patch)
treeca65a17d01dd35746a49e86c3d15d3a902369165 /drivers/ufs/host/ufs-qcom.h
parenta68abdadfe13fa95a306363fa284b5cf0b79776d (diff)
downloadlinux-dc7c948d74e12ed9f40328696b301860243a1ae8.tar.xz
scsi: ufs: ufs-qcom: Add support for UFS device version detection
Start from HW ver 5, a spare register in UFS host controller is added and used to indicate the UFS device version. The spare register is populated by bootloader for now, but in future it will be populated by HW automatically during link startup with its best efforts in any boot stage prior to Linux. During host driver init, read the spare register, if it is not populated with a UFS device version, go ahead with the dual init mechanism. If a UFS device version is in there, use the UFS device version together with host controller's HW version to decide the proper PHY gear which should be used to configure the UFS PHY without going through the second init. Signed-off-by: Bao D. Nguyen <quic_nguyenb@quicinc.com> Signed-off-by: Can Guo <quic_cang@quicinc.com> Link: https://lore.kernel.org/r/1701520577-31163-9-git-send-email-quic_cang@quicinc.com Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Reviewed-by: Nitin Rawat <quic_nitirawa@quicinc.com> Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/ufs/host/ufs-qcom.h')
-rw-r--r--drivers/ufs/host/ufs-qcom.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ufs/host/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h
index 11419ebd2082..32e51d90e8e7 100644
--- a/drivers/ufs/host/ufs-qcom.h
+++ b/drivers/ufs/host/ufs-qcom.h
@@ -23,6 +23,8 @@
#define UFS_HW_VER_MINOR_MASK GENMASK(27, 16)
#define UFS_HW_VER_STEP_MASK GENMASK(15, 0)
+#define UFS_DEV_VER_MAJOR_MASK GENMASK(7, 4)
+
/* vendor specific pre-defined parameters */
#define SLOW 1
#define FAST 2
@@ -54,6 +56,8 @@ enum {
UFS_AH8_CFG = 0xFC,
REG_UFS_CFG3 = 0x271C,
+
+ REG_UFS_DEBUG_SPARE_CFG = 0x284C,
};
/* QCOM UFS host controller vendor specific debug registers */