Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

phy: qcom-qmp: add QMP V2 PCIe PHY support for ipq60xx

Based on code from downstream Codeaurora tree. The ipq60xx has one gen3
PCIe port.

Signed-off-by: Selvam Sathappan Periakaruppan <speriaka@codeaurora.org>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
Link: https://lore.kernel.org/r/e24f2bedb8a7346018b58136bcb0a4004d8677a0.1620203062.git.baruch@tkos.co.il
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Selvam Sathappan Periakaruppan and committed by
Vinod Koul
520264db 9f7368ff

+279
+147
drivers/phy/qualcomm/phy-qcom-qmp.c
··· 143 143 [QPHY_PCS_READY_STATUS] = 0x168, 144 144 }; 145 145 146 + static const unsigned int ipq_pciephy_gen3_regs_layout[QPHY_LAYOUT_SIZE] = { 147 + [QPHY_SW_RESET] = 0x00, 148 + [QPHY_START_CTRL] = 0x44, 149 + [QPHY_PCS_STATUS] = 0x14, 150 + [QPHY_PCS_POWER_DOWN_CONTROL] = 0x40, 151 + }; 152 + 146 153 static const unsigned int pciephy_regs_layout[QPHY_LAYOUT_SIZE] = { 147 154 [QPHY_COM_SW_RESET] = 0x400, 148 155 [QPHY_COM_POWER_DOWN_CONTROL] = 0x404, ··· 619 612 QMP_PHY_INIT_CFG(QPHY_LOCK_DETECT_CONFIG2, 0x1f), 620 613 QMP_PHY_INIT_CFG(QPHY_LOCK_DETECT_CONFIG3, 0x47), 621 614 QMP_PHY_INIT_CFG(QPHY_POWER_STATE_CONFIG2, 0x08), 615 + }; 616 + 617 + static const struct qmp_phy_init_tbl ipq6018_pcie_serdes_tbl[] = { 618 + QMP_PHY_INIT_CFG(QSERDES_PLL_SSC_PER1, 0x7d), 619 + QMP_PHY_INIT_CFG(QSERDES_PLL_SSC_PER2, 0x01), 620 + QMP_PHY_INIT_CFG(QSERDES_PLL_SSC_STEP_SIZE1_MODE0, 0x0a), 621 + QMP_PHY_INIT_CFG(QSERDES_PLL_SSC_STEP_SIZE2_MODE0, 0x05), 622 + QMP_PHY_INIT_CFG(QSERDES_PLL_SSC_STEP_SIZE1_MODE1, 0x08), 623 + QMP_PHY_INIT_CFG(QSERDES_PLL_SSC_STEP_SIZE2_MODE1, 0x04), 624 + QMP_PHY_INIT_CFG(QSERDES_PLL_BIAS_EN_CLKBUFLR_EN, 0x18), 625 + QMP_PHY_INIT_CFG(QSERDES_PLL_CLK_ENABLE1, 0x90), 626 + QMP_PHY_INIT_CFG(QSERDES_PLL_SYS_CLK_CTRL, 0x02), 627 + QMP_PHY_INIT_CFG(QSERDES_PLL_SYSCLK_BUF_ENABLE, 0x07), 628 + QMP_PHY_INIT_CFG(QSERDES_PLL_PLL_IVCO, 0x0f), 629 + QMP_PHY_INIT_CFG(QSERDES_PLL_LOCK_CMP1_MODE0, 0xd4), 630 + QMP_PHY_INIT_CFG(QSERDES_PLL_LOCK_CMP2_MODE0, 0x14), 631 + QMP_PHY_INIT_CFG(QSERDES_PLL_LOCK_CMP1_MODE1, 0xaa), 632 + QMP_PHY_INIT_CFG(QSERDES_PLL_LOCK_CMP2_MODE1, 0x29), 633 + QMP_PHY_INIT_CFG(QSERDES_PLL_BG_TRIM, 0x0f), 634 + QMP_PHY_INIT_CFG(QSERDES_PLL_CP_CTRL_MODE0, 0x09), 635 + QMP_PHY_INIT_CFG(QSERDES_PLL_CP_CTRL_MODE1, 0x09), 636 + QMP_PHY_INIT_CFG(QSERDES_PLL_PLL_RCTRL_MODE0, 0x16), 637 + QMP_PHY_INIT_CFG(QSERDES_PLL_PLL_RCTRL_MODE1, 0x16), 638 + QMP_PHY_INIT_CFG(QSERDES_PLL_PLL_CCTRL_MODE0, 0x28), 639 + QMP_PHY_INIT_CFG(QSERDES_PLL_PLL_CCTRL_MODE1, 0x28), 640 + QMP_PHY_INIT_CFG(QSERDES_PLL_BIAS_EN_CTRL_BY_PSM, 0x01), 641 + QMP_PHY_INIT_CFG(QSERDES_PLL_SYSCLK_EN_SEL, 0x08), 642 + QMP_PHY_INIT_CFG(QSERDES_PLL_RESETSM_CNTRL, 0x20), 643 + QMP_PHY_INIT_CFG(QSERDES_PLL_LOCK_CMP_EN, 0x42), 644 + QMP_PHY_INIT_CFG(QSERDES_PLL_DEC_START_MODE0, 0x68), 645 + QMP_PHY_INIT_CFG(QSERDES_PLL_DEC_START_MODE1, 0x53), 646 + QMP_PHY_INIT_CFG(QSERDES_PLL_DIV_FRAC_START1_MODE0, 0xab), 647 + QMP_PHY_INIT_CFG(QSERDES_PLL_DIV_FRAC_START2_MODE0, 0xaa), 648 + QMP_PHY_INIT_CFG(QSERDES_PLL_DIV_FRAC_START3_MODE0, 0x02), 649 + QMP_PHY_INIT_CFG(QSERDES_PLL_DIV_FRAC_START1_MODE1, 0x55), 650 + QMP_PHY_INIT_CFG(QSERDES_PLL_DIV_FRAC_START2_MODE1, 0x55), 651 + QMP_PHY_INIT_CFG(QSERDES_PLL_DIV_FRAC_START3_MODE1, 0x05), 652 + QMP_PHY_INIT_CFG(QSERDES_PLL_INTEGLOOP_GAIN0_MODE0, 0xa0), 653 + QMP_PHY_INIT_CFG(QSERDES_PLL_INTEGLOOP_GAIN0_MODE1, 0xa0), 654 + QMP_PHY_INIT_CFG(QSERDES_PLL_VCO_TUNE1_MODE0, 0x24), 655 + QMP_PHY_INIT_CFG(QSERDES_PLL_VCO_TUNE2_MODE0, 0x02), 656 + QMP_PHY_INIT_CFG(QSERDES_PLL_VCO_TUNE1_MODE1, 0xb4), 657 + QMP_PHY_INIT_CFG(QSERDES_PLL_VCO_TUNE2_MODE1, 0x03), 658 + QMP_PHY_INIT_CFG(QSERDES_PLL_CLK_SELECT, 0x32), 659 + QMP_PHY_INIT_CFG(QSERDES_PLL_HSCLK_SEL, 0x01), 660 + QMP_PHY_INIT_CFG(QSERDES_PLL_CORE_CLK_EN, 0x00), 661 + QMP_PHY_INIT_CFG(QSERDES_PLL_CMN_CONFIG, 0x06), 662 + QMP_PHY_INIT_CFG(QSERDES_PLL_SVS_MODE_CLK_SEL, 0x05), 663 + QMP_PHY_INIT_CFG(QSERDES_PLL_CORECLK_DIV_MODE1, 0x08), 664 + }; 665 + 666 + static const struct qmp_phy_init_tbl ipq6018_pcie_tx_tbl[] = { 667 + QMP_PHY_INIT_CFG(QSERDES_TX0_RES_CODE_LANE_OFFSET_TX, 0x02), 668 + QMP_PHY_INIT_CFG(QSERDES_TX0_LANE_MODE_1, 0x06), 669 + QMP_PHY_INIT_CFG(QSERDES_TX0_RCV_DETECT_LVL_2, 0x12), 670 + }; 671 + 672 + static const struct qmp_phy_init_tbl ipq6018_pcie_rx_tbl[] = { 673 + QMP_PHY_INIT_CFG(QSERDES_RX0_UCDR_FO_GAIN, 0x0c), 674 + QMP_PHY_INIT_CFG(QSERDES_RX0_UCDR_SO_GAIN, 0x02), 675 + QMP_PHY_INIT_CFG(QSERDES_RX0_UCDR_SO_SATURATION_AND_ENABLE, 0x7f), 676 + QMP_PHY_INIT_CFG(QSERDES_RX0_UCDR_PI_CONTROLS, 0x70), 677 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_EQU_ADAPTOR_CNTRL2, 0x61), 678 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_EQU_ADAPTOR_CNTRL3, 0x04), 679 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_EQU_ADAPTOR_CNTRL4, 0x1e), 680 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_IDAC_TSETTLE_LOW, 0xc0), 681 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_IDAC_TSETTLE_HIGH, 0x00), 682 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_EQ_OFFSET_ADAPTOR_CNTRL1, 0x73), 683 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_OFFSET_ADAPTOR_CNTRL2, 0x80), 684 + QMP_PHY_INIT_CFG(QSERDES_RX0_SIGDET_ENABLES, 0x1c), 685 + QMP_PHY_INIT_CFG(QSERDES_RX0_SIGDET_CNTRL, 0x03), 686 + QMP_PHY_INIT_CFG(QSERDES_RX0_SIGDET_DEGLITCH_CNTRL, 0x14), 687 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_00_LOW, 0xf0), 688 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_00_HIGH, 0x01), 689 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_00_HIGH2, 0x2f), 690 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_00_HIGH3, 0xd3), 691 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_00_HIGH4, 0x40), 692 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_01_LOW, 0x01), 693 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_01_HIGH, 0x02), 694 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_01_HIGH2, 0xc8), 695 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_01_HIGH3, 0x09), 696 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_01_HIGH4, 0xb1), 697 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_10_LOW, 0x00), 698 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_10_HIGH, 0x02), 699 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_10_HIGH2, 0xc8), 700 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_10_HIGH3, 0x09), 701 + QMP_PHY_INIT_CFG(QSERDES_RX0_RX_MODE_10_HIGH4, 0xb1), 702 + QMP_PHY_INIT_CFG(QSERDES_RX0_DFE_EN_TIMER, 0x04), 703 + }; 704 + 705 + static const struct qmp_phy_init_tbl ipq6018_pcie_pcs_tbl[] = { 706 + QMP_PHY_INIT_CFG(PCS_COM_FLL_CNTRL1, 0x01), 707 + QMP_PHY_INIT_CFG(PCS_COM_REFGEN_REQ_CONFIG1, 0x0d), 708 + QMP_PHY_INIT_CFG(PCS_COM_G12S1_TXDEEMPH_M3P5DB, 0x10), 709 + QMP_PHY_INIT_CFG(PCS_COM_RX_SIGDET_LVL, 0xaa), 710 + QMP_PHY_INIT_CFG(PCS_COM_P2U3_WAKEUP_DLY_TIME_AUXCLK_L, 0x01), 711 + QMP_PHY_INIT_CFG(PCS_COM_RX_DCC_CAL_CONFIG, 0x01), 712 + QMP_PHY_INIT_CFG(PCS_COM_EQ_CONFIG5, 0x01), 713 + QMP_PHY_INIT_CFG(PCS_PCIE_POWER_STATE_CONFIG2, 0x0d), 714 + QMP_PHY_INIT_CFG(PCS_PCIE_POWER_STATE_CONFIG4, 0x07), 715 + QMP_PHY_INIT_CFG(PCS_PCIE_ENDPOINT_REFCLK_DRIVE, 0xc1), 716 + QMP_PHY_INIT_CFG(PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_L, 0x01), 717 + QMP_PHY_INIT_CFG(PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_L, 0x01), 718 + QMP_PHY_INIT_CFG(PCS_PCIE_OSC_DTCT_ACTIONS, 0x00), 719 + QMP_PHY_INIT_CFG(PCS_PCIE_EQ_CONFIG1, 0x11), 720 + QMP_PHY_INIT_CFG(PCS_PCIE_PRESET_P10_PRE, 0x00), 721 + QMP_PHY_INIT_CFG(PCS_PCIE_PRESET_P10_POST, 0x58), 622 722 }; 623 723 624 724 static const struct qmp_phy_init_tbl ipq8074_pcie_serdes_tbl[] = { ··· 2847 2733 .vreg_list = NULL, 2848 2734 .num_vregs = 0, 2849 2735 .regs = pciephy_regs_layout, 2736 + 2737 + .start_ctrl = SERDES_START | PCS_START, 2738 + .pwrdn_ctrl = SW_PWRDN | REFCLK_DRV_DSBL, 2739 + 2740 + .has_phy_com_ctrl = false, 2741 + .has_lane_rst = false, 2742 + .has_pwrdn_delay = true, 2743 + .pwrdn_delay_min = 995, /* us */ 2744 + .pwrdn_delay_max = 1005, /* us */ 2745 + }; 2746 + 2747 + static const struct qmp_phy_cfg ipq6018_pciephy_cfg = { 2748 + .type = PHY_TYPE_PCIE, 2749 + .nlanes = 1, 2750 + 2751 + .serdes_tbl = ipq6018_pcie_serdes_tbl, 2752 + .serdes_tbl_num = ARRAY_SIZE(ipq6018_pcie_serdes_tbl), 2753 + .tx_tbl = ipq6018_pcie_tx_tbl, 2754 + .tx_tbl_num = ARRAY_SIZE(ipq6018_pcie_tx_tbl), 2755 + .rx_tbl = ipq6018_pcie_rx_tbl, 2756 + .rx_tbl_num = ARRAY_SIZE(ipq6018_pcie_rx_tbl), 2757 + .pcs_tbl = ipq6018_pcie_pcs_tbl, 2758 + .pcs_tbl_num = ARRAY_SIZE(ipq6018_pcie_pcs_tbl), 2759 + .clk_list = ipq8074_pciephy_clk_l, 2760 + .num_clks = ARRAY_SIZE(ipq8074_pciephy_clk_l), 2761 + .reset_list = ipq8074_pciephy_reset_l, 2762 + .num_resets = ARRAY_SIZE(ipq8074_pciephy_reset_l), 2763 + .vreg_list = NULL, 2764 + .num_vregs = 0, 2765 + .regs = ipq_pciephy_gen3_regs_layout, 2850 2766 2851 2767 .start_ctrl = SERDES_START | PCS_START, 2852 2768 .pwrdn_ctrl = SW_PWRDN | REFCLK_DRV_DSBL, ··· 5071 4927 }, { 5072 4928 .compatible = "qcom,ipq8074-qmp-pcie-phy", 5073 4929 .data = &ipq8074_pciephy_cfg, 4930 + }, { 4931 + .compatible = "qcom,ipq6018-qmp-pcie-phy", 4932 + .data = &ipq6018_pciephy_cfg, 5074 4933 }, { 5075 4934 .compatible = "qcom,sc7180-qmp-usb3-phy", 5076 4935 .data = &sc7180_usb3phy_cfg,
+132
drivers/phy/qualcomm/phy-qcom-qmp.h
··· 6 6 #ifndef QCOM_PHY_QMP_H_ 7 7 #define QCOM_PHY_QMP_H_ 8 8 9 + /* QMP V2 PHY for PCIE gen3 ports - QSERDES PLL registers */ 10 + 11 + #define QSERDES_PLL_BG_TIMER 0x00c 12 + #define QSERDES_PLL_SSC_PER1 0x01c 13 + #define QSERDES_PLL_SSC_PER2 0x020 14 + #define QSERDES_PLL_SSC_STEP_SIZE1_MODE0 0x024 15 + #define QSERDES_PLL_SSC_STEP_SIZE2_MODE0 0x028 16 + #define QSERDES_PLL_SSC_STEP_SIZE1_MODE1 0x02c 17 + #define QSERDES_PLL_SSC_STEP_SIZE2_MODE1 0x030 18 + #define QSERDES_PLL_BIAS_EN_CLKBUFLR_EN 0x03c 19 + #define QSERDES_PLL_CLK_ENABLE1 0x040 20 + #define QSERDES_PLL_SYS_CLK_CTRL 0x044 21 + #define QSERDES_PLL_SYSCLK_BUF_ENABLE 0x048 22 + #define QSERDES_PLL_PLL_IVCO 0x050 23 + #define QSERDES_PLL_LOCK_CMP1_MODE0 0x054 24 + #define QSERDES_PLL_LOCK_CMP2_MODE0 0x058 25 + #define QSERDES_PLL_LOCK_CMP1_MODE1 0x060 26 + #define QSERDES_PLL_LOCK_CMP2_MODE1 0x064 27 + #define QSERDES_PLL_BG_TRIM 0x074 28 + #define QSERDES_PLL_CLK_EP_DIV_MODE0 0x078 29 + #define QSERDES_PLL_CLK_EP_DIV_MODE1 0x07c 30 + #define QSERDES_PLL_CP_CTRL_MODE0 0x080 31 + #define QSERDES_PLL_CP_CTRL_MODE1 0x084 32 + #define QSERDES_PLL_PLL_RCTRL_MODE0 0x088 33 + #define QSERDES_PLL_PLL_RCTRL_MODE1 0x08C 34 + #define QSERDES_PLL_PLL_CCTRL_MODE0 0x090 35 + #define QSERDES_PLL_PLL_CCTRL_MODE1 0x094 36 + #define QSERDES_PLL_BIAS_EN_CTRL_BY_PSM 0x0a4 37 + #define QSERDES_PLL_SYSCLK_EN_SEL 0x0a8 38 + #define QSERDES_PLL_RESETSM_CNTRL 0x0b0 39 + #define QSERDES_PLL_LOCK_CMP_EN 0x0c4 40 + #define QSERDES_PLL_DEC_START_MODE0 0x0cc 41 + #define QSERDES_PLL_DEC_START_MODE1 0x0d0 42 + #define QSERDES_PLL_DIV_FRAC_START1_MODE0 0x0d8 43 + #define QSERDES_PLL_DIV_FRAC_START2_MODE0 0x0dc 44 + #define QSERDES_PLL_DIV_FRAC_START3_MODE0 0x0e0 45 + #define QSERDES_PLL_DIV_FRAC_START1_MODE1 0x0e4 46 + #define QSERDES_PLL_DIV_FRAC_START2_MODE1 0x0e8 47 + #define QSERDES_PLL_DIV_FRAC_START3_MODE1 0x0eC 48 + #define QSERDES_PLL_INTEGLOOP_GAIN0_MODE0 0x100 49 + #define QSERDES_PLL_INTEGLOOP_GAIN1_MODE0 0x104 50 + #define QSERDES_PLL_INTEGLOOP_GAIN0_MODE1 0x108 51 + #define QSERDES_PLL_INTEGLOOP_GAIN1_MODE1 0x10c 52 + #define QSERDES_PLL_VCO_TUNE_MAP 0x120 53 + #define QSERDES_PLL_VCO_TUNE1_MODE0 0x124 54 + #define QSERDES_PLL_VCO_TUNE2_MODE0 0x128 55 + #define QSERDES_PLL_VCO_TUNE1_MODE1 0x12c 56 + #define QSERDES_PLL_VCO_TUNE2_MODE1 0x130 57 + #define QSERDES_PLL_VCO_TUNE_TIMER1 0x13c 58 + #define QSERDES_PLL_VCO_TUNE_TIMER2 0x140 59 + #define QSERDES_PLL_CLK_SELECT 0x16c 60 + #define QSERDES_PLL_HSCLK_SEL 0x170 61 + #define QSERDES_PLL_CORECLK_DIV 0x17c 62 + #define QSERDES_PLL_CORE_CLK_EN 0x184 63 + #define QSERDES_PLL_CMN_CONFIG 0x18c 64 + #define QSERDES_PLL_SVS_MODE_CLK_SEL 0x194 65 + #define QSERDES_PLL_CORECLK_DIV_MODE1 0x1b4 66 + 67 + /* QMP V2 PHY for PCIE gen3 ports - QSERDES TX registers */ 68 + 69 + #define QSERDES_TX0_RES_CODE_LANE_OFFSET_TX 0x03c 70 + #define QSERDES_TX0_HIGHZ_DRVR_EN 0x058 71 + #define QSERDES_TX0_LANE_MODE_1 0x084 72 + #define QSERDES_TX0_RCV_DETECT_LVL_2 0x09c 73 + 74 + /* QMP V2 PHY for PCIE gen3 ports - QSERDES RX registers */ 75 + 76 + #define QSERDES_RX0_UCDR_FO_GAIN 0x008 77 + #define QSERDES_RX0_UCDR_SO_GAIN 0x014 78 + #define QSERDES_RX0_UCDR_SO_SATURATION_AND_ENABLE 0x034 79 + #define QSERDES_RX0_UCDR_PI_CONTROLS 0x044 80 + #define QSERDES_RX0_RX_EQU_ADAPTOR_CNTRL2 0x0ec 81 + #define QSERDES_RX0_RX_EQU_ADAPTOR_CNTRL3 0x0f0 82 + #define QSERDES_RX0_RX_EQU_ADAPTOR_CNTRL4 0x0f4 83 + #define QSERDES_RX0_RX_IDAC_TSETTLE_LOW 0x0f8 84 + #define QSERDES_RX0_RX_IDAC_TSETTLE_HIGH 0x0fc 85 + #define QSERDES_RX0_RX_EQ_OFFSET_ADAPTOR_CNTRL1 0x110 86 + #define QSERDES_RX0_RX_OFFSET_ADAPTOR_CNTRL2 0x114 87 + #define QSERDES_RX0_SIGDET_ENABLES 0x118 88 + #define QSERDES_RX0_SIGDET_CNTRL 0x11c 89 + #define QSERDES_RX0_SIGDET_DEGLITCH_CNTRL 0x124 90 + #define QSERDES_RX0_RX_MODE_00_LOW 0x170 91 + #define QSERDES_RX0_RX_MODE_00_HIGH 0x174 92 + #define QSERDES_RX0_RX_MODE_00_HIGH2 0x178 93 + #define QSERDES_RX0_RX_MODE_00_HIGH3 0x17c 94 + #define QSERDES_RX0_RX_MODE_00_HIGH4 0x180 95 + #define QSERDES_RX0_RX_MODE_01_LOW 0x184 96 + #define QSERDES_RX0_RX_MODE_01_HIGH 0x188 97 + #define QSERDES_RX0_RX_MODE_01_HIGH2 0x18c 98 + #define QSERDES_RX0_RX_MODE_01_HIGH3 0x190 99 + #define QSERDES_RX0_RX_MODE_01_HIGH4 0x194 100 + #define QSERDES_RX0_RX_MODE_10_LOW 0x198 101 + #define QSERDES_RX0_RX_MODE_10_HIGH 0x19c 102 + #define QSERDES_RX0_RX_MODE_10_HIGH2 0x1a0 103 + #define QSERDES_RX0_RX_MODE_10_HIGH3 0x1a4 104 + #define QSERDES_RX0_RX_MODE_10_HIGH4 0x1a8 105 + #define QSERDES_RX0_DFE_EN_TIMER 0x1b4 106 + 107 + /* QMP V2 PHY for PCIE gen3 ports - PCS registers */ 108 + 109 + #define PCS_COM_FLL_CNTRL1 0x098 110 + #define PCS_COM_FLL_CNTRL2 0x09c 111 + #define PCS_COM_FLL_CNT_VAL_L 0x0a0 112 + #define PCS_COM_FLL_CNT_VAL_H_TOL 0x0a4 113 + #define PCS_COM_FLL_MAN_CODE 0x0a8 114 + #define PCS_COM_REFGEN_REQ_CONFIG1 0x0dc 115 + #define PCS_COM_G12S1_TXDEEMPH_M3P5DB 0x16c 116 + #define PCS_COM_RX_SIGDET_LVL 0x188 117 + #define PCS_COM_P2U3_WAKEUP_DLY_TIME_AUXCLK_L 0x1a4 118 + #define PCS_COM_P2U3_WAKEUP_DLY_TIME_AUXCLK_H 0x1a8 119 + #define PCS_COM_RX_DCC_CAL_CONFIG 0x1d8 120 + #define PCS_COM_EQ_CONFIG5 0x1ec 121 + 122 + /* QMP V2 PHY for PCIE gen3 ports - PCS Misc registers */ 123 + 124 + #define PCS_PCIE_POWER_STATE_CONFIG2 0x40c 125 + #define PCS_PCIE_POWER_STATE_CONFIG4 0x414 126 + #define PCS_PCIE_ENDPOINT_REFCLK_DRIVE 0x41c 127 + #define PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_L 0x440 128 + #define PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_H 0x444 129 + #define PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_L 0x448 130 + #define PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_H 0x44c 131 + #define PCS_PCIE_OSC_DTCT_CONFIG2 0x45c 132 + #define PCS_PCIE_OSC_DTCT_MODE2_CONFIG2 0x478 133 + #define PCS_PCIE_OSC_DTCT_MODE2_CONFIG4 0x480 134 + #define PCS_PCIE_OSC_DTCT_MODE2_CONFIG5 0x484 135 + #define PCS_PCIE_OSC_DTCT_ACTIONS 0x490 136 + #define PCS_PCIE_EQ_CONFIG1 0x4a0 137 + #define PCS_PCIE_EQ_CONFIG2 0x4a4 138 + #define PCS_PCIE_PRESET_P10_PRE 0x4bc 139 + #define PCS_PCIE_PRESET_P10_POST 0x4e0 140 + 9 141 /* Only for QMP V2 PHY - QSERDES COM registers */ 10 142 #define QSERDES_COM_BG_TIMER 0x00c 11 143 #define QSERDES_COM_SSC_EN_CENTER 0x010