PCIe link failure with PCIe device card

We insert a PCIe device card into M.2 slot, PCIe link failed with log “PCIe link training gen1 timeout!”, “pcie failed with error -110”.
But when i insert a M.2 SSD card, PCIe link successfully.
Is there any difference about PCIe link between M.2 SSD card and an regular/ordinary PCIe device card?
I use a PCIe to M.2 adapter card, this adapter card has been tested OK.
PS: I have tested my PCIe device card on rk3399pro, PCIe link successfully.

There are two type of m.2 ssd:

  • SATA: these use the sata pins on the m.2 slot and have absolutely nothing to do with pcie lanes
  • NVME: these are actually over pcie lanes

So if you have a sata m.2 ssd, it will work even if the pcie link doesn’t work.

Also you might also want to check the PCB revision for your rock960, we’ve had pcie improvements over the last couple of revisions:

@ric96 I do insert a NVME SSD because the device is listed using lspci and the link status is 2.5GT/s x4.
The PCB revision is v1.2.
I’ve noticed that in revision 1.3, “add a dedicated PCIE power, some M.2 devices requires high peak current at power on”, does this affect pcie link negotiation?

@ric96 One additonal infomation: we checked the failed card’s LTSSM register, that is at 0x0 (IDLE) state. It seems the training not started, so should we change some configuration before or in the process of power on?