We have a custom board designed for compatible with Nvidia Xavier NX and Nvidia Nano. The carrier board has the 1 M.2 E -Key (for WiFi Card) and 1 M.2 M-Key (for NVMe Card).
Here’s the connection from module between carrier board.
Pin# / Module Pin Name
162 | PCIE0_CLK_P => E-Key
160 | PCIE0_CLK_N => E-Key
136 | PCIE0_TX0_P => E-Key
134 | PCIE0_TX0_N => E-Key
133 | PCIE0_RX0_P => E-Key
131 | PCIE0_RX0_N => E-Key
175 | PCIE1_CLK_P => M-Key
173 | PCIE1_CLK_N => M-Key
174 | PCIE1_TX0_P => M-Key
172 | PCIE_TX0_N => M-Key
169 | PCIE_RX0_P => M-Key
167 | PCIE_RX0_N => M-Key
Then the following pin are shared with E-Key and M-Key.
179 | PCIE_WAKE
181 | PCIE0_RST
180 | PCIE0_CLKREQ
210 | CLK_32K_OUT
First I tried on NX platform, without modifying and kernel, dts and odmdata, I got
- E-Key WiFi card can be enumerated
- M-Key NVMe can not be enumerated.
And also M-Key clock is not active.
But after doing a trick, change ODMDATA=0xB8190000; (change bit 12 => PCIe C5 to endpoint mode), I got the following:
- M-Key NVMe can be enumerated
- E-Key WiFi can not be enumerated.
My question is
- Is under such hardware connection, NVMe and WiFi can co-exist at the same time ? How to modify DTS file ?
- All these PCIe controllers should be in RC mode, but why set C5 controller to endpoint mode make M-Key NVMe workable but diable E-Key WiFi card.