]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: dwc: Always stop link in the dw_pcie_suspend_noirq
authorRichard Zhu <hongxing.zhu@nxp.com>
Tue, 10 Dec 2024 08:15:56 +0000 (16:15 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Sat, 18 Jan 2025 17:35:26 +0000 (11:35 -0600)
On the i.MX8QM, PCIe link can't be re-established again in
dw_pcie_resume_noirq(), if the LTSSM_EN bit is not cleared
properly in dw_pcie_suspend_noirq().

So, add dw_pcie_stop_link() to dw_pcie_suspend_noirq() to fix
this issue and to align the suspend/resume functions since there
is dw_pcie_start_link() in dw_pcie_resume_noirq() already.

Fixes: 4774faf854f5 ("PCI: dwc: Implement generic suspend/resume functionality")
Link: https://lore.kernel.org/r/20241210081557.163555-2-hongxing.zhu@nxp.com
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
[kwilczynski: commit log]
Signed-off-by: Krzysztof WilczyƄski <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
drivers/pci/controller/dwc/pcie-designware-host.c

index bcbbe02f8f86f7ba23733d3e95bdfe8a238e3da9..d6d5fff1121c6baffb59172f57da13c81dd2cbc3 100644 (file)
@@ -952,6 +952,7 @@ int dw_pcie_suspend_noirq(struct dw_pcie *pci)
                return ret;
        }
 
+       dw_pcie_stop_link(pci);
        if (pci->pp.ops->deinit)
                pci->pp.ops->deinit(&pci->pp);