All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/9] pci: spacemit: fixes for the K1 PCIe host driver
@ 2026-10-02 21:31 ` Dave Klotz
  0 siblings, 0 replies; 13+ messages in thread
From: Dave Klotz @ 2026-10-02 21:30 UTC (permalink / raw)
  To: u-boot
  Cc: Huan Zhou, Eric Chung, Neil Armstrong, Yixun Lan, Tom Rini,
	u-boot-spacemit

Fixes for "pci: spacemit: add DesignWare PCIe host controller driver",
following the Linux driver and the bring-up order that works on the
boards I have:

- power the slot from the root port's vpcie3v3-supply (the vendor
  k1x,pwr_on property is not in any upstream device tree);
- keep the PHY interface in reset until LTSSM enable, and soft-reset
  the controller before bring-up so a warm reset starts clean;
- check clock, reset and iATU setup errors;
- report link up from the SMLH/RDLH bits in the link window;
- leave the link speed alone unless max-link-speed is set, instead of
  writing Gen1 into LNKCAP and LNKCTL2, so the OS can still train the
  link at its full speed;
- drop ASPM L1 from LNKCAP as Linux does for NVMe drives;
- set the link width from num-lanes;
- keep the probe successful when the link is down (an empty slot), and
  answer config cycles behind a down link with all ones.

Tested on an OrangePi RV2: an NVMe drive on port B is found and
FreeBSD boots from it by EFI; FreeBSD then retrains the link to x2 at
5 GT/s (with the Gen1 cap in place it could not). Port C, empty, reports
"Link down" and nothing hangs. Under U-Boot this drive still trains x1
at 2.5 GT/s.

Two observations about the RV2 device tree, not addressed here:
pcie1_3_cfg and pcie2_4_cfg mux CLKREQ#, and with CLKREQ# muxed the
controller gates its DBI clock whenever the endpoint leaves CLKREQ# high,
so the next DBI access hangs; I run the board with PERST# only in those
groups. And port B needs num-lanes = <2>, which the tree does not set.

Dave Klotz (9):
  pci: spacemit: power the slot from vpcie3v3-supply
  pci: spacemit: hold the PHY interface in reset until link start
  pci: spacemit: soft reset the controller before bring-up
  pci: spacemit: check clock, reset and iATU setup results
  pci: spacemit: report link up from the link status register
  pci: spacemit: do not force the link to 2.5 GT/s
  pci: spacemit: do not advertise ASPM L1
  pci: spacemit: set the link width from num-lanes
  pci: spacemit: do not fail the probe when the link is down

 drivers/pci/pcie_dw_spacemit.c | 231 +++++++++++++++++++++++----------
 drivers/pci/pcie_dw_spacemit.h |  12 --
 2 files changed, 162 insertions(+), 81 deletions(-)


base-commit: a000f2af240eaa996cec92f8d44bad96fdf3f898
-- 
2.55.0



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2026-10-02 21:32 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-02 21:30 [PATCH 0/9] pci: spacemit: fixes for the K1 PCIe host driver Dave Klotz
2026-10-02 21:31 ` [PATCH 0/2] spacemit: k1: SPL robustness for boards without a PMIC or SPI NOR Dave Klotz
2026-10-02 21:30 ` [PATCH 1/9] pci: spacemit: power the slot from vpcie3v3-supply Dave Klotz
2026-10-02 21:30 ` [PATCH 2/9] pci: spacemit: hold the PHY interface in reset until link start Dave Klotz
2026-10-02 21:30 ` [PATCH 3/9] pci: spacemit: soft reset the controller before bring-up Dave Klotz
2026-10-02 21:30 ` [PATCH 4/9] pci: spacemit: check clock, reset and iATU setup results Dave Klotz
2026-10-02 21:31 ` [PATCH 5/9] pci: spacemit: report link up from the link status register Dave Klotz
2026-10-02 21:31 ` [PATCH 6/9] pci: spacemit: do not force the link to 2.5 GT/s Dave Klotz
2026-10-02 21:31 ` [PATCH 7/9] pci: spacemit: do not advertise ASPM L1 Dave Klotz
2026-10-02 21:31 ` [PATCH 8/9] pci: spacemit: set the link width from num-lanes Dave Klotz
2026-10-02 21:31 ` [PATCH 9/9] pci: spacemit: do not fail the probe when the link is down Dave Klotz
2026-10-02 21:31 ` [PATCH 1/2] spacemit: k1: do not require a PMIC or an SPI controller in SPL Dave Klotz
2026-10-02 21:31 ` [PATCH 2/2] spacemit: k1: fall back to the other boot devices " Dave Klotz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.