phy: cadence-torrent: Add USB + DP multilink configuration
authorSwapnil Jakhade <sjakhade@cadence.com>
Tue, 18 Apr 2023 17:31:57 +0000 (19:31 +0200)
committerVinod Koul <vkoul@kernel.org>
Mon, 8 May 2023 11:37:01 +0000 (17:07 +0530)
Add USB + DP no SSC multilink configuration sequences.

Signed-off-by: Swapnil Jakhade <sjakhade@cadence.com>
Link: https://lore.kernel.org/r/20230418173157.25607-5-sjakhade@cadence.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/cadence/phy-cadence-torrent.c

index 2fc5dd4..3b0e4da 100644 (file)
@@ -2896,6 +2896,38 @@ static void cdns_torrent_phy_remove(struct platform_device *pdev)
        cdns_torrent_clk_cleanup(cdns_phy);
 }
 
+/* USB and DP link configuration */
+static struct cdns_reg_pairs usb_dp_link_cmn_regs[] = {
+       {0x0002, PHY_PLL_CFG},
+       {0x8600, CMN_PDIAG_PLL0_CLK_SEL_M0}
+};
+
+static struct cdns_reg_pairs usb_dp_xcvr_diag_ln_regs[] = {
+       {0x0000, XCVR_DIAG_HSCLK_SEL},
+       {0x0001, XCVR_DIAG_HSCLK_DIV},
+       {0x0041, XCVR_DIAG_PLLDRC_CTRL}
+};
+
+static struct cdns_reg_pairs dp_usb_xcvr_diag_ln_regs[] = {
+       {0x0001, XCVR_DIAG_HSCLK_SEL},
+       {0x0009, XCVR_DIAG_PLLDRC_CTRL}
+};
+
+static struct cdns_torrent_vals usb_dp_link_cmn_vals = {
+       .reg_pairs = usb_dp_link_cmn_regs,
+       .num_regs = ARRAY_SIZE(usb_dp_link_cmn_regs),
+};
+
+static struct cdns_torrent_vals usb_dp_xcvr_diag_ln_vals = {
+       .reg_pairs = usb_dp_xcvr_diag_ln_regs,
+       .num_regs = ARRAY_SIZE(usb_dp_xcvr_diag_ln_regs),
+};
+
+static struct cdns_torrent_vals dp_usb_xcvr_diag_ln_vals = {
+       .reg_pairs = dp_usb_xcvr_diag_ln_regs,
+       .num_regs = ARRAY_SIZE(dp_usb_xcvr_diag_ln_regs),
+};
+
 /* PCIe and DP link configuration */
 static struct cdns_reg_pairs pcie_dp_link_cmn_regs[] = {
        {0x0003, PHY_PLL_CFG},
@@ -3912,6 +3944,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                        [TYPE_PCIE] = {
                                [NO_SSC] = &pcie_dp_link_cmn_vals,
                        },
+                       [TYPE_USB] = {
+                               [NO_SSC] = &usb_dp_link_cmn_vals,
+                       },
                },
                [TYPE_PCIE] = {
                        [TYPE_NONE] = {
@@ -3989,6 +4024,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                [EXTERNAL_SSC] = &usb_sgmii_link_cmn_vals,
                                [INTERNAL_SSC] = &usb_sgmii_link_cmn_vals,
                        },
+                       [TYPE_DP] = {
+                               [NO_SSC] = &usb_dp_link_cmn_vals,
+                       },
                },
        },
        .xcvr_diag_vals = {
@@ -3999,6 +4037,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                        [TYPE_PCIE] = {
                                [NO_SSC] = &dp_pcie_xcvr_diag_ln_vals,
                        },
+                       [TYPE_USB] = {
+                               [NO_SSC] = &dp_usb_xcvr_diag_ln_vals,
+                       },
                },
                [TYPE_PCIE] = {
                        [TYPE_NONE] = {
@@ -4076,6 +4117,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                [EXTERNAL_SSC] = &usb_sgmii_xcvr_diag_ln_vals,
                                [INTERNAL_SSC] = &usb_sgmii_xcvr_diag_ln_vals,
                        },
+                       [TYPE_DP] = {
+                               [NO_SSC] = &usb_dp_xcvr_diag_ln_vals,
+                       },
                },
        },
        .pcs_cmn_vals = {
@@ -4100,6 +4144,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                [EXTERNAL_SSC] = &usb_phy_pcs_cmn_vals,
                                [INTERNAL_SSC] = &usb_phy_pcs_cmn_vals,
                        },
+                       [TYPE_DP] = {
+                               [NO_SSC] = &usb_phy_pcs_cmn_vals,
+                       },
                },
        },
        .cmn_vals = {
@@ -4125,6 +4172,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                [TYPE_PCIE] = {
                                        [NO_SSC] = &dp_100_no_ssc_cmn_vals,
                                },
+                               [TYPE_USB] = {
+                                       [NO_SSC] = &sl_dp_100_no_ssc_cmn_vals,
+                               },
                        },
                        [TYPE_PCIE] = {
                                [TYPE_NONE] = {
@@ -4202,6 +4252,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                        [EXTERNAL_SSC] = &sl_usb_100_no_ssc_cmn_vals,
                                        [INTERNAL_SSC] = &sl_usb_100_int_ssc_cmn_vals,
                                },
+                               [TYPE_DP] = {
+                                       [NO_SSC] = &usb_100_no_ssc_cmn_vals,
+                               },
                        },
                },
        },
@@ -4228,6 +4281,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                [TYPE_PCIE] = {
                                        [NO_SSC] = &dp_100_no_ssc_tx_ln_vals,
                                },
+                               [TYPE_USB] = {
+                                       [NO_SSC] = &dp_100_no_ssc_tx_ln_vals,
+                               },
                        },
                        [TYPE_PCIE] = {
                                [TYPE_NONE] = {
@@ -4305,6 +4361,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                        [EXTERNAL_SSC] = &usb_100_no_ssc_tx_ln_vals,
                                        [INTERNAL_SSC] = &usb_100_no_ssc_tx_ln_vals,
                                },
+                               [TYPE_DP] = {
+                                       [NO_SSC] = &usb_100_no_ssc_tx_ln_vals,
+                               },
                        },
                },
        },
@@ -4331,6 +4390,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                [TYPE_PCIE] = {
                                        [NO_SSC] = &dp_100_no_ssc_rx_ln_vals,
                                },
+                               [TYPE_USB] = {
+                                       [NO_SSC] = &dp_100_no_ssc_rx_ln_vals,
+                               },
                        },
                        [TYPE_PCIE] = {
                                [TYPE_NONE] = {
@@ -4408,6 +4470,9 @@ static const struct cdns_torrent_data cdns_map_torrent = {
                                        [EXTERNAL_SSC] = &usb_100_no_ssc_rx_ln_vals,
                                        [INTERNAL_SSC] = &usb_100_no_ssc_rx_ln_vals,
                                },
+                               [TYPE_DP] = {
+                                       [NO_SSC] = &usb_100_no_ssc_rx_ln_vals,
+                               },
                        },
                },
        },
@@ -4424,6 +4489,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                        [TYPE_PCIE] = {
                                [NO_SSC] = &pcie_dp_link_cmn_vals,
                        },
+                       [TYPE_USB] = {
+                               [NO_SSC] = &usb_dp_link_cmn_vals,
+                       },
                },
                [TYPE_PCIE] = {
                        [TYPE_NONE] = {
@@ -4501,6 +4569,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                [EXTERNAL_SSC] = &usb_sgmii_link_cmn_vals,
                                [INTERNAL_SSC] = &usb_sgmii_link_cmn_vals,
                        },
+                       [TYPE_DP] = {
+                               [NO_SSC] = &usb_dp_link_cmn_vals,
+                       },
                },
        },
        .xcvr_diag_vals = {
@@ -4511,6 +4582,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                        [TYPE_PCIE] = {
                                [NO_SSC] = &dp_pcie_xcvr_diag_ln_vals,
                        },
+                       [TYPE_USB] = {
+                               [NO_SSC] = &dp_usb_xcvr_diag_ln_vals,
+                       },
                },
                [TYPE_PCIE] = {
                        [TYPE_NONE] = {
@@ -4588,6 +4662,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                [EXTERNAL_SSC] = &usb_sgmii_xcvr_diag_ln_vals,
                                [INTERNAL_SSC] = &usb_sgmii_xcvr_diag_ln_vals,
                        },
+                       [TYPE_DP] = {
+                               [NO_SSC] = &usb_dp_xcvr_diag_ln_vals,
+                       },
                },
        },
        .pcs_cmn_vals = {
@@ -4612,6 +4689,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                [EXTERNAL_SSC] = &usb_phy_pcs_cmn_vals,
                                [INTERNAL_SSC] = &usb_phy_pcs_cmn_vals,
                        },
+                       [TYPE_DP] = {
+                               [NO_SSC] = &usb_phy_pcs_cmn_vals,
+                       },
                },
        },
        .cmn_vals = {
@@ -4637,6 +4717,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                [TYPE_PCIE] = {
                                        [NO_SSC] = &dp_100_no_ssc_cmn_vals,
                                },
+                               [TYPE_USB] = {
+                                       [NO_SSC] = &sl_dp_100_no_ssc_cmn_vals,
+                               },
                        },
                        [TYPE_PCIE] = {
                                [TYPE_NONE] = {
@@ -4714,6 +4797,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                        [EXTERNAL_SSC] = &sl_usb_100_no_ssc_cmn_vals,
                                        [INTERNAL_SSC] = &sl_usb_100_int_ssc_cmn_vals,
                                },
+                               [TYPE_DP] = {
+                                       [NO_SSC] = &usb_100_no_ssc_cmn_vals,
+                               },
                        },
                },
        },
@@ -4740,6 +4826,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                [TYPE_PCIE] = {
                                        [NO_SSC] = &dp_100_no_ssc_tx_ln_vals,
                                },
+                               [TYPE_USB] = {
+                                       [NO_SSC] = &dp_100_no_ssc_tx_ln_vals,
+                               },
                        },
                        [TYPE_PCIE] = {
                                [TYPE_NONE] = {
@@ -4817,6 +4906,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                        [EXTERNAL_SSC] = &usb_100_no_ssc_tx_ln_vals,
                                        [INTERNAL_SSC] = &usb_100_no_ssc_tx_ln_vals,
                                },
+                               [TYPE_DP] = {
+                                       [NO_SSC] = &usb_100_no_ssc_tx_ln_vals,
+                               },
                        },
                },
        },
@@ -4843,6 +4935,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                [TYPE_PCIE] = {
                                        [NO_SSC] = &dp_100_no_ssc_rx_ln_vals,
                                },
+                               [TYPE_USB] = {
+                                       [NO_SSC] = &dp_100_no_ssc_rx_ln_vals,
+                               },
                        },
                        [TYPE_PCIE] = {
                                [TYPE_NONE] = {
@@ -4920,6 +5015,9 @@ static const struct cdns_torrent_data ti_j721e_map_torrent = {
                                        [EXTERNAL_SSC] = &usb_100_no_ssc_rx_ln_vals,
                                        [INTERNAL_SSC] = &usb_100_no_ssc_rx_ln_vals,
                                },
+                               [TYPE_DP] = {
+                                       [NO_SSC] = &usb_100_no_ssc_rx_ln_vals,
+                               },
                        },
                },
        },