PCI: mediatek-gen3: handle PERST after reset
Commit Message
From: Frank Wunderlich <frank-w@public-files.de>
De-assert PERST in separate step after reset signals to fully comply
the PCIe CEM clause 2.2.
This fixes some NVME detection issues on mt7986.
Fixes: d3bf75b579b9 ("PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192")
Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
---
Patch is taken from user Ruslan aka RRKh61 (permitted me to send it
with me as author).
https://forum.banana-pi.org/t/bpi-r3-nvme-connection-issue/14563/17
---
drivers/pci/controller/pcie-mediatek-gen3.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
@@ -350,7 +350,13 @@ static int mtk_pcie_startup_port(struct mtk_gen3_pcie *pcie)
msleep(100);
/* De-assert reset signals */
- val &= ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB | PCIE_PE_RSTB);
+ val &= ~(PCIE_MAC_RSTB | PCIE_PHY_RSTB | PCIE_BRG_RSTB);
+ writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG);
+
+ msleep(100);
+
+ /* De-assert PERST# signals */
+ val &= ~(PCIE_PE_RSTB);
writel_relaxed(val, pcie->base + PCIE_RST_CTRL_REG);
/* Check if the link is up or not */