Does jetson NX module support the pciE lane polarity reversal feature?

if yes - how to set it ?
why? - “want to compress the streams and send them to M.2 pci-e” - from dev
“we need to flip the lanes to connect it to a different module”
“How do we do the lane flipping”

For AGX there is such thing as reverese polarity support:


PCIe controller configurations:
x8 lane co```
The Jetson Xavier NX module integrates two PCIe controllers supporting:
• Connections to two interfaces (1x1 + 1x4).
• x1 (supports Root Port only), x4 (supports Root Port or Endpoint modes) Upstream and downstream AXI interfaces
that serve as the control path from the Jetson Xavier NX to the external PCIe device
• Gen3 (8 GT/s), supported on x1
• Gen4 (16 GT/s) supported on x4
• Two PCIe controllers, five lanes for a total of 144 GT/s. One controller operates in x1 mode only. The second
controller can operate in x1 or x2 or x4 mode
```nfigurations
Supports x8, x4, x2, and x1 links
Supports both root port and endpoint modes
Supports lane reversal for x8, x4 or x2 and lane flipping for x4, x2 or x1PCIe controller configurations:
x8 lane configurations
Supports x8, x4, x2, and x1 links
Supports both root port and endpoint modes
Supports lane reversal for x8, x4 or x2 and lane flipping for x4, x2 or x1
that is for AGX though from https://static5.arrow.com/pdfs/2018/12/12/12/23/2/725718/nvda_/manual/jetsonxaviersomdatasheet_v0.9.pdf
The Jetson Xavier NX module integrates two PCIe controllers supporting:
• Connections to two interfaces (1x1 + 1x4).
• x1 (supports Root Port only), x4 (supports Root Port or Endpoint modes) Upstream and downstream AXI interfaces
that serve as the control path from the Jetson Xavier NX to the external PCIe device
• Gen3 (8 GT/s), supported on x1
• Gen4 (16 GT/s) supported on x4
• Two PCIe controllers, five lanes for a total of 144 GT/s. One controller operates in x1 mode only. The second
controller can operate in x1 or x2 or x4 mode

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fadaptation_and_bringup_xavier_nx.html%23wwpID0E0VJ0HA

nvidia,tegra19x-pcie.txt (8.4 KB) nvidia,tegra19x-pcie-ep.txt (5.2 KB)

Hi,

I am assuming this question is for M.2 Key M slot, because Key E supports only one lane and there is no concept of lane reversal,

Jetson NX M.2 Key M slot supports both lane reversal and polarity reversal. Hardware takes care of it, no need for extra software programming. However there is one limitation, lane reversal fails if we want to get the link up in x1. If you are using complete x4, then lane reversal works without any issue.

Thanks,
Manikanta

Hi Manikanta,

If I understood correctly, the Jetson automatically handles lane reversal and polarity inversion.
But it does this only for its inbound/RX lanes, doesn’t it?

For example, if I connect the TX0+/TX0- of a memory module to RX0-/RX0+ on the Jetson (note: + and - reversed) then the Jetson will adjust to it. But if I connect the Jetson’s TX0+/TX0- to the memory module’s TX0-/TX0+ (note again: inversed) then it is up to the memory module to adjust? I.e. the memory module must support polarity inversion in this case.

(NB, I think this is more a question about PCIe in general)

Thank you very much!
Regards,
Sven

Hi sven.pauli,

Please help to open a new topic if it’s still an issue. Thanks