|
|
Log in / Subscribe / Register

phy: zynqmp: Perform complete initialization, including ILL calibration

From:  Sean Anderson <sean.anderson-AT-linux.dev>
To:  Laurent Pinchart <laurent.pinchart-AT-ideasonboard.com>, Vinod Koul <vkoul-AT-kernel.org>, linux-phy-AT-lists.infradead.org
Subject:  [PATCH 0/8] phy: zynqmp: Perform complete initialization, including ILL calibration
Date:  Mon, 02 Feb 2026 19:21:20 -0500
Message-ID:  <20260203002128.935842-1-sean.anderson@linux.dev>
Cc:  Krzysztof WilczyƄski <kwilczynski-AT-kernel.org>, Lorenzo Pieralisi <lpieralisi-AT-kernel.org>, Radhey Shyam Pandey <radhey.shyam.pandey-AT-amd.com>, linux-kernel-AT-vger.kernel.org, Michal Simek <michal.simek-AT-amd.com>, linux-arm-kernel-AT-lists.infradead.org, linux-pci-AT-vger.kernel.org, Neil Armstrong <neil.armstrong-AT-linaro.org>, Rob Herring <robh-AT-kernel.org>, Thippeswamy Havalige <thippeswamy.havalige-AT-amd.com>, Manivannan Sadhasivam <mani-AT-kernel.org>, Bjorn Helgaas <bhelgaas-AT-google.com>, Sean Anderson <sean.anderson-AT-linux.dev>, Conor Dooley <conor+dt-AT-kernel.org>, Krzysztof Kozlowski <krzk+dt-AT-kernel.org>, devicetree-AT-vger.kernel.org
Archive-link:  Article

This series completely initializes the GTRs in Linux, making all
bootloader initialization (as performed by init_serdes() in
psu_init_gpl.c) optional. This gives the following advantages:

- On some boards (mine) the reference clocks may not be configured in
  SPL/FSBL. So ILL calibration will fail (and take a long time to do so)
  unless we defer initialization to U-Boot/Linux where the phy driver
  can request the clocks.
- If PCIe/SATA are not used in U-Boot, ILL calibration can be deferred
  until Linux when it can be done it parallel with other initialization.
- We will have flexibility to switch between different configurations at
  runtime. For example, this could allow supporting both SATA and PCIe M.2
  cards with [1].

I have tested this series with DP, PCIe, SGMII, and SATA. USB3 is broken
on my dev board at the moment (independent of this series; need to
investigate) so I have not tested that. I have an equivalent set of
patches for U-Boot that I will try to post soon.

[1] https://lore.kernel.org/linux-pci/20260107-pci-m2-v5-0-81...


Sean Anderson (8):
  dt-bindings: pci: xilinx-nwl: Add resets
  phy: zynqmp: Refactor bus width configuration into helper
  phy: zynqmp: Refactor common phy initialization into a helper
  phy: zynqmp: Calibrate ILL if necessary
  phy: zynqmp: Initialize chicken bits
  PCI: xilinx-nwl: Split phy_init from phy_power_on
  PCI: xilinx-nwl: Reset the core during probe
  arm64: zynqmp: Add PCIe resets

 .../bindings/pci/xlnx,nwl-pcie.yaml           |  17 +
 arch/arm64/boot/dts/xilinx/zynqmp.dtsi        |   4 +
 drivers/pci/controller/pcie-xilinx-nwl.c      | 255 +++++++--
 drivers/phy/xilinx/phy-zynqmp.c               | 487 +++++++++++++++++-
 4 files changed, 713 insertions(+), 50 deletions(-)

-- 
2.35.1.1320.gc452695387.dirty




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds