[PATCH] PCI: spacemit: Ignore link partner PERST on K1

Encrow Thorne posted 1 patch 11 hours ago
drivers/pci/controller/dwc/pcie-spacemit-k1.c | 8 ++++++++
1 file changed, 8 insertions(+)
[PATCH] PCI: spacemit: Ignore link partner PERST on K1
Posted by Encrow Thorne 11 hours ago
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>
Re: [PATCH] PCI: spacemit: Ignore link partner PERST on K1
Posted by Troy Mitchell 11 hours ago
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