1 From d8588b5b9fddffd51962c13db7d00ae6f2ac945b Mon Sep 17 00:00:00 2001
2 From: Tim Harvey <tharvey@gateworks.com>
3 Date: Thu, 19 Jun 2025 16:04:53 -0700
4 Subject: [PATCH] PCI: imx6: Remove apps_reset toggle in _core_reset functions
6 apps_reset is LTSSM_EN on i.MX7, i.MX8MQ, i.MX8MM and i.MX8MP platforms.
7 Since the assertion/de-assertion of apps_reset(LTSSM_EN bit) had been
8 wrappered in imx_pcie_ltssm_enable() and imx_pcie_ltssm_disable();
10 Remove apps_reset toggle in imx_pcie_assert_core_reset() and
11 imx_pcie_deassert_core_reset() functions. Use imx_pcie_ltssm_enable()
12 and imx_pcie_ltssm_disable() to configure apps_reset directly.
14 Fix fail to enumerate reliably PI7C9X2G608GP (hotplug) at i.MX8MM, which
17 Reported-by: Tim Harvey <tharvey@gateworks.com>
18 Closes: https://lore.kernel.org/all/CAJ+vNU3ohR2YKTwC4xoYrc1z-neDoH2TTZcMHDy+poj9=jSy+w@mail.gmail.com/
19 Fixes: ef61c7d8d032 ("PCI: imx6: Deassert apps_reset in imx_pcie_deassert_core_reset()")
20 Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
22 drivers/pci/controller/dwc/pci-imx6.c | 5 +++--
23 1 file changed, 3 insertions(+), 2 deletions(-)
25 --- a/drivers/pci/controller/dwc/pci-imx6.c
26 +++ b/drivers/pci/controller/dwc/pci-imx6.c
27 @@ -778,7 +778,6 @@ static int imx7d_pcie_core_reset(struct
28 static void imx_pcie_assert_core_reset(struct imx_pcie *imx_pcie)
30 reset_control_assert(imx_pcie->pciephy_reset);
31 - reset_control_assert(imx_pcie->apps_reset);
33 if (imx_pcie->drvdata->core_reset)
34 imx_pcie->drvdata->core_reset(imx_pcie, true);
35 @@ -790,7 +789,6 @@ static void imx_pcie_assert_core_reset(s
36 static int imx_pcie_deassert_core_reset(struct imx_pcie *imx_pcie)
38 reset_control_deassert(imx_pcie->pciephy_reset);
39 - reset_control_deassert(imx_pcie->apps_reset);
41 if (imx_pcie->drvdata->core_reset)
42 imx_pcie->drvdata->core_reset(imx_pcie, false);
43 @@ -991,6 +989,9 @@ static int imx_pcie_host_init(struct dw_
47 + /* Make sure that PCIe LTSSM is cleared */
48 + imx_pcie_ltssm_disable(dev);
50 ret = imx_pcie_deassert_core_reset(imx_pcie);
52 dev_err(dev, "pcie deassert core reset failed: %d\n", ret);