Our carrier board has a PCIe x16 slot and was the same designed as p2822 demo carrier board.
The differences between our carrier board and demo board as below:
1. We didn't use NVHS0_SLVS_REFCLK0_N and NVHS0_SLVS_REFCLK0_P.
2. We didn't use A59 & G55 to enable 12v and 3v3.
3. We didn't use E59 as input source for TS3USB30E UQFN10 COMMON.
We encountered a problem while using PCIe x1 or PCIe x4 device at PCIe x16 slot, it didn't work, but if we use PCI x16 device, it works.
Please give us some advice to solve this problem, thank you.
thanks for replying, I removed the line 『include “tegra194-p2888-p2822-pcie-plugin-manager.dtsi”』 at tegra194-plugin-manager-p2888-0000.dtsi and set pcie@141a0000 { status = “okay” } only. I guess it’s root mode right ?
Althrough I didn’t include tegra194-p2888-p2822-pcie-plugin-manager.dtsi, I can still find the file at /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data/enable-nvhs-uphy-pcie-c5 and /sys/firmware/devicetree/base/chosen/plugin-manager/odm-data/disable-pcie-c5-endpoint, I can’t figure out why.
If I plug PCIe x1 or PCIe x4 device at PCIe x16 slot, there has no info at lspci and dmesg shows 141a0000.pcie: PCIe link is not up. If I plug PCIe x16 device at PCIe x16 slot, I can find it at lspci and dmesg shows 141a0000.pcie: link is up
I also found the same problem at PCIe x4 slot, if I use PCIe x4 device at PCIe x4 slot, it can work. But if I use PCIe x1 device at PCIe x4 slot, it didn't work.
Our PCIe x4 slot used pcie@1418000 (PCIE_C0_CTL) and E11 for PCIE_CLKEREQ_N, D10 for PCIE_RST0_N, E15 for PCIE_REF0_CLKN and E14 for PCIE_REF0_CLKP.
Apologies to get to your issue late.
So, what is the reason for not using A59 and G55? Is it because your carrier board has 12v and 3.3v by default? If not, how are you ensuring that the endpoint connected to x16 slot is receiving 12v and 3.3v? The reason why a x16 device is getting enumerated is because your board somehow has 12v going to slot and endpoint comes up with just 12V available? (and all other devices i.e. x1 and x4 devices need 3.3v also available which is not the case here?)
Basically, the point I would like to know is whether the slot has 12v and 3.3v supplies available? It would be really great if these can be measured through a scope during enumeration
I’ve checked 3.3v and 12v are available on our pcie slots.
These power supplies are directly connect to power source and it was available all the time.
We have 2 pcie slots, one is x16 another is x4, our problem is when we used shorter device on the long slot, it wont’s work (e.g. x1/x4/x8 plug in the x16 slots), but if we use the same length of slot size, it will work. (x16 plug in the x16 slot, x4 plug in the x4 slot)
In dev kit design, PRSNT1 is grounded and all PRSNT2 pins are combined and used to control slot supply. When a card is inserted, card shorts both PRSNT1 and PRSNT2 thereby extending PRSNT1’s ground to PRSNT2 which in turn control slot’s supply.
Since you anyway made supplies always available, I think this shouldn’t matter.
BTW, did you try connecting the same x16 which gets enumerated as x4 (with the help of a x4 to x16 riser card … something like Amazon.com )
What about CLKREQ routing to the slot? If there is no CLKREQ routing, can you please add “nvidia,disable-clock-request” to the respective PCIe controller node’s DT entry and try?
If CLKREQ is routed from endpoint device all the way upto root port, then, it should work. Just to rule out issues with CLKREQ, can you please add “nvidia,disable-clock-request” to the device-tree node of the respective PCIe controller?