From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joakim Tjernlund Date: Mon, 28 Aug 2017 17:09:03 +0000 Subject: [U-Boot] FSL PCIe LTSSM >= PCI_LTSSM_L0 equals link up In-Reply-To: References: <1503938907.4350.28.camel@infinera.com> Message-ID: <1503940141.4350.36.camel@infinera.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 .. :) > > http://patchwork.ozlabs.org/patch/801519/. 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. Jocke