SOLUTION/TUTORIAL: Jetson ORIN Enabling PCIE power

Hi quite a few posts regarding enabling PCIE power:

This post is meant for anyone who is struggling to get it done. This is how I have enabled power to my PCIE port .

1.) Go to this website Jetson Linux 34.1 | NVIDIA Developer and download L4T Driver Package (BSP) Sources and extract them:

tar -xvf public_sources.tbz2
cd Linux_for_Tegra/source/public
tar –xjf kernel_src.tbz2

2.) The provided patch was only a guide for me on what to change. I went directly to the said folders and changed the needed parameters:
2.1) Find the file tegra234-p3737-fixed-regulator.dtsi, it is in ./Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/concord/kernel-dts/cvb
Open it and find this entries:
- p3737_vdd_3v3_pcie: regulator@105 - Remove the flag “regulator-boot-on” and change the pin to TEGRA234_MAIN_GPIO(H, 4)
- p3737_vdd_12v_pcie: regulator@114 - Remove the flag “regulator-boot-on”
2.2) Find the file tegra234-p3737-pcie.dtsi, it is in ./Linux_for_Tegra/source/public/hardware/nvidia/platform/t23x/concord/kernel-dts/cvb
Open it and find this entry:

  • pcie_ep@141a0000 - Replace the
    nvidia,refclk-select-gpios = <&tegra_aon_gpio TEGRA234_AON_GPIO(AA, 4) GPIO_ACTIVE_HIGH>;
    with the
    nvidia,refclk-select-gpios = <&tegra_main_gpio TEGRA234_MAIN_GPIO(Q, 4) GPIO_ACTIVE_HIGH>;

3.) Build the kernel following this guide you can do this directly on Orin if your main computer is slow.

4.) After building go in the kernel_out and find the file tegra234-p3701-0000-p3737-0000.dtb and save it somewhere(USB, mail…)

5.) If you have done the building on the Orin move the tegra234-p3701-0000-p3737-0000.dtb to the PC running native Linux, in my findings the virtual machines don’t work. Make a fresh Orin install. I haven’t done the next step on older(not fresh) Orin install but I don’t see why it shouldn’t work.

6.) Boot the Orin and login in. Copy the built file tegra234-p3701-0000-p3737-0000.dtb to the /boot/dtb. Edit the /boot/extlinux/extlinux.conf - Change the path under FDT to /boot/dtb/tegra234-p3701-0000-p3737-0000.dtb

7.) Reboot and it should work

I have attached my tegra234-p3701-0000-p3737-0000.dtb, I am not sure if this file is compatible with all the Orins. If somebody tries this, please let it known
tegra234-p3701-0000-p3737-0000.dtb (300.2 KB)

Take this guide with a grain of salt, I am nowhere close to being good at Linux. I hope I haven’t missed a step or made a big mistake. This procedure worked for me flawlessly.

I hope this guide saves someone precious hours/days

3 Likes

Great! Thanks for your sharing to the community!

Hi dv6386,

Thank you so much for posting this. I too was unable to get the PCIe slot on my Orin dev kit working, even after attempting the device tree changes in your post and the other posts you linked. However, I finally got my slot working after using your DTB file, so I appreciate you including it in your post!

I think the issues I experienced were in the DTS preprocessing steps. I decompiled my DTB and made the four changes you listed, but they didn’t work for me. After I tested your DTB file and it worked, I ended up decompiling your file and using the DTS source to figure out which changes I needed to make without the need to preprocess.

The GPIO changes you list require DTS preprocessing because of the use of the TEGRA234_MAIN_GPIO directive. If anyone else is having issues with preprocessing, here are the raw GPIO values that can be used instead:

  1. regulator@105 - change the gpio field to gpio = <0x14 0x3c 0x00>;
  2. pcie_ep@141a0000 - change the nvidia,refclk-select-gpios field to nvidia,refclk-select-gpios = <0x14 0x7c 0x00>;

After making these changes as well as the two removals of the regulator-boot-on flags, I compiled my DTS into a DTB and flashed the Orin. Once the Orin booted up, I ran the lspci command and saw that my PCIe card was being detected.

1 Like

Thank you so much, steps 1-5 didnt work for me so I flashed an orin with Jetson Linux 34.1.1 and started from step 6. I have been stuck on this for awhile and copying over the tegra234-p3701-0000-p3737-0000.dtb file and changing the path worked for me.

Thank you!!!

1 Like