Orin nx dp enable fail

yes, please use them.

Hi Wayne, these were the ones I used and get the errors reported. Any ideas on what to check

Weird. Are you use the default setting from pinmux or you have changed some contents?

Sounds duplicated with Jetson Orin NX 35.2.1 program on 3509 carrier - #22 by Cecelia but this won’t have issue with A03 one.

Thanks Wayne, if you think my procedure is right, then I will retry from start and see if it can work on second try.

@Wayne,

I am still having problems with DP on Orin NX

Please let me know if there is anything missing from this simplified procedure to change Orin default HDMI to DP.

  1. compared DP and HDMI pinmux files (a03), and simply edited the existing HDMI pinmux file in the sources directory to match the DP pinmux file settings, and same for GPIO, and padvoltage is unchanged.

  2. edited the hotplug, deleting the specified line

  3. edited tegra234-p3767-0000-p3509-a02.dts and changed to the DP file option.

Recompiled sources ( no compiler errors)

Reflashed device ( no flash errors, device boots to configuration menu - visible using HDMI monitor on dev kit board, even though files edited for DP)

The above method appears to work on a Xavier NX on dev kit carrier to change primary display from HDMI to DP

When applied to Orin NX, I get no display on custom board, but I do get a HDMI display on dev kit board (mainly because Orin is hardwired to HDMI port on dev kit)

On our custom board that worked with Xavier NX, we rewired DP from DP0 to DP1 for Orin NX. DP0 worked on Xavier, and same circuit just copied to DP1 and consistent with design guide for Orin.

Orin NX on the custom board shows no display from DP and If I unplug DP, and then plug back in, I get this message on debug:

------------[ cut here ]------------␍␊
[21:56:19:546] [ 109.006646] WARNING: CPU: 0 PID: 0 at drivers/gpio/gpio-tegra186.c:937 tegra186_gpio_irq+0x1ac/0x1f0␍␊
[21:56:19:546] [ 109.016006] Modules linked in: nvidia_modeset(O) fuse lzo_rle lzo_compress zram ramoops reed_solomon loop snd_soc_tegra186_dspk snd_soc_tegra210_ope snd_soc_tegra186_asrc snd_soc_tegra210_iqc snd_soc_tegra186_arad snd_soc_tegra210_mvc snd_soc_tegra210_afc snd_soc_tegra210_dmic snd_soc_tegra210_mixer snd_soc_tegra210_adx snd_soc_tegra210_amx snd_soc_tegra210_admaif snd_soc_tegra210_sfc snd_soc_tegra_pcm snd_soc_tegra210_i2s aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce input_leds snd_soc_spdif_tx cdc_acm snd_soc_tegra_machine_driver snd_soc_tegra210_adsp userspace_alert snd_soc_tegra_utils snd_soc_simple_card_utils snd_soc_tegra210_ahub r8168 snd_hda_codec_hdmi tegra210_adma nvadsp nv_imx219 tegra_bpmp_thermal snd_hda_tegra snd_hda_codec snd_hda_core r8169 realtek spi_tegra114 nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables [last unloaded: mtd]␍␊
[21:56:19:632] [ 109.098869] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W O 5.10.104-tegra #1␍␊
[21:56:19:632] [ 109.107064] Hardware name: Unknown NVIDIA Orin NX Developer Kit/NVIDIA Orin NX Developer Kit, BIOS 2.1-32413640 01/24/2023␍␊
[21:56:19:632] [ 109.118389] pstate: 20400089 (nzCv daIf +PAN -UAO -TCO BTYPE=–)␍␊
[21:56:19:632] [ 109.124545] pc : tegra186_gpio_irq+0x1ac/0x1f0␍␊
[21:56:19:676] [ 109.129088] lr : tegra186_gpio_irq+0x11c/0x1f0␍␊
[21:56:19:676] [ 109.133632] sp : ffff800010003c60␍␊
[21:56:19:676] [ 109.137023] x29: ffff800010003c60 x28: ffff3c4c00e98460 ␍␊
[21:56:19:676] [ 109.142471] x27: ffffdbdd0cf1cff8 x26: 0000000000000018 ␍␊
[21:56:19:676] [ 109.147916] x25: ffff3c4c05752080 x24: ffff3c4c057bac00 ␍␊
[21:56:19:676] [ 109.153359] x23: 000000000000000c x22: 000000000000004c ␍␊
[21:56:19:676] [ 109.158795] x21: 00000000000000b9 x20: 0000000000000000 ␍␊
[21:56:19:676] [ 109.164239] x19: ffffdbdd0c3ce690 x18: 0000000000000000 ␍␊
[21:56:19:676] [ 109.169685] x17: 0000000000000000 x16: ffffdbdd0c03f480 ␍␊
[21:56:19:719] [ 109.175126] x15: 0000000000000000 x14: ffffdbdd0ce02680 ␍␊
[21:56:19:719] [ 109.180570] x13: ffff60722215f000 x12: 000000003464d91d ␍␊
[21:56:19:719] [ 109.186007] x11: 0000000000000040 x10: ffffdbdd0ce87a80 ␍␊
[21:56:19:719] [ 109.191451] x9 : ffffdbdd0ce87a78 x8 : ffff3c4c004bbdc0 ␍␊
[21:56:19:719] [ 109.196894] x7 : 0000000000000000 x6 : 0000000000000001 ␍␊
[21:56:19:719] [ 109.202336] x5 : 0000000000000000 x4 : 0000000000000000 ␍␊
[21:56:19:719] [ 109.207780] x3 : 0000000000000000 x2 : ffffdbdd0b2ae170 ␍␊
[21:56:19:719] [ 109.213219] x1 : 000000000000004c x0 : 0000000000000000 ␍␊
[21:56:19:763] [ 109.218663] Call trace:␍␊
[21:56:19:763] [ 109.221171] tegra186_gpio_irq+0x1ac/0x1f0␍␊
[21:56:19:763] [ 109.225372] generic_handle_irq+0x40/0x60␍␊
[21:56:19:763] [ 109.229478] __handle_domain_irq+0x70/0xd0␍␊
[21:56:19:763] [ 109.233673] gic_handle_irq+0x68/0x134␍␊
[21:56:19:763] [ 109.237509] el1_irq+0xd0/0x180␍␊
[21:56:19:763] [ 109.240720] __do_softirq+0xb4/0x3e8␍␊
[21:56:19:763] [ 109.244391] irq_exit+0xc0/0xe0␍␊
[21:56:19:763] [ 109.247607] __handle_domain_irq+0x74/0xd0␍␊
[21:56:19:763] [ 109.251806] gic_handle_irq+0x68/0x134␍␊
[21:56:19:763] [ 109.255644] el1_irq+0xd0/0x180␍␊
[21:56:19:763] [ 109.258856] cpuidle_enter_state+0xb8/0x410␍␊
[21:56:19:811] [ 109.263132] cpuidle_enter+0x40/0x60␍␊
[21:56:19:811] [ 109.266789] call_cpuidle+0x44/0x80␍␊
[21:56:19:811] [ 109.270362] do_idle+0x208/0x270␍␊
[21:56:19:811] [ 109.273667] cpu_startup_entry+0x2c/0x70␍␊
[21:56:19:811] [ 109.277678] rest_init+0xdc/0xe8␍␊
[21:56:19:811] [ 109.280982] arch_call_rest_init+0x18/0x20␍␊
[21:56:19:811] [ 109.285175] start_kernel+0x514/0x54c␍␊
[21:56:19:811] [ 109.288914] —[ end trace a53dd5aff18a68b1 ]—

Orin NX with same image on dev kit board I get this message when I disconnect and reconnect HDMI

$ [ 33.408026] WARNING: CPU: 0 PID: 0 at drivers/gpio/gpio-tegra186.c:937 tegra186_gpio_irq+0x1ac/0x1f0␍␊
[22:31:30:348] [ 33.417783] —[ end trace de404227ea4756a2 ]—␍␊
[22:31:42:955] [ 46.038448] WARNING: CPU: 0 PID: 0 at drivers/gpio/gpio-tegra186.c:937 tegra186_gpio_irq+0x1ac/0x1f0␍␊
[22:31:42:976] [ 46.048250] —[ end trace de404227ea4756a3 ]—␍␊
[22:31:49:651] [ 52.711040] WARNING: CPU: 0 PID: 0 at drivers/gpio/gpio-tegra186.c:937 tegra186_gpio_irq+0x1ac/0x1f0␍␊
[22:31:49:651] [ 52.720822] —[ end trace de404227ea4756a4 ]–

maybe these debug messages can point to what the problem might be, any help greatly appreciated

regards, rapidproto

Hi,

Did you change the DCB image from HDMI to DP? Or you don’t know what that is?

Hi Wayne,

Are you referring to these files mentioned earlier in this thread… yes I changed this line

hardware/nvidia/platform/t23x/p3768/kernel-dts/tegra234-p3767-0000-p3509-a02.dts

change this line

#include “tegra234-dcb-p3767-0000-hdmi.dtsi”

for this line

#include “tegra234-dcb-p3767-0000-dp.dtsi”

Could you attach the dts you are using now by converting it back from dtb file?

Hi Wayne,

the dtb from /bootloader directory converted to dts is attached. The dcb-image matched the dp dcb-image in tegra234-dcb-p3767-0000-dp.dtsi so it looks like that part is right.
output.dts (420.5 KB)

Do you have full logs to share too?

Orin-DP-mod-debug-v5pcb.log (89.8 KB)
Orin-DP-mod-dmesg-v5pcb.log (66.5 KB)

How did you build your device tree?

sudo dtc -I dts -O dtb -o tegra234-p3767-0000-p3509-a02.dtb output.dts

BTW, I tried a Xavier in our board, no kernel mods, and made an adaptor to connect the same pairs used in displayport connector onto an HDMI connector and the display works fine.

But if I swap Xavier for Orin, no kernel mods therefore should default to HDMI, and using same adaptor, I do not get any display from Orin.

HPD is connected and neither active high or active low makes any difference

What else could enable/disable the Orin display output that is different to Xavier.

Hi,

There is no need to check anything between xavier and Orin as the display software is totally different.

What is your method to update the device tree?

I delete the hotplug entry, and change the reference to the dp dtsi

e.g, change this line
#include “tegra234-dcb-p3767-0000-hdmi.dtsi”
for this line
#include “tegra234-dcb-p3767-0000-dp.dtsi”

and then convert back to dtb.

I edit the HDMI pinmux, in place, no file name changes, to match the DP pinmux settings, then save.

Linux_for_Tegra/bootloader/t186ref/BCT/tegra234-mb1-bct-pinmux-p3767-hdmi-a03.dtsi

I edit the GPIO pinmux, in place, no file name changes, to match the DP gpio settings, then save.

Linux_for_Tegra/bootloader/tegra234-mb1-bct-gpio-p3767-hdmi-a03.dtsi

I do not make any changes to p3509-a02+p3767-0000.conf because I did not change any file names.

Then recompile the sources and reflash the Orin NVMe using these commands

cd $JETSON_SOURCES

sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ O=$KERNEL_OUT clean
sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ O=$KERNEL_OUT mrproper
sudo ./nvbuild.sh -o $KERNEL_OUT
sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ ARCH=arm64 O=$KERNEL_OUT LOCALVERSION=-tegra INSTALL_MOD_PATH=$MODULES_OUT modules_install

cd /home/z/SSD/L4T-35.2.1-Orin/Linux_for_Tegra/
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/t186ref/cfg/flash_t234_qspi.xml” --showlogs --network usb0 p3509-a02+p3767-0000 nvme0n1p1

Hi,

Sorry, I really not sure about what you are doing. The step looks not 100% correct.

e.g, change this line
#include “tegra234-dcb-p3767-0000-hdmi.dtsi”
for this line
#include “tegra234-dcb-p3767-0000-dp.dtsi”
and then convert back to dtb.

I mean which file did you change this? Tell us the exact steps. I don’t care about what you changed in the content for now. Just want to know which file you are doing this change.

sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ O=$KERNEL_OUT clean
sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ O=$KERNEL_OUT mrproper
sudo ./nvbuild.sh -o $KERNEL_OUT
sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ ARCH=arm64 O=$KERNEL_OUT LOCALVERSION=-tegra INSTALL_MOD_PATH=$MODULES_OUT modules_install

You build the kenrel image but you didn’t replace it to anywhere. Which means you build it but you didn’t replace anything. The device still used the old configuration.

Thanks Wayne, more details on what I am doing as follows …

remove gpio hotplug from *Linux_for_tegra/kernel/dtb/tegra234-p3767-0000-p3509-a02.dtb after converting to dts, then convert back to dtb

change dcb file reference in this file, $JETSON_SOURCES/hardware/nvidia/platform/t23x/p3768/kernel-dts/tegra234-p3767-0000-p3509-a02.dts

change #include “tegra234-dcb-p3767-0000-hdmi.dtsi” to #include “tegra234-dcb-p3767-0000-dp.dtsi”

edit pinmux to match dp settings from pinmux spreadsheet

Linux_for_Tegra/bootloader/t186ref/BCT/tegra234-mb1-bct-pinmux-p3767-hdmi-a03.dtsi

and

Linux_for_Tegra/bootloader/tegra234-mb1-bct-gpio-p3767-hdmi-a03.dtsi

and save using same file names (eg …hdmi…)

no changes to Linux_for_tegra/p3509-a02+p3767-0000.conf

Re-compile Kernel with patches

cd $JETSON_SOURCES

sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ O=$KERNEL_OUT clean

sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ O=$KERNEL_OUT mrproper

sudo ./nvbuild.sh -o $KERNEL_OUT

Install the modules

sudo make -C $JETSON_SOURCES/kernel/kernel-5.10/ ARCH=arm64 O=$KERNEL_OUT LOCALVERSION=-tegra INSTALL_MOD_PATH=$MODULES_OUT modules_install

Flash the updated file system to Orin NX:

cd /home/z/SSD/L4T-35.2.1-Orin/Linux_for_Tegra/

sudo ./apply_binaries.sh

sudo ./tools/l4t_flash_prerequisites.sh

cd /home/z/SSD/L4T-35.2.1-Orin/Linux_for_Tegra/

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/t186ref/cfg/flash_t234_qspi.xml” --showlogs --network usb0 p3509-a02+p3767-0000 nvme0n1p1

Please let me know if anything is missing or in error so I can correct it and retry

Hi,

I am really confused about what you are doing. Let me point out my question in each step you are doing…

remove gpio hotplug from *Linux_for_tegra/kernel/dtb/tegra234-p3767-0000-p3509-a02.dtb after converting to dts, then convert back to dtb

Ok. This sounds good.

change dcb file reference in this file, $JETSON_SOURCES/hardware/nvidia/platform/t23x/p3768/kernel-dts/tegra234-p3767-0000-p3509-a02.dts

Why? Why did you do this after your first step? Then what is the purpose of doing first step? I mean how you changed the DCB is correct. But this way didn’t change anything to the finalized dtb.

For example, you created a binary dtb in step 1. Let’s call it dtb1. You modify a source code then, and run nvbuild.sh again. You created a dtb2.

But turns out this dtb2 is totally not same as dtb1. The flash step will only flash dtb1 to your board. dtb2 is totally useless here.

Generally, you should just pick one method to apply the change. Modify everything when converting dtb back to dts and again back to dtb or all use the source code file and build out a dtb which you should need to convert it back to dts anymore.

Same to your kernel image. The dmesg tells me you didn’t use any of the kernel built by yourself. It is still the NVIDIA build machine ID. You didn’t put your new kernel to gets flashed.

Thanks Wayne,

I explained the two steps for editing dtb separately, but both are included before converting back from dts to dtb.

Is there a command for copying the kernel back to the file system, when I look at kernel_out folder, there are lots of folders, do they all need to be sync’d or just the kernel copied over. Also, the kernel customisation document does not describe this step, is it just assumed knowledge or is there more information elsewhere.