Other Parts Discussed in Thread: TMDS243EVM,
The board-to-board PCIe benchmark runs fine with a TMDS64EVM endpoint connect to a TMDS243EVM root complex using an rx/tx crossover PCIe cable (both eval boards are running R5 example apps).
When the TMDS64EVM endpoint is connected to a PC mainboard running Linux, the am64 endpoint never gets past the call to Pcie_waitLinkUp(). I've watched the LTSSM status value: it starts out alternating between 0x00 and 0x01. When the PC is rebooted and the PCIe bus is enumerated, the am64's LTSSM status then changes to 0x03 (POLL COMPLIANCE) and stays at that value until the R5 endpoint application is reloaded and restarted. Then it will start alternating between 0x00 and 0x01 again -- until the PC is rebooted and it again stops at 0x03.
We tried changing the resistors on p30 of the EVM schematic so that the am64 would use the PCIe reference clock provided by the PC mainboard (and reconnected the refclk pair in the cable — which had been disconnected). That made no difference: the link state machine still stops at 0x03 (POLL COMPLAINCE) when the PC host performs bus enumeration.
The pinout of the am243/am64 PCIe slot is the the same as a PC mainboard, correct? So the rx/tx crossover cable that works when the am64 endpoint is connected to the am243 root complex should be correct when it is used to connect the am64 endpoint to a PC mainboard?
What might be causing the link failure?