linux/drivers/phy/qualcomm/phy-qcom-qmp-qserdes-com-v6.h
Can Guo b34ae8598c phy: qualcomm: phy-qcom-qmp-ufs: Add High Speed Gear 5 support for SM8550
On SM8550, two sets of UFS PHY settings are provided, one set is to support
HS-G5, another set is to support HS-G4 and lower gears. The two sets of PHY
settings are programming different values to different registers, mixing
the two sets and/or overwriting one set with another set is definitely not
blessed by UFS PHY designers.

To add HS-G5 support for SM8550, split the two sets of PHY settings into
their dedicated overlay tables, only the common parts of the two sets of
PHY settings are left in the .tbls.

Consider we are going to add even higher gear support in future, to avoid
adding more tables with different names, rename the .tbls_hs_g4 and make it
an array, a size of 2 is enough as of now.

In this case, .tbls alone is not a complete set of PHY settings, so either
tbls_hs_overlay[0] or tbls_hs_overlay[1] must be applied on top of the
.tbls to become a complete set of PHY settings.

Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Can Guo <quic_cang@quicinc.com>
Link: https://lore.kernel.org/r/1703557892-1822-1-git-send-email-quic_cang@quicinc.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
2024-01-23 19:31:36 +05:30

90 lines
3.8 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2023, Linaro Limited
*/
#ifndef QCOM_PHY_QMP_QSERDES_COM_V6_H_
#define QCOM_PHY_QMP_QSERDES_COM_V6_H_
/* Only for QMP V6 PHY - QSERDES COM registers */
#define QSERDES_V6_COM_SSC_STEP_SIZE1_MODE1 0x00
#define QSERDES_V6_COM_SSC_STEP_SIZE2_MODE1 0x04
#define QSERDES_V6_COM_CP_CTRL_MODE1 0x10
#define QSERDES_V6_COM_PLL_RCTRL_MODE1 0x14
#define QSERDES_V6_COM_PLL_CCTRL_MODE1 0x18
#define QSERDES_V6_COM_CORECLK_DIV_MODE1 0x1c
#define QSERDES_V6_COM_LOCK_CMP1_MODE1 0x20
#define QSERDES_V6_COM_LOCK_CMP2_MODE1 0x24
#define QSERDES_V6_COM_DEC_START_MODE1 0x28
#define QSERDES_V6_COM_DEC_START_MSB_MODE1 0x2c
#define QSERDES_V6_COM_DIV_FRAC_START1_MODE1 0x30
#define QSERDES_V6_COM_DIV_FRAC_START2_MODE1 0x34
#define QSERDES_V6_COM_DIV_FRAC_START3_MODE1 0x38
#define QSERDES_V6_COM_HSCLK_SEL_1 0x3c
#define QSERDES_V6_COM_INTEGLOOP_GAIN0_MODE1 0x40
#define QSERDES_V6_COM_INTEGLOOP_GAIN1_MODE1 0x44
#define QSERDES_V6_COM_VCO_TUNE1_MODE1 0x48
#define QSERDES_V6_COM_VCO_TUNE2_MODE1 0x4c
#define QSERDES_V6_COM_BIN_VCOCAL_CMP_CODE1_MODE1 0x50
#define QSERDES_V6_COM_BIN_VCOCAL_CMP_CODE2_MODE1 0x54
#define QSERDES_V6_COM_BIN_VCOCAL_CMP_CODE1_MODE0 0x58
#define QSERDES_V6_COM_BIN_VCOCAL_CMP_CODE2_MODE0 0x5c
#define QSERDES_V6_COM_SSC_STEP_SIZE1_MODE0 0x60
#define QSERDES_V6_COM_SSC_STEP_SIZE2_MODE0 0x64
#define QSERDES_V6_COM_CP_CTRL_MODE0 0x70
#define QSERDES_V6_COM_PLL_RCTRL_MODE0 0x74
#define QSERDES_V6_COM_PLL_CCTRL_MODE0 0x78
#define QSERDES_V6_COM_PLL_CORE_CLK_DIV_MODE0 0x7c
#define QSERDES_V6_COM_LOCK_CMP1_MODE0 0x80
#define QSERDES_V6_COM_LOCK_CMP2_MODE0 0x84
#define QSERDES_V6_COM_DEC_START_MODE0 0x88
#define QSERDES_V6_COM_DEC_START_MSB_MODE0 0x8c
#define QSERDES_V6_COM_DIV_FRAC_START1_MODE0 0x90
#define QSERDES_V6_COM_DIV_FRAC_START2_MODE0 0x94
#define QSERDES_V6_COM_DIV_FRAC_START3_MODE0 0x98
#define QSERDES_V6_COM_HSCLK_HS_SWITCH_SEL_1 0x9c
#define QSERDES_V6_COM_INTEGLOOP_GAIN0_MODE0 0xa0
#define QSERDES_V6_COM_INTEGLOOP_GAIN1_MODE0 0xa4
#define QSERDES_V6_COM_VCO_TUNE1_MODE0 0xa8
#define QSERDES_V6_COM_VCO_TUNE2_MODE0 0xac
#define QSERDES_V6_COM_BG_TIMER 0xbc
#define QSERDES_V6_COM_SSC_EN_CENTER 0xc0
#define QSERDES_V6_COM_SSC_ADJ_PER1 0xc4
#define QSERDES_V6_COM_SSC_PER1 0xcc
#define QSERDES_V6_COM_SSC_PER2 0xd0
#define QSERDES_V6_COM_PLL_POST_DIV_MUX 0xd8
#define QSERDES_V6_COM_PLL_BIAS_EN_CLK_BUFLR_EN 0xdc
#define QSERDES_V6_COM_CLK_ENABLE1 0xe0
#define QSERDES_V6_COM_SYS_CLK_CTRL 0xe4
#define QSERDES_V6_COM_SYSCLK_BUF_ENABLE 0xe8
#define QSERDES_V6_COM_PLL_IVCO 0xf4
#define QSERDES_V6_COM_PLL_IVCO_MODE1 0xf8
#define QSERDES_V6_COM_CMN_IETRIM 0xfc
#define QSERDES_V6_COM_CMN_IPTRIM 0x100
#define QSERDES_V6_COM_SYSCLK_EN_SEL 0x110
#define QSERDES_V6_COM_RESETSM_CNTRL 0x118
#define QSERDES_V6_COM_LOCK_CMP_EN 0x120
#define QSERDES_V6_COM_LOCK_CMP_CFG 0x124
#define QSERDES_V6_COM_VCO_TUNE_CTRL 0x13c
#define QSERDES_V6_COM_VCO_TUNE_MAP 0x140
#define QSERDES_V6_COM_VCO_TUNE_INITVAL2 0x148
#define QSERDES_V6_COM_VCO_TUNE_MAXVAL2 0x158
#define QSERDES_V6_COM_CLK_SELECT 0x164
#define QSERDES_V6_COM_CORE_CLK_EN 0x170
#define QSERDES_V6_COM_CMN_CONFIG_1 0x174
#define QSERDES_V6_COM_SVS_MODE_CLK_SEL 0x17c
#define QSERDES_V6_COM_CMN_MISC_1 0x184
#define QSERDES_V6_COM_CMN_MODE 0x188
#define QSERDES_V6_COM_PLL_VCO_DC_LEVEL_CTRL 0x198
#define QSERDES_V6_COM_AUTO_GAIN_ADJ_CTRL_1 0x1a4
#define QSERDES_V6_COM_AUTO_GAIN_ADJ_CTRL_2 0x1a8
#define QSERDES_V6_COM_AUTO_GAIN_ADJ_CTRL_3 0x1ac
#define QSERDES_V6_COM_ADDITIONAL_MISC 0x1b4
#define QSERDES_V6_COM_ADDITIONAL_MISC_2 0x1b8
#define QSERDES_V6_COM_ADDITIONAL_MISC_3 0x1bc
#define QSERDES_V6_COM_CMN_STATUS 0x1d0
#define QSERDES_V6_COM_C_READY_STATUS 0x1f8
#endif