> -----Original Message----- > From: Tim Harvey <tharvey@xxxxxxxxxxxxx> > Sent: 2025年6月7日 5:04 > To: Hongxing Zhu <hongxing.zhu@xxxxxxx> > Cc: l.stach@xxxxxxxxxxxxxx; bhelgaas@xxxxxxxxxx; lpieralisi@xxxxxxxxxx; > kw@xxxxxxxxx; manivannan.sadhasivam@xxxxxxxxxx; robh@xxxxxxxxxx; > krzk+dt@xxxxxxxxxx; conor+dt@xxxxxxxxxx; shawnguo@xxxxxxxxxx; Frank Li > <frank.li@xxxxxxx>; s.hauer@xxxxxxxxxxxxxx; festevam@xxxxxxxxx; > imx@xxxxxxxxxxxxxxx; kernel@xxxxxxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx; > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; > linux-kernel@xxxxxxxxxxxxxxx > Subject: Re: [PATCH v7 05/10] PCI: imx6: Deassert apps_reset in > imx_pcie_deassert_core_reset() > > On Tue, Nov 26, 2024 at 12:03 AM Richard Zhu <hongxing.zhu@xxxxxxx> > wrote: > > > > Since the apps_reset is asserted in imx_pcie_assert_core_reset(), it > > should be deasserted in imx_pcie_deassert_core_reset(). > > > > Fixes: 9b3fe6796d7c ("PCI: imx6: Add code to support i.MX7D") > > Signed-off-by: Richard Zhu <hongxing.zhu@xxxxxxx> > > Reviewed-by: Manivannan Sadhasivam > <manivannan.sadhasivam@xxxxxxxxxx> > > Reviewed-by: Frank Li <Frank.Li@xxxxxxx> > > --- > > drivers/pci/controller/dwc/pci-imx6.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c > > b/drivers/pci/controller/dwc/pci-imx6.c > > index 3538440601a7..413db182ce9f 100644 > > --- a/drivers/pci/controller/dwc/pci-imx6.c > > +++ b/drivers/pci/controller/dwc/pci-imx6.c > > @@ -776,6 +776,7 @@ static void imx_pcie_assert_core_reset(struct > > imx_pcie *imx_pcie) static int imx_pcie_deassert_core_reset(struct > > imx_pcie *imx_pcie) { > > reset_control_deassert(imx_pcie->pciephy_reset); > > + reset_control_deassert(imx_pcie->apps_reset); > > > > if (imx_pcie->drvdata->core_reset) > > imx_pcie->drvdata->core_reset(imx_pcie, false); > > -- > > 2.37.1 > > > > > > Hi Richard, > > I've found that this patch causes a regression on i.MX8MM and i.MX8MP > boards with hotplug capable bridges: > i.MX8MM+PI7C9X2G404EV (this switch does not support hotplug) - no issues > i.MX8MM+PI7C9X2G608GP (hotplug) - fails to reliably enumerate > downstream devices about 80% of the time ^^^ when this occurs > PCI_PRIMARY_BUS (0x18) for the root complex > 0000:00:00.0 reads 0x00000000 instead of 0x00ff0100 > (PCI_SECONDARY_BUS is 0 instead of 1 and PCI_SUBBORDINATE_BUS is 0 > instead of 0xff) i.MX8MP+PI7C9X2G608GP (hotplug) - hangs at > imx_pcie_ltssm_enable deassert apps_reset > > In both cases here reverting ef61c7d8d032 ("PCI: imx6: Deassert apps_reset > in imx_pcie_deassert_core_reset()") resolves this. > [Richard Zhu] I'm afraid that the ltssm_en bit assert to 1b'1 in imx_pcie_deassert_core_reset() is not correct in your use case. Actually, the apps_reset isn't a real reset. It's the ltssm_en bit.