From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaowei Bao Date: Tue, 29 Aug 2017 03:19:08 +0000 Subject: [U-Boot] FSL PCIe LTSSM >= PCI_LTSSM_L0 equals link up In-Reply-To: References: <1503938907.4350.28.camel@infinera.com> <1503940141.4350.36.camel@infinera.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi York, > + if (ltssm == LTSSM_PCIE_DETECT_QUIET || > + ltssm == LTSSM_PCIE_DETECT_ACTIVE) { When the pcie slot have no device, the pcie controller access this register return LTSSM_PCIE_DETECT_QUIET or LTSSM_PCIE_DETECT_ACTIVE state, In order to avoid unnecessary delay, return directly. Reference the spec, except L0 state, the L0s L1 L2state can consider the link state, but these state regards the power management, our pcie driver have not power management code in uboot, so just need to judge the L0 state. Thanks -----Original Message----- From: York Sun Sent: Tuesday, August 29, 2017 1:15 AM To: Xiaowei Bao Cc: Joakim Tjernlund ; u-boot at lists.denx.de Subject: Re: FSL PCIe LTSSM >= PCI_LTSSM_L0 equals link up +Xiaowei On 08/28/2017 10:09 AM, Joakim Tjernlund wrote: > On Mon, 2017-08-28 at 16:55 +0000, York Sun wrote: >> On 08/28/2017 09:48 AM, Joakim Tjernlund wrote: >>> FSL PCIe controller drivers before REV 3 has this test for link up: >>> enabled = ltssm >= PCI_LTSSM_L0; >>> >>> We have a PCIe dev. that stays in LTSSM=0x51 (Polling Compliance) >>> when non ready for PCI transaktions. When FSL PCIe controller tries >>> to access this device, it hangs forever. >>> >>> Is LTSSM=0x51 really a "legal" state for link up? >>> If not, what is a suitable range(maybe LO <= ltssm <= L0s(0x27)) ? >>> >>> Jocke >>> >>> BTW, the same test is valid in Linux too. >>> >> >> Jocke, >> >> I am not an expert on PCIe. Please if this thread is helpful, > Me neither .. :) >> >> https://emea01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpatchwork.ozlabs.org%2Fpatch%2F801519%2F&data=01%7C01%7Cyork.sun%40nxp.com%7Cf46ff5111ba04e631a9b08d4ee377ecc%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0&sdata=n9%2B2NIjEvsMBCljRLHS6NVVN4ANa3nBGpwUjI4Od%2Bhs%3D&reserved=0. > > It mentions polling compliance but this driver already tests for: > if (ltssm < LTSSM_PCIE_L0) > return 0; > return 1; > > It just adds some delay if the device is in Polling Compliance to see > if that changes to L0. > Since both layerscape and fsl >= rev 3 already require ltssm to be == > L0, I suspect the ltssm >= L0 is bogus. > Xiaowei, can you comment? York