phy: qcom-qmp-pcie: split pcs_misc region for ipq6018 pcie gen3
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tue, 5 Jul 2022 09:42:56 +0000 (12:42 +0300)
committerVinod Koul <vkoul@kernel.org>
Thu, 7 Jul 2022 05:05:59 +0000 (10:35 +0530)
Follow the example of other PCIe PHYs and use separate pcs_misc region
to access PCS_PCIE_* resources.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20220705094320.1313312-5-dmitry.baryshkov@linaro.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/qualcomm/phy-qcom-qmp-pcie.c
drivers/phy/qualcomm/phy-qcom-qmp.h

index 616be76..d56357e 100644 (file)
@@ -361,6 +361,9 @@ static const struct qmp_phy_init_tbl ipq6018_pcie_pcs_tbl[] = {
        QMP_PHY_INIT_CFG(PCS_COM_P2U3_WAKEUP_DLY_TIME_AUXCLK_L, 0x01),
        QMP_PHY_INIT_CFG(PCS_COM_RX_DCC_CAL_CONFIG, 0x01),
        QMP_PHY_INIT_CFG(PCS_COM_EQ_CONFIG5, 0x01),
+};
+
+static const struct qmp_phy_init_tbl ipq6018_pcie_pcs_misc_tbl[] = {
        QMP_PHY_INIT_CFG(PCS_PCIE_POWER_STATE_CONFIG2, 0x0d),
        QMP_PHY_INIT_CFG(PCS_PCIE_POWER_STATE_CONFIG4, 0x07),
        QMP_PHY_INIT_CFG(PCS_PCIE_ENDPOINT_REFCLK_DRIVE, 0xc1),
@@ -1593,6 +1596,8 @@ static const struct qmp_phy_cfg ipq6018_pciephy_cfg = {
        .rx_tbl_num             = ARRAY_SIZE(ipq6018_pcie_rx_tbl),
        .pcs_tbl                = ipq6018_pcie_pcs_tbl,
        .pcs_tbl_num            = ARRAY_SIZE(ipq6018_pcie_pcs_tbl),
+       .pcs_misc_tbl           = ipq6018_pcie_pcs_misc_tbl,
+       .pcs_misc_tbl_num       = ARRAY_SIZE(ipq6018_pcie_pcs_misc_tbl),
        .clk_list               = ipq8074_pciephy_clk_l,
        .num_clks               = ARRAY_SIZE(ipq8074_pciephy_clk_l),
        .reset_list             = ipq8074_pciephy_reset_l,
@@ -2374,6 +2379,10 @@ int qcom_qmp_phy_pcie_create(struct device *dev, struct device_node *np, int id,
                qphy->pcs_misc = of_iomap(np, 3);
        }
 
+       if (!qphy->pcs_misc &&
+           of_device_is_compatible(dev->of_node, "qcom,ipq6018-qmp-pcie-phy"))
+               qphy->pcs_misc = qphy->pcs + 0x400;
+
        if (!qphy->pcs_misc)
                dev_vdbg(dev, "PHY pcs_misc-reg not used\n");
 
index c07227f..adb155a 100644 (file)
 
 /* QMP V2 PHY for PCIE gen3 ports - PCS Misc registers */
 
-#define PCS_PCIE_POWER_STATE_CONFIG2                   0x40c
-#define PCS_PCIE_POWER_STATE_CONFIG4                   0x414
-#define PCS_PCIE_ENDPOINT_REFCLK_DRIVE                 0x41c
-#define PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_L         0x440
-#define PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_H         0x444
-#define PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_L         0x448
-#define PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_H         0x44c
-#define PCS_PCIE_OSC_DTCT_CONFIG2                      0x45c
-#define PCS_PCIE_OSC_DTCT_MODE2_CONFIG2                        0x478
-#define PCS_PCIE_OSC_DTCT_MODE2_CONFIG4                        0x480
-#define PCS_PCIE_OSC_DTCT_MODE2_CONFIG5                        0x484
-#define PCS_PCIE_OSC_DTCT_ACTIONS                      0x490
-#define PCS_PCIE_EQ_CONFIG1                            0x4a0
-#define PCS_PCIE_EQ_CONFIG2                            0x4a4
-#define PCS_PCIE_PRESET_P10_PRE                                0x4bc
-#define PCS_PCIE_PRESET_P10_POST                       0x4e0
+#define PCS_PCIE_POWER_STATE_CONFIG2                   0x00c
+#define PCS_PCIE_POWER_STATE_CONFIG4                   0x014
+#define PCS_PCIE_ENDPOINT_REFCLK_DRIVE                 0x01c
+#define PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_L         0x040
+#define PCS_PCIE_L1P1_WAKEUP_DLY_TIME_AUXCLK_H         0x044
+#define PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_L         0x048
+#define PCS_PCIE_L1P2_WAKEUP_DLY_TIME_AUXCLK_H         0x04c
+#define PCS_PCIE_OSC_DTCT_CONFIG2                      0x05c
+#define PCS_PCIE_OSC_DTCT_MODE2_CONFIG2                        0x078
+#define PCS_PCIE_OSC_DTCT_MODE2_CONFIG4                        0x080
+#define PCS_PCIE_OSC_DTCT_MODE2_CONFIG5                        0x084
+#define PCS_PCIE_OSC_DTCT_ACTIONS                      0x090
+#define PCS_PCIE_EQ_CONFIG1                            0x0a0
+#define PCS_PCIE_EQ_CONFIG2                            0x0a4
+#define PCS_PCIE_PRESET_P10_PRE                                0x0bc
+#define PCS_PCIE_PRESET_P10_POST                       0x0e0
 
 /* Only for QMP V2 PHY - QSERDES COM registers */
 #define QSERDES_COM_BG_TIMER                           0x00c