Loading drivers/platform/msm/ep_pcie/ep_pcie_phy.c +42 −6 Original line number Diff line number Diff line Loading @@ -17,12 +17,22 @@ #include "ep_pcie_com.h" #include "ep_pcie_phy.h" static u32 qserdes_com_oft; void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) { EP_PCIE_DBG(dev, "PCIe V%d: PHY V%d: Initializing 20nm QMP phy - 100MHz\n", dev->rev, dev->phy_rev); switch (dev->phy_rev) { case 3: qserdes_com_oft = 8; break; default: qserdes_com_oft = 0; } ep_pcie_write_reg(dev->phy, PCIE_PHY_POWER_DOWN_CONTROL, 0x01); ep_pcie_write_reg(dev->phy, QSERDES_COM_SYS_CLK_CTRL, 0x1E); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CP_SETI, 0x11); Loading @@ -31,8 +41,10 @@ void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_IP_SETI, 0x3F); ep_pcie_write_reg(dev->phy, QSERDES_COM_IP_TRIM, 0x0F); ep_pcie_write_reg(dev->phy, QSERDES_COM_RESETSM_CNTRL, 0x90); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_CAL_CSR, 0x77); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_TRIM_CONTROL, 0x15); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_CAL_CSR + qserdes_com_oft, 0x77); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_TRIM_CONTROL + qserdes_com_oft, 0x15); ep_pcie_write_reg(dev->phy, QSERDES_TX_RCV_DETECT_LVL, 0x03); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN1_LSB, 0xFF); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN2_LSB, 0xFF); Loading @@ -47,12 +59,16 @@ void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) ep_pcie_write_reg(dev->phy, QSERDES_COM_RESETSM_CNTRL2, 0x07); ep_pcie_write_reg(dev->phy, QSERDES_COM_IE_TRIM, 0x3F); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CNTRL, 0x46); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP2, 0x05); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP_EN, 0x03); ep_pcie_write_reg(dev->phy, QSERDES_COM_DEC_START1, 0x99); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP2 + qserdes_com_oft, 0x05); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP_EN + qserdes_com_oft, 0x03); ep_pcie_write_reg(dev->phy, QSERDES_COM_DEC_START1 + qserdes_com_oft, 0x99); ep_pcie_write_reg(dev->phy, QSERDES_RX_CDR_CONTROL1, 0xF5); ep_pcie_write_reg(dev->phy, QSERDES_RX_CDR_CONTROL_HALF, 0x2C); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_START_SEG1, 0x24); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_START_SEG1 + qserdes_com_oft, 0x24); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN1_MSB, 0x07); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQU_ADAPTOR_CNTRL2, 0x1E); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_OFFSET_ADAPTOR_CNTRL1, Loading @@ -66,6 +82,26 @@ void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_RCVR_IQ_EN, 0x31); ep_pcie_write_reg(dev->phy, QSERDES_COM_RESETSM_CNTRL2, 0x5); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_VCOTAIL_EN, 0x1); } else if (dev->phy_rev == 3) { ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_START_SEG1 + qserdes_com_oft, 0x20); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CP_SETI, 0x3F); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_IP_SETP, 0x34); ep_pcie_write_reg(dev->phy, QSERDES_COM_IE_TRIM, 0x0F); ep_pcie_write_reg(dev->phy, QSERDES_RX_CDR_CONTROL1, 0xF4); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN1_MSB, 0x1F); ep_pcie_write_reg(dev->phy, QSERDES_RX_SIGDET_CNTRL, 0x90); ep_pcie_write_reg(dev->phy, QSERDES_RX_SIGDET_DEGLITCH_CNTRL, 0x06); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CRCTRL + qserdes_com_oft, 0x09); ep_pcie_write_reg(dev->phy, QSERDES_RX_UCDR_SO_SATURATION_AND_ENABLE, 0x49); ep_pcie_write_reg(dev->phy, QSERDES_RX_UCDR_FO_GAIN, 0x09); ep_pcie_write_reg(dev->phy, QSERDES_RX_UCDR_SO_GAIN, 0x04); } ep_pcie_write_reg(dev->phy, PCIE_PHY_SW_RESET, 0x00); Loading Loading
drivers/platform/msm/ep_pcie/ep_pcie_phy.c +42 −6 Original line number Diff line number Diff line Loading @@ -17,12 +17,22 @@ #include "ep_pcie_com.h" #include "ep_pcie_phy.h" static u32 qserdes_com_oft; void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) { EP_PCIE_DBG(dev, "PCIe V%d: PHY V%d: Initializing 20nm QMP phy - 100MHz\n", dev->rev, dev->phy_rev); switch (dev->phy_rev) { case 3: qserdes_com_oft = 8; break; default: qserdes_com_oft = 0; } ep_pcie_write_reg(dev->phy, PCIE_PHY_POWER_DOWN_CONTROL, 0x01); ep_pcie_write_reg(dev->phy, QSERDES_COM_SYS_CLK_CTRL, 0x1E); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CP_SETI, 0x11); Loading @@ -31,8 +41,10 @@ void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_IP_SETI, 0x3F); ep_pcie_write_reg(dev->phy, QSERDES_COM_IP_TRIM, 0x0F); ep_pcie_write_reg(dev->phy, QSERDES_COM_RESETSM_CNTRL, 0x90); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_CAL_CSR, 0x77); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_TRIM_CONTROL, 0x15); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_CAL_CSR + qserdes_com_oft, 0x77); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_TRIM_CONTROL + qserdes_com_oft, 0x15); ep_pcie_write_reg(dev->phy, QSERDES_TX_RCV_DETECT_LVL, 0x03); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN1_LSB, 0xFF); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN2_LSB, 0xFF); Loading @@ -47,12 +59,16 @@ void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) ep_pcie_write_reg(dev->phy, QSERDES_COM_RESETSM_CNTRL2, 0x07); ep_pcie_write_reg(dev->phy, QSERDES_COM_IE_TRIM, 0x3F); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CNTRL, 0x46); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP2, 0x05); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP_EN, 0x03); ep_pcie_write_reg(dev->phy, QSERDES_COM_DEC_START1, 0x99); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP2 + qserdes_com_oft, 0x05); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLLLOCK_CMP_EN + qserdes_com_oft, 0x03); ep_pcie_write_reg(dev->phy, QSERDES_COM_DEC_START1 + qserdes_com_oft, 0x99); ep_pcie_write_reg(dev->phy, QSERDES_RX_CDR_CONTROL1, 0xF5); ep_pcie_write_reg(dev->phy, QSERDES_RX_CDR_CONTROL_HALF, 0x2C); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_START_SEG1, 0x24); ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_START_SEG1 + qserdes_com_oft, 0x24); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN1_MSB, 0x07); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQU_ADAPTOR_CNTRL2, 0x1E); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_OFFSET_ADAPTOR_CNTRL1, Loading @@ -66,6 +82,26 @@ void ep_pcie_phy_init(struct ep_pcie_dev_t *dev) ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_RCVR_IQ_EN, 0x31); ep_pcie_write_reg(dev->phy, QSERDES_COM_RESETSM_CNTRL2, 0x5); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_VCOTAIL_EN, 0x1); } else if (dev->phy_rev == 3) { ep_pcie_write_reg(dev->phy, QSERDES_COM_RES_CODE_START_SEG1 + qserdes_com_oft, 0x20); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CP_SETI, 0x3F); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_IP_SETP, 0x34); ep_pcie_write_reg(dev->phy, QSERDES_COM_IE_TRIM, 0x0F); ep_pcie_write_reg(dev->phy, QSERDES_RX_CDR_CONTROL1, 0xF4); ep_pcie_write_reg(dev->phy, QSERDES_RX_RX_EQ_GAIN1_MSB, 0x1F); ep_pcie_write_reg(dev->phy, QSERDES_RX_SIGDET_CNTRL, 0x90); ep_pcie_write_reg(dev->phy, QSERDES_RX_SIGDET_DEGLITCH_CNTRL, 0x06); ep_pcie_write_reg(dev->phy, QSERDES_COM_PLL_CRCTRL + qserdes_com_oft, 0x09); ep_pcie_write_reg(dev->phy, QSERDES_RX_UCDR_SO_SATURATION_AND_ENABLE, 0x49); ep_pcie_write_reg(dev->phy, QSERDES_RX_UCDR_FO_GAIN, 0x09); ep_pcie_write_reg(dev->phy, QSERDES_RX_UCDR_SO_GAIN, 0x04); } ep_pcie_write_reg(dev->phy, PCIE_PHY_SW_RESET, 0x00); Loading