1a3a06415SNishad Kamdar /* SPDX-License-Identifier: GPL-2.0 */
2e2248617SManu Gautam /*
3e2248617SManu Gautam  * Copyright (c) 2017, The Linux Foundation. All rights reserved.
4e2248617SManu Gautam  */
5e2248617SManu Gautam 
6e2248617SManu Gautam #ifndef QCOM_PHY_QMP_H_
7e2248617SManu Gautam #define QCOM_PHY_QMP_H_
8e2248617SManu Gautam 
99e1bae6dSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-com.h"
109e1bae6dSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-txrx.h"
119e1bae6dSDmitry Baryshkov 
12a7fc833eSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-com-v3.h"
13a7fc833eSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-txrx-v3.h"
14a7fc833eSDmitry Baryshkov 
1532d2cf53SDmitry Baryshkov #include "phy-qcom-qmp-qserdes-com-v4.h"
1632d2cf53SDmitry Baryshkov #include "phy-qcom-qmp-qserdes-txrx-v4.h"
17*5fc21d1bSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-txrx-v4_20.h"
1832d2cf53SDmitry Baryshkov 
19f1f923adSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-com-v5.h"
20f1f923adSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-txrx-v5.h"
21*5fc21d1bSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-txrx-v5_20.h"
22f1f923adSDmitry Baryshkov 
23147924ffSDmitry Baryshkov #include "phy-qcom-qmp-qserdes-pll.h"
24520264dbSSelvam Sathappan Periakaruppan 
255ae11aa4SDmitry Baryshkov #include "phy-qcom-qmp-pcs-v2.h"
26e2248617SManu Gautam 
2756a1fa09SDmitry Baryshkov #include "phy-qcom-qmp-pcs-v3.h"
2856a1fa09SDmitry Baryshkov #include "phy-qcom-qmp-pcs-misc-v3.h"
2956a1fa09SDmitry Baryshkov 
3041ad371fSDmitry Baryshkov #include "phy-qcom-qmp-pcs-v4.h"
3141ad371fSDmitry Baryshkov #include "phy-qcom-qmp-pcs-pcie-v4.h"
3241ad371fSDmitry Baryshkov #include "phy-qcom-qmp-pcs-usb-v4.h"
3341ad371fSDmitry Baryshkov #include "phy-qcom-qmp-pcs-ufs-v4.h"
3441ad371fSDmitry Baryshkov 
35b7a2f882SDmitry Baryshkov #include "phy-qcom-qmp-pcs-v5.h"
36b7a2f882SDmitry Baryshkov #include "phy-qcom-qmp-pcs-pcie-v5.h"
37b7a2f882SDmitry Baryshkov #include "phy-qcom-qmp-pcs-usb-v5.h"
38b7a2f882SDmitry Baryshkov #include "phy-qcom-qmp-pcs-ufs-v5.h"
39b7a2f882SDmitry Baryshkov 
4087d71378SDmitry Baryshkov #include "phy-qcom-qmp-pcie-qhp.h"
4187d71378SDmitry Baryshkov 
429a24b929SJack Pham /* Only for QMP V3 & V4 PHY - DP COM registers */
439c7761a3SManu Gautam #define QPHY_V3_DP_COM_PHY_MODE_CTRL			0x00
449c7761a3SManu Gautam #define QPHY_V3_DP_COM_SW_RESET				0x04
459c7761a3SManu Gautam #define QPHY_V3_DP_COM_POWER_DOWN_CTRL			0x08
469c7761a3SManu Gautam #define QPHY_V3_DP_COM_SWI_CTRL				0x0c
479c7761a3SManu Gautam #define QPHY_V3_DP_COM_TYPEC_CTRL			0x10
489c7761a3SManu Gautam #define QPHY_V3_DP_COM_TYPEC_PWRDN_CTRL			0x14
499c7761a3SManu Gautam #define QPHY_V3_DP_COM_RESET_OVRD_CTRL			0x1c
509c7761a3SManu Gautam 
51a7fc833eSDmitry Baryshkov /* QSERDES V3 COM bits */
5252e013d0SStephen Boyd # define QSERDES_V3_COM_BIAS_EN				0x0001
5352e013d0SStephen Boyd # define QSERDES_V3_COM_BIAS_EN_MUX			0x0002
5452e013d0SStephen Boyd # define QSERDES_V3_COM_CLKBUF_R_EN			0x0004
5552e013d0SStephen Boyd # define QSERDES_V3_COM_CLKBUF_L_EN			0x0008
5652e013d0SStephen Boyd # define QSERDES_V3_COM_EN_SYSCLK_TX_SEL		0x0010
5752e013d0SStephen Boyd # define QSERDES_V3_COM_CLKBUF_RX_DRIVE_L		0x0020
5852e013d0SStephen Boyd # define QSERDES_V3_COM_CLKBUF_RX_DRIVE_R		0x0040
599c7761a3SManu Gautam 
60a7fc833eSDmitry Baryshkov /* QSERDES V3 TX bits */
6152e013d0SStephen Boyd # define DP_PHY_TXn_TX_EMP_POST1_LVL_MASK		0x001f
6252e013d0SStephen Boyd # define DP_PHY_TXn_TX_EMP_POST1_LVL_MUX_EN		0x0020
6352e013d0SStephen Boyd # define DP_PHY_TXn_TX_DRV_LVL_MASK			0x001f
6452e013d0SStephen Boyd # define DP_PHY_TXn_TX_DRV_LVL_MUX_EN			0x0020
6552e013d0SStephen Boyd 
665c393917SDmitry Baryshkov /* QMP PHY - DP PHY registers */
675c393917SDmitry Baryshkov #define QSERDES_DP_PHY_REVISION_ID0			0x000
685c393917SDmitry Baryshkov #define QSERDES_DP_PHY_REVISION_ID1			0x004
695c393917SDmitry Baryshkov #define QSERDES_DP_PHY_REVISION_ID2			0x008
705c393917SDmitry Baryshkov #define QSERDES_DP_PHY_REVISION_ID3			0x00c
715c393917SDmitry Baryshkov #define QSERDES_DP_PHY_CFG				0x010
725c393917SDmitry Baryshkov #define QSERDES_DP_PHY_PD_CTL				0x018
7352e013d0SStephen Boyd # define DP_PHY_PD_CTL_PWRDN				0x001
7452e013d0SStephen Boyd # define DP_PHY_PD_CTL_PSR_PWRDN			0x002
7552e013d0SStephen Boyd # define DP_PHY_PD_CTL_AUX_PWRDN			0x004
7652e013d0SStephen Boyd # define DP_PHY_PD_CTL_LANE_0_1_PWRDN			0x008
7752e013d0SStephen Boyd # define DP_PHY_PD_CTL_LANE_2_3_PWRDN			0x010
7852e013d0SStephen Boyd # define DP_PHY_PD_CTL_PLL_PWRDN			0x020
7952e013d0SStephen Boyd # define DP_PHY_PD_CTL_DP_CLAMP_EN			0x040
805c393917SDmitry Baryshkov #define QSERDES_DP_PHY_MODE				0x01c
815c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG0				0x020
825c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG1				0x024
835c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG2				0x028
845c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG3				0x02c
855c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG4				0x030
865c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG5				0x034
875c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG6				0x038
885c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG7				0x03c
895c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG8				0x040
905c393917SDmitry Baryshkov #define QSERDES_DP_PHY_AUX_CFG9				0x044
9152e013d0SStephen Boyd 
925c393917SDmitry Baryshkov /* Only for QMP V3 PHY - DP PHY registers */
9352e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_AUX_INTERRUPT_MASK		0x048
9452e013d0SStephen Boyd # define PHY_AUX_STOP_ERR_MASK				0x01
9552e013d0SStephen Boyd # define PHY_AUX_DEC_ERR_MASK				0x02
9652e013d0SStephen Boyd # define PHY_AUX_SYNC_ERR_MASK				0x04
9752e013d0SStephen Boyd # define PHY_AUX_ALIGN_ERR_MASK				0x08
9852e013d0SStephen Boyd # define PHY_AUX_REQ_ERR_MASK				0x10
9952e013d0SStephen Boyd 
10052e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_AUX_INTERRUPT_CLEAR		0x04c
10152e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_AUX_BIST_CFG			0x050
10252e013d0SStephen Boyd 
10352e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_VCO_DIV			0x064
10452e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_TX0_TX1_LANE_CTL		0x06c
10552e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_TX2_TX3_LANE_CTL		0x088
10652e013d0SStephen Boyd 
10752e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_SPARE0			0x0ac
10852e013d0SStephen Boyd #define DP_PHY_SPARE0_MASK				0x0f
10952e013d0SStephen Boyd #define DP_PHY_SPARE0_ORIENTATION_INFO_SHIFT		0x04(0x0004)
11052e013d0SStephen Boyd 
11152e013d0SStephen Boyd #define QSERDES_V3_DP_PHY_STATUS			0x0c0
11252e013d0SStephen Boyd 
113aff188feSDmitry Baryshkov /* Only for QMP V4 PHY - DP PHY registers */
114aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_CFG_1				0x014
115aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_AUX_INTERRUPT_MASK		0x054
116aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_AUX_INTERRUPT_CLEAR		0x058
117aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_VCO_DIV			0x070
118aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_TX0_TX1_LANE_CTL		0x078
119aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_TX2_TX3_LANE_CTL		0x09c
120aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_SPARE0			0x0c8
121aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_AUX_INTERRUPT_STATUS		0x0d8
122aff188feSDmitry Baryshkov #define QSERDES_V4_DP_PHY_STATUS			0x0dc
123aff188feSDmitry Baryshkov 
124be0ddb5dSManivannan Sadhasivam /* Only for QMP V4_20 PHY - USB/PCIe PCS registers */
125be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_RX_SIGDET_LVL			0x188
126be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_EQ_CONFIG2			0x1d8
127be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_EQ_CONFIG4			0x1e0
128be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_EQ_CONFIG5			0x1e4
129be0ddb5dSManivannan Sadhasivam 
1309a24b929SJack Pham /* Only for QMP V4 PHY - PCS_MISC registers */
1319a24b929SJack Pham #define QPHY_V4_PCS_MISC_TYPEC_CTRL			0x00
1329a24b929SJack Pham #define QPHY_V4_PCS_MISC_TYPEC_PWRDN_CTRL		0x04
1339a24b929SJack Pham #define QPHY_V4_PCS_MISC_PCS_MISC_CONFIG1		0x08
1349a24b929SJack Pham #define QPHY_V4_PCS_MISC_CLAMP_ENABLE			0x0c
1359a24b929SJack Pham #define QPHY_V4_PCS_MISC_TYPEC_STATUS			0x10
1369a24b929SJack Pham #define QPHY_V4_PCS_MISC_PLACEHOLDER_STATUS		0x14
1379a24b929SJack Pham 
138be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_PCIE_EQ_CONFIG1			0x0a0
139be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_PCIE_G3_RXEQEVAL_TIME		0x0f0
140be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_PCIE_G4_RXEQEVAL_TIME		0x0f4
141be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_PCIE_G4_EQ_CONFIG2		0x0fc
142be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_PCIE_G4_EQ_CONFIG5		0x108
143be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_LANE1_INSIG_SW_CTRL2		0x824
144be0ddb5dSManivannan Sadhasivam #define QPHY_V4_20_PCS_LANE1_INSIG_MX_CTRL2		0x828
145be0ddb5dSManivannan Sadhasivam 
1462c91bf6bSDmitry Baryshkov /* Only for QMP V5_20 PHY - PCIe PCS registers */
1472c91bf6bSDmitry Baryshkov #define QPHY_V5_20_PCS_PCIE_ENDPOINT_REFCLK_DRIVE	0x01c
1482c91bf6bSDmitry Baryshkov #define QPHY_V5_20_PCS_PCIE_OSC_DTCT_ACTIONS		0x090
1492c91bf6bSDmitry Baryshkov #define QPHY_V5_20_PCS_PCIE_EQ_CONFIG1			0x0a0
1502c91bf6bSDmitry Baryshkov #define QPHY_V5_20_PCS_PCIE_G4_EQ_CONFIG5		0x108
1512c91bf6bSDmitry Baryshkov #define QPHY_V5_20_PCS_PCIE_G4_PRE_GAIN			0x15c
1522c91bf6bSDmitry Baryshkov #define QPHY_V5_20_PCS_PCIE_RX_MARGINING_CONFIG3	0x184
1532c91bf6bSDmitry Baryshkov 
154e2248617SManu Gautam #endif
155