RE: [PATCH 3/8] phy: zynqmp: Refactor common phy initialization into a helper

Pandey, Radhey Shyam
2026-02-10T15:05:22Z

[Public]

> -----Original Message-----
> From: Sean Anderson <sean.anderson@linux.dev>
> Sent: Tuesday, February 3, 2026 5:51 AM
> To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>; Vinod Koul
> <vkoul@kernel.org>; linux-phy@lists.infradead.org
> Cc: Krzysztof Wilczyński <kwilczynski@kernel.org>; Lorenzo Pieralisi
> <lpieralisi@kernel.org>; Pandey, Radhey Shyam
> <radhey.shyam.pandey@amd.com>; linux-kernel@vger.kernel.org; Simek, Michal
> <michal.simek@amd.com>; linux-arm-kernel@lists.infradead.org; linux-
> pci@vger.kernel.org; Neil Armstrong <neil.armstrong@linaro.org>; Rob Herring
> <robh@kernel.org>; Havalige, Thippeswamy <thippeswamy.havalige@amd.com>;
> Manivannan Sadhasivam <mani@kernel.org>; Bjorn Helgaas
> <bhelgaas@google.com>; Sean Anderson <sean.anderson@linux.dev>
> Subject: [PATCH 3/8] phy: zynqmp: Refactor common phy initialization into a helper
>
> All lanes undergoing ILL calibration must be initialized. Split off
> common phy initialization into a helper so that we can ensure all lanes
> are initialized before performing calibration.
>
> Signed-off-by: Sean Anderson <sean.anderson@linux.dev>

Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Thanks!
> ---
>
> drivers/phy/xilinx/phy-zynqmp.c | 22 ++++++++++++++++------
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/phy/xilinx/phy-zynqmp.c b/drivers/phy/xilinx/phy-zynqmp.c
> index 0d3c578d0f3f..152af1702bbd 100644
> --- a/drivers/phy/xilinx/phy-zynqmp.c
> +++ b/drivers/phy/xilinx/phy-zynqmp.c
> @@ -520,6 +520,21 @@ static void xpsgtr_bypass_scrambler_8b10b(struct
> xpsgtr_phy *gtr_phy)
> xpsgtr_write_phy(gtr_phy, L0_TX_DIG_61,
> L0_TM_DISABLE_SCRAMBLE_ENCODER);
> }
>
> +static int xpsgtr_common_init(struct xpsgtr_phy *gtr_phy)
> +{
> + int ret;
> +
> + /* Enable coarse code saturation limiting logic. */
> + xpsgtr_write_phy(gtr_phy, L0_TM_PLL_DIG_37,
> L0_TM_COARSE_CODE_LIMIT);
> +
> + ret = xpsgtr_configure_pll(gtr_phy);
> + if (ret)
> + return ret;
> +
> + xpsgtr_lane_set_protocol(gtr_phy);
> + return 0;
> +}
> +
> /* DP-specific initialization. */
> static void xpsgtr_phy_init_dp(struct xpsgtr_phy *gtr_phy)
> {
> @@ -682,19 +697,14 @@ static int xpsgtr_phy_init(struct phy *phy)
> gtr_dev->tx_term_fix = false;
> }
>
> - /* Enable coarse code saturation limiting logic. */
> - xpsgtr_write_phy(gtr_phy, L0_TM_PLL_DIG_37,
> L0_TM_COARSE_CODE_LIMIT);
> -
> /*
> * Configure the PLL, the lane protocol, and perform protocol-specific
> * initialization.
> */
> - ret = xpsgtr_configure_pll(gtr_phy);
> + ret = xpsgtr_common_init(gtr_phy);
> if (ret)
> goto out;
>
> - xpsgtr_lane_set_protocol(gtr_phy);
> -
> switch (gtr_phy->protocol) {
> case ICM_PROTOCOL_DP:
> xpsgtr_phy_init_dp(gtr_phy);
> --
> 2.35.1.1320.gc452695387.dirty