drivers/pci/controller/dwc/pcie-spacemit-k1.c | 8 ++++++++ 1 file changed, 8 insertions(+)
The K1 PCIe controller and PHY are affected by the PERST signal from
the link partner during initialization. With some devices connected,
this can prevent host initialization from progressing and cause the
system to hang while probing the PCIe controller.
Set PCIE_IGNORE_PERSTN before accessing the DBI registers. When set,
this bit makes both the PCIe controller and PHY ignore the PERST
signal from the link partner.
This allows host initialization to complete without being affected by
the link partner's PERST state.
Signed-off-by: Encrow Thorne <encrow.thorne@linux.spacemit.com>
---
drivers/pci/controller/dwc/pcie-spacemit-k1.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/pci/controller/dwc/pcie-spacemit-k1.c b/drivers/pci/controller/dwc/pcie-spacemit-k1.c
index 0564c46e2f48..98f067e1ba81 100644
--- a/drivers/pci/controller/dwc/pcie-spacemit-k1.c
+++ b/drivers/pci/controller/dwc/pcie-spacemit-k1.c
@@ -44,6 +44,7 @@
#define PCIE_CONTROL_LOGIC 0x0004
#define PCIE_SOFT_RESET BIT(0)
+#define PCIE_IGNORE_PERSTN BIT(2)
struct k1_pcie {
struct dw_pcie pci;
@@ -137,6 +138,13 @@ static int k1_pcie_init(struct dw_pcie_rp *pp)
if (ret)
return ret;
+ /*
+ * When set to 1, the PCIe controller and PHY ignore the PERST signal
+ * from the link partner in both RC and EP modes.
+ */
+ regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
+ PCIE_IGNORE_PERSTN);
+
/* Set the PCI vendor and device ID */
dw_pcie_dbi_ro_wr_en(pci);
dw_pcie_writew_dbi(pci, PCI_VENDOR_ID, PCI_VENDOR_ID_SPACEMIT);
---
base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
change-id: 20260921-spacemit-k1-pcie-fix-256ffa8d382d
Best regards,
--
Encrow Thorne <encrow.thorne@linux.spacemit.com>
On Thu Sep 24, 2026 at 10:04 AM +08, Encrow Thorne wrote: > The K1 PCIe controller and PHY are affected by the PERST signal from > the link partner during initialization. With some devices connected, > this can prevent host initialization from progressing and cause the > system to hang while probing the PCIe controller. > > Set PCIE_IGNORE_PERSTN before accessing the DBI registers. When set, > this bit makes both the PCIe controller and PHY ignore the PERST > signal from the link partner. > > This allows host initialization to complete without being affected by > the link partner's PERST state. > > Signed-off-by: Encrow Thorne <encrow.thorne@linux.spacemit.com> Fix tag and reported-by tag [1]? Link: https://lore.kernel.org/all/20260825052249.66921-1-bbanelli@gmail.com/ [1] -- Troy Mitchell
© 2016 - 2026 Red Hat, Inc.