PCIe Enumeration Issue Due to GPIO Toggle

Dear Team,
We have designed a new carrier board for the Jetson Xavier NX. On the carrier, we are using 2:1 muxes to route the PCIe signals based on certain conditions to say Device 1 & Device 2. The select line on the muxes are connected to the module pin# 128. According to the Xavier NX pinmux, this pin is configured as output to drive 0. So we updated the pinmux to configure the pin# 128 as input. However, during boot up, this signal is driven low & then made as input. During these transitions, the module initiates the PCIe enumeration process. Since the pin# 128 is driven low, the mux routes the signal to the Device 2 where it is not populated instead of Device 1 where the component is populated. Once the module boots to OS, due to these unintended signal transitions, the module misses the PCIe enumeration and our Device 1 doesn’t get exposed to the OS.

We have tried configuring the pin# 128 as Input with pull-up & Input with Z as intial states in 2 separate BSPs but this problem still exits.

Please provide some insights on how to make the module PCIe core retry the PCIe enumeration process or to avoid the unnecessary pin# 128 toggle so that the Device 1 can be properly enumerated before the boot process.

Hello Team,
Can anyone help resolve this?

Sorry for the late response, is this still an issue to support? Thanks

Yes. We still need to resolve this.


I recommend you to update the pinmux & GPIO settings in bct file to make default mux selection to device-1.

However, if you still want to reenumerate the device, follow below steps.

cd /sys/bus/platform/drivers/tegra-pcie-dw
echo 141a0000.pcie > unbind
echo 141a0000.pcie > bind

Above example is for C5 controller, replace “141a0000.pcie” with the controller you are using.


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.